5.1 Apache Pig介绍
Pig是Apache基金会的一个项目,它是一个大型数据集分析的平台,使用过MapReduce的程序员都知道,面对复杂的数据集常常需要编写多个MapReduce过程方能达到目的。Pig正是为了解决这个问题而产生的,它包括两个部分:
*Pig Latin:描述数据流的文本语言;
*运行Pig Latin程序的执行环境:产生MapReduce程序的编译器。
Pig具有三个特性:
(1)易编程。Pig Latin程序由一系列的“操作”或“变换”构成,实际上通过“操作”将MapRecude程序变成数据流,使得实现简单的和并行要求高的数据分析任务变得非常容易,在它所提供的Pig Latin控制台上,可以用几行Pig Latin代码轻松完成TB级的数据集处理任务。
(2)自动优化。系统会对编写的Pig Latin代码自动进行优化,程序员就可以省去优化过程,不必关心效率问题,将大量的时间专注与分析语义方面。
(3)扩展性好。程序员可以按照自己的需求编写自定义函数。其载入(load)、存储(store)、过滤(filter)、连接(join)过程均可定制。
5.2 Pig的安装
5.2.1 Pig的下载Apache提供的Pig最新版本是0.12,它需要Hadoop集群的支持。 本教程使用的是0.12,下载地址为:http://mirror.esocc.com/apache/pig/stable/pig-0.12.1.tar.gz。
#wget http://mirror.esocc.com/apache/pig/stable/pig-0.12.1.tar.gz
将所下载的包解压,命令:
#tar -xvf pig-*-*-*.tar.gz
可以解压到您指定的位置,这里笔者指定的位置为:/usr/local/hadoop/pig。
5.2.2 Pig的配置
配置Pig的环境变量,命令:
#vi /etc/prifile
插入一行:
export PIG_HOME=Pig的安装路径
如:export PIG_HOME=/usr/local/hadoop/pig
export PATH=$PIG_HOME/bin:$PIG_HOME/conf:$PATH
注意保持原来的Hadoop、JAVA的相关配置。
使用source命令在当前bash环境下读取并执行profile中的命令,如下:
source /etc/profile
验证配置:
#pig -help
出现上图所示,表示配置成功。
5.3 Pig运行模式
Pig有两种运行模式:Local模式和MapReduce模式。Local模式只能访问本地系统文件,一般用于处理小规模的数据集,不需要Hadoop集群环境的支持。MapReduce模式运行于Hadoop集群环境上,Pig将Pig Latin程序编译为MapReduce作业执行。Pig程序的运行由三种方法:脚本文件、Grunt Shell和程序嵌入式。这三种方法均适用于Local模式和MapReduce模式,在Local模式与MapReduce模式下的执行几乎一样,只需说明采用的模式就行。
5.3.1 Local模式
(1)Grunt Shell
命令:$ pig -x local
(2)脚本文件
命令:$pig -x local xxx.pig
xxx.pig为对应的Pig脚本文件。这里要指定绝对路径为佳。
(3)程序嵌入式
将Pig命令嵌入到其他高级语言所写的文件中,直接运行程序,和原来运行普通程序的方式完全一样。如:
$javac -cp xxx.jar:. local
5.3.2 MapReduce模式
在MapReduce模式下,Pig会将查询翻译为相应的MapReduce作业,接着在Hadoop集群上运行,其本质还是MapReduce作业。所以,如果没有设置HADOOP_HOME环境变量,需要先设置,在/etc/profile中加入:
export HADOOP_HOME=/usr/local/hadoop1
验证:
$pig -x mapreduce
出现上面的提示表示配置成功。
(1)Grunt Shell
命令:$ pig -x mapreduce
示例:有一段网站的访问日志,用Pig计算出各IP的访问次数。
数据下载地址:http://download.csdn.net/detail/xiangchengguan/7567759
Pig shell:
Result:
如果要提取点击次数最高的前3个IP,则进行如下操作:
(2)脚本文件
命令:$pig -x mapreduce xxx.pig
xxx.pig为对应的Pig脚本文件。这里要指定绝对路径为佳。
(3)程序嵌入式
将Pig命令嵌入到其他高级语言所写的文件中,直接运行程序,和原来运行普通程序的方式完全一样。如:
$javac -cp xxx.jar:. mapreduce
老象提示:退出Pig的命令:quit
5.4 Pig Latin编辑器
对于Pig程序员来说,智能的编译器能够起到事半功倍的效果,PigPen就提供了一个Eclipse插件,其包含了Pig脚本编译器和示例生成器。具体请参阅http://wiki.apache.org/pig/PigPen