1,使用CDH的hadoop里面有对应的组件Pig,但版本较低,所以放弃使用了,直接下载 Apache Pig0.15最新的版本(支持Tez,比Hive更容易集成) 下载地址:http://archive.apache.org/dist/pig/pig-0.15.0/pig-0.15.0.tar.gz 直接下载二进制包即可 2,配置Pig的环境变量如下: #Pig export PIG_HOME=/ROOT/server/pig export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop export PATH=/ROOT/server/pig/bin:$PATH 3,直接执行pig命令,启动程序,会报如下异常 [main]ERROR org.apache.pig.Main -ERROR 2998:Unhandled internal error.Found interface jline.Terminal,but class was expected 原因是由于jline这个包和hadoop的yarn/lib下面的jline的包不一致造成的。 可参考:https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started里面的解释 解决方法: 删掉hadoop的yarn/lib下的那个jline版本较高的包,将pig/lib下的jline-1.0.jar包拷贝到yarn/lib下,然后 重新执行pig命令,可正常启动。
然后执行一个pig脚本写的MapReduce作业,发现会报如下异常,但是MR作业是跑成功的:
原因是,Hadoop的jobhistroy进程没有启动。 解决办法: 执行sbin/mr-jobhistory-daemon.sh start historyserver 命令,启动日志守护进程 然后再次跑pig作业,一切正常 !