数据分析引擎Pig

涉及到的知识点:

  1. Pig的体系结构
  2. 安装和配置(本地模式、集群模式)
  3. Pig的常用命令
  4. Pig的数据模型 – 表结构(重要)
  5. 使用PigLatin语句分析数据
  6. Pig的自定义函数

Pig的体系结构

Pig是一个用来处理大规模数据集的平台,由Yahoo开发,贡献给Apache。它可以简化MapReduce任务的开发,支持PigLatin语句(类似SQL)。其本质是一个翻译器,将PigLatin语句转换为MapReduce任务来执行,并返回。

Pig0.17开始支持转换为Spark任务

下面是Pig的体系结构图:

Pig的体系结构

安装和配置

安装Pig

安装流程如下:

(1)解压安装包

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

(2)设置环境变量 vi ~/.bash_profile

PIG_HOME=/root/training/pig-0.17.0
export PIG_HOME

PATH=$PIG_HOME/bin:$PATH
export PATH

(3)使环境变量生效

source ~/.bash_profile

到这里就安装配置完成,下面我们来看一下它的两种模式。

本地模式

特点:操作的是Linux的文件

启动命令:pig -x local

当日志中出现以下这一句时,说明启动的是本地模式:

日志:Connecting to hadoop file system at: file:///

集群模式

特点:链接到HDFS上
集群模式需要设置一个环境变量( ~/.bash_profile文件): PIG_CLASSPATH —-> Hadoop的配置文件所在的目录(注意这里的名字必须叫:PIG_CLASSPATH

PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop

export PIG_CLASSPATH

配置完成重新生效配置文件source ~/.bash_profile,然后输入pig命令即可,如果出现如下日志说明集群模式配置成功:

日志: Connecting to hadoop file system at: hdfs://bigdata113:9000

Pig的常用命令

pig的常用命令其实和我们hdfs的差不多,具体如下:

​ ls、cd、cat、mkdir、pwd
copyFromLocal(上传)、copyToLocal(下载)
sh: 调用操作系统的命令(即linux下的命令)
register、define —–> 部署pig的自定义函数的jar包

我们这里随便的用几个,其它的自己再去研究:

Pig常用命令演示

register和define在后面讲到自定义函数时会说明。

Pig的数据模型

Pig的数据模型其实就是表,不过和普通的表结构不同:

Pig的数据模型

PigLatin语句的介绍和使用

在开始介绍说明之前,我们需要启动Yarn的HistoryServer(因为Pig会使用到):

mr-jobhistory-daemon.sh start historyserver

可以通过下列网页地址访问historyserver:

URL: http://192.168.171.113:19888/jobhistory

现在开始正式介绍PigLatin。

常见的PigLatin语句

(1)load 加载数据到表(bag)
(2)foreach 相当于循环,对bag中每一个行tuple进行处理
(3)filter 过滤、相当于where
(4)group by 分组
(5)order by 排序
(6)join 链接(相当于多表查询)
(7)generate 提取列(查询指定列)
(8)union、intersect 集合运算
(9)输出:dump 输出到屏幕 –> 只有9会触发计算,其它的都不会
store 输出到文件

注意:

  • PigLatin语句跟Spark中算子/方法非常像

  • PigLatin有些会触发计算,有些不会

    类似Spark RDD 算子(方法):

    ​ Transformation方法(算子) —–> 不会触发计算

    ​ Action方法(算子) ——> 会触发Spark的计算

PigLatin语句的使用

(1)创建员工表 emp

 emp = load '/scott/emp.csv';        

查看表结构:

describe emp;

结果如下:

pig创建emp表1

原因是我们并没有指定表结构,(2)中会使用表结构来创建emp表。

(2)创建表,指定schema(结构)

emp = load ‘/scott/emp.csv’ as(empno,ename,job,mgr,hiredate,sal,comm,deptno);

注意:

  • 默认的列的类型:bytearray
  • 默认的分隔符:制表符

    基于以上两点,我们创建emp表的最终版如下:

emp = load ‘/scott/emp.csv’ using PigStorage(‘,’) as(empno:int,ename:chararray,job:chararray,mgr:int,hiredate:chararray,sal:int,comm:int,deptno:int);

查询的结果如下:

pig创建emp表2和3
表结构已经清楚了,我们通过dump emp;来查看一下数据:

pig创建emp成功,查询数据

顺便创建一下部门表,后面多表查询的示例会用到:

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

(3)查询员工信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值