1. pig简介
2. 安装pig
3. 实战pig
4. 深入pig
5. 参考资料及代码下载
<1>. Pig简介
pig是Hadoop项目的一个拓展项目, 用以简化hadoop编程(简化的程度超乎想象啊),并且提供一个更高层次抽象的数据处理能力,同时能够保持hadoop的简单和可靠性。
<2>. 安装pig
2.1 下载pig:[点击下载]pig安装包
2.2 解压下载完成的pig安装包:
xuqiang@Ubuntu:~/hadoop/src/pig$ tar zxvf pig-0.8.1.tar.gz
2.3 设置环境变量
xuqiang@ubuntu:~$ vim .bashrc
export PATH=~/hadoop/src/pig/pig-0.8.1/bin/:$PATH
export PIG_HOME=~/hadoop/src/pig/pig-0.8.1/
export HADOOP_CONF_DIR=~/hadoop/src/hadoop-0.21.0/conf
export PIG_CLASSPATH=~/hadoop/src/hadoop-0.21.0/conf
这里需要说明的是pig是能够运行在两种模式下:local模式和mapreduce模式,变量HADOOP_CONF_DIR主要是为了在mapreduce模式下使用。
为了使新设置的环境变量生效,使用如下命令:
xuqiang@ubuntu:~$ source .bash_profile
测试一下pig的安装是否正确:
xuqiang@ubuntu:~$ pig -x local
2011-06-05 17:48:49,480 [main] INFO org.apache.pig.Main - Logging error messages to: /home/xuqiang/pig_1307321329471.log
2011-06-05 17:48:49,926 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:///
grunt>
此时表明pig已经正确安装。
<3>. Pig实战
在pig下载的安装包,解压完成了之后,有一个tutorial目录,我们使用里面的数据来开始pig学习。如果tutorial目录下没有存在pigtutorial.tar.gz文件的话,那么需要使用ant来编译出这个文件:
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1$ ant
这时ant将会下载依赖的jar的文件,同时将编译出对应版本的pig jar文件。然后进入tutorial目录,执行ant命令:
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1$ cd tutorial/
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1/tutorial$ ant
这时将生成pigtutorial.tar.gz文件,解压该文件形成pigtmp的文件夹。该文件夹结构:
.
|-- excite-small.log
|-- excite.log.bz2
|-- pig.jar
|-- script1-hadoop.pig
|-- script1-local.pig
|-- script2-hadoop.pig
|-- script2-local.pig
`-- tutorial.jar
1 directory, 9 files
我们下面将主要分析excite-small.log文件,该文件的数据结构如下:
UserIDTimeStampSearchQuery
我们首先将excite-small.log加载到一个变量(也称之为alias)中,我们将使用该变量来表示这个数据集:
grunt> log = load 'excite-small.log' as (user, time, query);
注意的是这时pig并没有运行该命令,仅仅是解析了该命令,只有到使用dump命令或者是store命令时pig才会真正执行该命令。dump命令将打印出这个变量的内容,store命令将变量所代表的内容保存到一个文件中。
这时如果想要查看该log的结构:
grunt> describe log;
log: {user: bytearray,time: bytearray,query: bytearray}
这是如果我们想要查看该log文件的前4行的话:
grunt> lmt = limit log 4;
grunt> dump lmt;
这时将打印出log文件的前四行数据。