一、安装 #只需在主节点上 1.解压授权 sudo cp pig-0.16.0.tar.gz /usr/local cd /usr/local sudo tar xzf pig-0.16.0.tar.gz mv pig-0.16.0 pig sudo chown -R h:hadoop_group pig
2.配环境变量 sudo gedit ~/.bashrc ############################# export PIG_HOME=/usr/local/pig export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:$ANT_HOME/bin:$PIG_HOME/bin ############################# source ~/.bashrc
3.测试安装成功 pig --help 打印出正确的东西
二、四种运行模式 1.本地模式 #本地也可以tez 2.MapReduce模式:需要能访问一个Hadoop集群,并且需要装上HDFS。 #tez模式:Tez能够合并多个阶段的过程,直接无须落地,就能进行下一阶段的任务处理 #内存大时能让小猪飞起来
三、调用方式 Grunt shell方式:通过交互的方式,输入命令执行任务; Pig script方式:通过script脚本的方式来运行任务; 嵌入式方式:嵌入java源代码中,通过java调用来运行任务。
四、示例 1.grunt shell #local mode 查看所有用户id号 $mkdir pigtest $cp /etc/passwd ~/pigtest/ $cd ~/pigtest $pig -x local grunt> A = load 'passwd' using PigStorage(':'); #注意:等号前后都有空格,语句必须以分号结束。运行时可能出一堆INFO,INFO和WARN不要紧,只要不是ERROR grunt> B = foreach A generate $0 as id; grunt> dump B; #输出B。运行时会出一堆INFO。在末尾可以看到那些id


2.grunt shell#mapreduce mode start-all.sh #启动hdfs和yarn服务 pig -x mapreduce 继续上一个例子的操作,在dump的时候是要报错的。因为hdfs中没有配置。这个在官方started中有说明。 配置 hdfs位置 sudo gedit ~/.bashrc #################也可以不这样指定,而通过pig/conf中的配置 export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop ################# source ~/.bashrc $pig #此时,输入 pig 而完整打入就可以进入mapreduce模式。处在pigtest目录下 #重新输入上一个示例 报错 ERROR 2118: Input path does not exist: hdfs://master/user/h/passwd #注:h是我的用户名 只是因为hdfs中并没有passwd这个文件 重开一个终端 hadoop fs -mkdir /user hadoop fs -mkdir /user/h hadoop fs -put /etc/passwd /user/h/ #回到grunt终端,上滚到dump B; 回车 报错 INFO:Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server 这是因为在start-all.sh的时候只启动了hdfs和yarn服务而并没启动 hadoop 的history server 进程 重开一个终端,启动这个进程 $ mr-jobhistory-daemon.sh start historyserver #此时用jps可以看到这个进程了 回到grunt终端,上滚到dump B; 回车 等待15秒后,mapreduce过程完毕,输出和上一个例子一致的结果。
3.使用tez模式加速#未成功 参见 http://doc.okbase.net/qindongliang1922/archive/157359.html 附上guice3.0文件

见此贴 https://issues.apache.org/jira/browse/PIG-4843 和 http://qiita.com/kimutansk/items/35371169e3d7c5022959 #我未能解决,因为反正是要做spark,就不解决tez的问题了,而且tez引擎不够稳定。tez同样适用于hadoop和hive,若要安装tez,请前往 http://tez.apache.org/install.html http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.0.2/bk_installing_manually_book/content/rpm-chap-tez-1.html
4.嵌入java运行 嵌入式方式与运行于运行普通java类方式没有任何不同,如: java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal
5.写成(Batch Mode)脚本作为文件参数传入运行 $gedit test.pig ########################## A = load 'passwd' using PigStorage(':'); -- load the passwd file B = foreach A generate $0 as id; -- extract the user IDs store B into 'id.out'; -- write the results to a folder name id.out ##########################
$pig -x mapreduce test.pig
$hadoop fs -cat /user/h/id.out/*