第11章Pig

安装和运行Pig

Pig是作为一个客户端程序运行的,即使你想在Hadoop集群上面运行它,你也不需要安装额外的东西。Pig启动jobs,与HDFS(或其它的Hadoop文件系统)交流,这些都是在你的机器上进行的。

Pig的安装很简单,你需要java 6windows 上还需要Cygwin)。

http://hadoop.apache.org/pig/releases.html,下载稳定版本,解压到你电脑合适的地方,

% tar xzf pig-x.y.z.tar.gz

Pig的二进制目录加到你的命令行中是非常方便的,例如:

% export PIG_INSTALL=/home/tom/pig-x.y.z

% export PATH=$PATH:$PIG_INSTALL/bin

你也需要设置JAVA_HOME 环境变量指出Java安装位置。输入pig-help命令查看帮助。

运行模式

Pig有两种运行模式:本地模式和Mapreduce模式。

本地模式

在本地模式,Pig在独立的JVM中运行,并且访问本地文件系统。这种模式只适应于在测试Pig的时候,小的数据集。

这种模式的运行是设置-x或者-exectype选项。如下设置:

% pig -x local

grunt>

这样开启GruntPig的交互shell,稍后会详细讲解Grunt

Mapreduce模式

Mapreduce模式,Pig把查询转换成Mapreduce jobs并且把它们运行在Hadoop集群上面。集群可能是伪分布式的,或者完全分布式的。Mapreduce模式是你在想要在大数据集上运行Pig时候用到的。

为了使用Mapreduce模式,首先,你需要检查你下载的Pig的版本与你正在使用的Hadoop版本是否兼容。Pig版本只与Hadoop的一小部分版本冲突,这在版本页面上有说明。

例如,Pig0.30.4Hadoop0.18.x版本冲突,然而Pig0.50.7Hadoop0.20x兼容。

如果一个Pig版本支持多种Hadoop版本,你可以使用环境变量PIG_HADOOP_VERSION来告诉Pig,它将要连接的Hadoop的版本。例如,下面的设置就是Pig使用任何0.18.x版本的Hadoop

% export PIG_HADOOP_VERSION=18

下一步,你需要在集群的namenodejobtracker上指出Pig。如果你已经在Hadoop文件中指定了fs.default.name 和 mapred.job.tracker,你可以简单的增加Hadoop的配置文件到Pigclasspath中:

% export PIG_CLASSPATH=$HADOOP_INSTALL/conf/

或者,你可以把这两个属性都放在Pigconf目录的pig.properties文件中,下面是伪分布式安装的例子:

fs.default.name=hdfs://localhost/

mapred.job.tracker=localhost:8021

一旦,你配置Pig连接Hadoop集群,你就可以启动Pig了,给mapreduce设置-x选项,或者干脆完全省略它就像Mapreduce的节点的默认设置一样:

% pig

10/07/16 16:27:37 INFO pig.Main: Logging error messages to: /Users/tom/dev/pig-0

.7.0/pig_1279294057867.log

2010-07-16 16:27:38,243 [main] INFO org.apache.pig.backend.hadoop.executionengi

ne.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost/

2010-07-16 16:27:38,741 [main] INFO org.apache.pig.backend.hadoop.executionengi

ne.HExecutionEngine - Connecting to map-reduce job tracker at: localhost:8021

grunt>

从输出结果你可以看出,Pig打印报告了它已经连接到的文件系统和jobtracker

运行Pig程序

有三种运行Pig程序的方法,它们都能够工作在本地和Mapreduce模式下。

Script

Pig可以运行一个包含Pig命令的script文件。例如,Pig script.pig 命令,会运行本地script.pig中的命令。或者,如果是很简短的script命令,你可以直接使用-e选项来运行指定的命令。

Grunt

Grunt是一个运行Pig命令的交互的shell。当没有为Pig指定运行的文件的时候,并且没有使用-e选项的时候,Grunt开始运行。从Grunt运行和执行的内部里也可以运行Pig scripts

内嵌

你可以从Java中运行Pig程序,就像你使用JDBCJava中,运行SQL程序一样。在Pigwiki页面上有更多的细节,http://wiki.apache.org/pig/EmbeddedPig

Grunt

Grunt有行编辑设施,就像GNU Readline一样(在bash shell中使用,并且在许多其它的命令行程序中使用。)例如,Ctrl+E组合键会使光标移到行尾。Grunt也提供命令历史,你可以重新使用历史中的命令,使用Ctrl-P Ctrl-N命令,或者向上箭头,向下箭头。

另一个方便的特性是,Grunt的自动补全机制,这种机制会在你按下Tab键的时候,尽力去完成Pig Latin关键字和函数。例如,看看下面的未完成的命令:

grunt> a = foreach b ge

如果你此时按下Tab键,就会自动补全

grunt> a = foreach b generate

你可以通过创建一个名叫autocomplete 的文件,并把它放在Pigclasspath中,来自定义补全token(例如在Pig的安装目录的conf目录下),或者在你引用Grunt的目录中。

注:历史命令存储在一个你的home目录下的叫做 .pig_history的文件中。

文件应该每行都有一个token,并且tokens一定不能包含空格。匹配时大小写敏感的。增加常用的文件路径,对你以后的额操作是非常方便的(因为Pig不执行文件名的自动补全),或者是增加任何你自定义的函数。

你可以使用help命令查看命令列表。当你完成Grunt会话的时候,使用quit命令退出。

Pig Latin 编辑器

PigPen是一个Eclipse插件,它提供一个开发Pig程序的环境。它包括一个Pig script文本编辑器,一个例子生成器(等同于demo命令),并且有一个在Hadoop集群上面运行script的按钮。同时,也有一个操作图表的界面,这个界面以图表的形式显示了script,这是为了使数据流可视化。查看完全的安装和使用说明,请参考Pig wiki http://wiki.apache.org/pig/PigPen.

同样,对于其它的编辑器来说,也有语法高亮提示,包括VimText-Mate编辑器。详见wiki页面。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值