Pig 是由Yahoo 公司开源,是一种操作大规模数据集的脚本语言,它为大型数据集的处理提供了更高层的抽象。Pig 构建在HDFS和Mapreduce 之上,能将数据处理翻译成多个Map 和Reduce 函数,从某种程度上将程序猿从具体编程中解放出来。
Pig 简介
pig 架构包括两部分:用于描述数据流的称为 Pig Latin 的编程语言,以及用于运行的Pig Latin 程序执行环境。执行环境分为JVM中的本地执行环境和Hadoop 集群分布式执行环境。
Pig Latin 程序由一系列operation 和transformation 组成。每个操作或变换对输入进行数据处理,并产生输出结果。从整体上来看,这些操作整体上描述了一个数据流。Pig 执行环境把数据流翻译为可执行的内部表示并运行它。在Pig 内部,这些变换操作被转换成一系列的MapReduce 作业。但程序猿在大多数情况下并不需要知道这些转换是如何进行的。
Mapreduce 的一个缺点是开发周期长,而Pig 的长处是很少用Pig Latin 代码就能够处理TB 级数据。Pig 的另外一个更有用的特征是它支持在输入数据的一个代表性的子集上试运行。这样,用户可以在处理整个数据集前检查执行时是否会有错误。
Pig 并不适合所有的数据处理任务,和Mapreduce 一样,它为数据批处理而设计得。如果只想查询大数据集中的一小部分数据,Pig 的表现不会很好,原因在于Pig 扫描整个数据集或者其中绝大部分
Pig 的安装与运行
Pig 有两种运行模式:Local 模式和Mapreduce 模式。其中本地模式Pig 运行只设计到单独的一台计算机,而在Mapreduce 模式下,Pig 需要访问Hadoop 集群,需要使用HDFS 文件系统。
Pig 的调用方式包括Grunt shell 方式和Pig script 方式两种。其中:Grant shell 方式是通过交互方式,输入命令执行任务;Pig script 脚本通过script 脚本方式来运行任务。
Pig的运行方法
脚本 Grunt 嵌入式
Grunt
自动补全机制 Autocomplete文件 Eclipse插件PigPen
Grunt shell命令
1.安装前的准备
下载并解压pig安装包( http://pig.apache.org/)
把需要安装的.tar.gz 文件上传到一个指定的目录,在主节点上hadoop1 上解压缩安装包
接着把解压后的目录整体复制到一个新的指定目录下,为了后面好管理
2.使用root 权限编辑/etc/profile
使用source /etc/profile 使生效
复制主机hadoop2 ,hadoop3 节点上的profile 文件通过scp
scp /etc/profile root@hadoop2:/etc hadoop3 类似的
使用hadoop 用户重新登录hadoop1,hadoop2,hadoop3,以使得变量在三台主机上对hadoop拥护生效。
3.使用本地模式验证安装是否成功
Pig 本地模式运行在JVM中,仅访问本地系统,该模式适合于处理小规模数据集或者Pig 试用 。执行类型可用-x 或者
-exectype 选项进行设置。
输入 pig -x local 使用本地模式运行,出现grunt > 提示符,表明已安装
重新登录使环境变量生效
用set命令检查环境变量
4.配置Pig 的Mapreduce 模式
在Mapreduce 模式下,pig 会将查询翻译为Mapreduce 作业,然后在Hadoop 集群上执行。如果Pig 处理的是大规模数据
集,就应该使用Mapreduce 模式。
在主节点上使用root用户编辑/etc/profile 文件,增加PIG_CLASSPATH 环境变量
export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop 编辑完成之后,重新登录以使得设置生效
修改hosts文件
5. 验证pig 的Mapreduce 模式
直接输入pig 命令,出现grunt> 提示即可(必须确保hadoop 是启动的
jps 查看各节点——> pig
pig 提示已经连接到hdfs://hadoop1:9000,表示Mapreduce 运行模式已经启动
6.修改Pig 的日志文件目录
Pig 日志创建默认认为当前目录,这样不方便进行分析和管理,一般都需要进行修改,首先在$PIG_HOME 目录下新创建logs 文件夹
cd $PIG_HOME
mkdir logs
接着修改$PIG_HOME/conf/pig.properties 配置文件
Pig 常用命令示例
HDFS 能用的命令均可以在Pig 中使用
grunt> ls /
hadoop fs -ls /
以上两者查看得到的东西相同
mkdir input1
cat
Pig Latin 简介
只介绍常用的
1.LOAD
把本地文件系统或者HDFS 文件系统中文件加载到Pig 中的关系中
A=LOAD '/usr/aaa.txt' ;把文件系统中的/usr下的文件aaa.txt 加载到Pig 关系中
2.FOREACH
对某个关系进行迭代,生成一个数据转换
C= FOREACH B GENERATE group,COUNT(A.IP);逐行扫描关系B中各行,并且输出其分组,按照IP 进行计算总数,将此结
果赋予关系给C。
3.FILTER
过滤行,基于某个条件从关系中选择一组元组
A= FILTER A BY(IP == '192.168.1.2') ;把关系A中符合条件的信息过滤出来
4.DUMP
将结果显示到屏幕
如DUMP C;把关系C中信息显示到屏幕上
5.STORE
将结果保存到文件系统中
STORE C INTO '/usr/result'; 把关系C中信息存储到文件系统的/usr/result目录下
6.GROUP
将数据分组为一个或者多个关系
B= GROUP A BY IP ;把关系A中信息以IP 分组然后存在B关系中
7.JOIN
连接两个或者两个以上的关系(内部或者外部关联)
关系B(name,age):(zhang,25)
关系C(name,age):(wang,23)
(zhang,23);
则D=JOIN B BY (name,25,zhang,23)
8.ORDER
根据一个或多个字段对关系进行排序
A= ORDER A BY ip desc;把关系A中内容根据ip 降序排序
9.DISTINCT
B=DISTINCT B;把关系B重复内容去掉