你好,游客 登录 注册 搜索
背景:
阅读新闻

Pig实战

[日期:2013-02-16] 来源:Linux社区  作者:xuqiang [字体: ]

1. pig简介

2. 安装pig

3. 实战pig

4. 深入pig

5. 参考资料及代码下载

<1>. Pig简介

pigHadoop项目的一个拓展项目, 用以简化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文件的前四行数据。

linux
相关资讯       pig 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款