千家信息网

Pig安装讲解

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Pig 简介:Pig 是 Apache 项目的一个子项目,Pig 提供了一个支持大规模数据分析的平台,Pig 突出的特点就是它的结构经得起大量并行任务的检验,使得它能够处理大规模数据集Pig 特点:P
千家信息网最后更新 2026年11月01日Pig安装讲解

Pig 简介:

Pig 是 Apache 项目的一个子项目,Pig 提供了一个支持大规模数据分析的平台,Pig 突出的特点就是它的结构经得起大量并行任务的检验,使得它能够处理大规模数据集


Pig 特点:

Pig 可简化 MapReduce 任务的开发

Pig 可以看做 Hadoop 的客户端软件,可以连接到 Hadoop 集群进行数据分析工作

Pig 方便不熟悉 Java 的用户,使用一种较为简便的类似 SQL 的面向数据流的语言 PigLatin 语言进行数据处理

PigLatin 可以进行排序,过滤,求和,分组,关联等常用操作,还可以自定义函数,这是面向数据分析处理的轻量级脚本语言

Pig 可以看做是 PigLatin 到 MapReduce 的映射器

当Pig在MapReduce模式运行时,它将访问一个Hadoop集群和HDFS的安装位置。这时Pig将自动地对这个集群进行分配和回收


Pig 的数据模式: relation(关系), bag(包), tuple(元组), field(字段,列)

relation(关系):具有相同字段(列)的 tuple 称为关系

bag(包):与关系型数据库中的表类似,包含多个 tuple,

tuple(元组):相当于关系型数据库中的行,与关系型数据库不同的是,tuple 不要求每一行具有相同的结构

field(字段,列):与关系型数据库中的列相似,不同的是,field 中可以嵌套表,而关系型 数据库中的列中不可以嵌套表




Pig 的安装和配置:

安装: 解压安装包并添加环境变量即可

tar -zxvf pig-0.17.0.tar.gz -C ~/app


vim ~/.bash_profix

PIG_HOME= PIG_HOME=/app/pig-0.17.0

export PIG_HOME

PATH=$PIG_HOME/bin:$PATH

export PATH

Pig 有两种运行模式:本地模式: 操作 Linux 文件

启动方式: pig -x local

集群模式: 链接到 HDFS

PIG_CLASSPATH=/app/hadoop-2.7.3/etc/hadoop

export PIG_CLASSPATH

启动命令: pig


Pig 操作 Linux 命令:

sh 后面跟linux 命令可以直接对 linux 中的文件进行操作

ls cd cat mkdir pwd 操作 HDFS

copyFromLocal 从linux 系统 copy 文件到 HDFS

copyToLocal 从 HDFS copy 文件到 linux 系统

register define 使用 Pig 自定义函数


PigLatin 语句:

---> 需要使用 Hadoop 的 HistoryServer

mr-jobhistory-daemon.sh start historyserver

地址: http://192.168.10.100:19888/jobhistory

---> 常用的 PigLatin 语句

load 加载数据到 bag (表)

foreach 相当于循环, 对 bag 每一条数据遍历

filter 相当于 where

group by 分组

join 连接

generate 提取列

union/intersect 集合运算

输出:dump 直接打印到屏幕上

· store 输出到 HDFS 上


举例: 7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30

加载员工数据到bag(表)

emp = load '/input/table/emp.csv' using PigStorage(',')

as (empno:int, ename:chararray, job:chararray, mgr:int, hiredate:chararray, sal:int, comm:int, deptno:int );

dept = load '/scott/dept.csv' using PigStorage(',') as(deptno:int,dname:chararray,loc:chararray);

查看表结构: describe emp;


查询员工信息:员工号, 姓名, 薪水

SQL语句: select empno, ename, sal from emp ;

PL 语句: emp = foreach emp generate empno, ename, sal;

输出到屏幕上: dump emp;


查询员工信息,按照月薪排序:

SQL 语句:select * from emp order by sal ;

PL 语句:emp = order emp by sal ;


分组:求每个部门工资最高值

SQL语句: select deptno, max(sql) from emp group by deptno ;

PL 语句:需要分两部

1. 分组

emp_group = group emp by deptno ;

2. 求每个部门最大值

max_sal = foreach emp_group generate group, MAX(emp.sal)


查询 10 号部门的员工:

SQL 语句: select * from emp where deptno = 10 ;

PL 语句: deptno_10 = filter emp by deptno==10 ;


多表查询:员工姓名, 部门名称

SQL 语句: select e.ename d.dname from emp e, dept d where e.ename=d.dname;

PL 语句: 分两部实现

1. 将两个表中的两个字段提取出来放入一张表中

newtable = join dept by deptno, emp by ename

2. 遍历提取出来的表,将 员工表的员工姓名, 部门表的部门名称提取出来

table = foreach newtable generate dept:: dname, emp:: ename


集合运算: 关系型数据库 Oracle : 参与集合运算的各个集合必须列数相同且类型一致

查询 10 号 和 20 号部门的员工

SQL 语句: select * from emp where deptno=10

union select * from emp where deptno=20;

PL 语句:emp10 = filter emp by deptno==10;

emp20 = filter dept by deptno==20;

emp10_20 = union emp10, emp20;


使用PL实现WordCount:

① 加载数据

mydata = load '/data/data.txt' as (line:chararray);


② 将字符串分割成单词

words = foreach mydata generate flatten(TOKENIZE(line)) as word;


③ 对单词进行分组

grpd = group words by word;


④ 统计每组中单词数量

cntd = foreach grpd generate group,COUNT(words);


⑤ 打印结果

dump cntd;


数据 语句 员工 部门 数据库 模式 分组 查询 字段 文件 集群 相同 单词 命令 姓名 数据分析 结构 语言 分析 处理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 湖北九亚互联网络科技有限公司 互联网科技视频 互联网 科技服务平台 四个字互联网科技公司取名 华脉科技工业互联网产品 哈尔滨秒房互联网科技有限公司 广州恒生互联网科技有限 武汉健翔互联网络科技有限公司 昊天互联网科技有限公司 知域互联网科技有限公司大骗子 互联网科技大奖都有哪些公司 长沙茂晟互联网科技有限公司 伊宁互联网科技做什么的 科技互联网海报 上海科技产业互联网平台 黑云互联网科技有限公司 风投北京互联网科技 互联网科技接地气 科技互联网专业工作会议发言稿 互联网科技保险 互联网最新的科技 南京欣网互联网科技 伴你行互联网科技有限公司 居家互联网科技有限公司 互联网企业和科技型企业 厦门千工互联网科技有限公司 爱医互联网络科技 中国互联网有什么科技 艺电能源互联网科技有限公司招聘
0