run pig 0.7.0 error:ERROR 2998:未处理的内部错误

时间:2013-05-29 02:43:34

标签: hadoop compilation apache-pig

我必须将猪连接到一个hadoop,它从Hadoop 0.20.0稍微改变一下。我选择猪0.7.0,然后设置PIG_CLASSPATH

export PIG_CLASSPATH=$HADOOP_HOME/conf

当我跑猪时,报告错误如下:

ERROR org.apache.pig.Main - ERROR 2999: Unexpected internal error. Failed to create DataStorage

所以,我在$ HADOOP_HOME中复制hadoop-core.jar来覆盖$ PIG_HOME / lib中的hadoop20.jar,然后是“ant”。现在,我可以运行猪,但是当我使用dumpstore时,又出现了另一个错误:

Pig Stack Trace
---------------
ERROR 2998: Unhandled internal error. org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.setOutputPath(Lorg/apache/hadoop/mapreduce/Job;Lorg/apache/    hadoop/fs/Path;)V

java.lang.NoSuchMethodError: org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.setOutputPath(Lorg/apache/hadoop/mapreduce/Job;Lorg/apache/hadoop/fs/   Path;)V
    at org.apache.pig.builtin.BinStorage.setStoreLocation(BinStorage.java:369)
    ...
    at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:75)
    at org.apache.pig.Main.main(Main.java:357)
================================================================================

有没有人遇到过这个错误,或者我的编译方式不对? 感谢。

3 个答案:

答案 0 :(得分:0)

有一个关于此问题in the Pig FAQ的部分,它可以让您知道出了什么问题。以下是本页的摘要:

当您连接除标准Apache hadoop 20.2版本之外的hadoop集群时,通常会发生这种情况。 Pig捆绑标准hadoop 20.2罐释放。如果要连接到其他版本的hadoop集群,则需要使用兼容的jar替换捆绑的hadoop 20.2 jar。你可以尝试:

  1. 做“蚂蚁”
  2. 从你的hadoop安装中复制hadoop jar以覆盖ivy / lib / Pig / hadoop-core-0.20.2.jar和ivy / lib / Pig / hadoop-test-0.20.2.jar
  3. 再次“蚂蚁”
  4. cp pig.jar覆盖猪 - * - core.jar
  5. 其他一些技巧也是可能的。您可以使用“bin / pig -secretDebugCmd”来检查Pig的命令行。确保使用正确版本的hadoop。

    正如本常见问题解答部分所指出的,如果没有任何效果,我建议在0.9.1之后升级到最近版本的Pig,Pig 0.7有点旧。

答案 1 :(得分:0)

Pig(核心)jar有一个捆绑的 Hadoop依赖项,它可能与您要使用的版本不同。如果您有一个旧的Pig版本(<0.9),您可以选择构建一个没有 Hadoop的jar

cd $PIG_HOME
ant jar-withouthadoop
cp $PIG_HOME/build/pig-x.x.x-dev-withouthadoop.jar $PIG_HOME

Then start Pig:
cd $PIG_HOME/bin
export PIG_CLASSPATH=$HADOOP_HOME/hadoop-core-x.x.x.jar:$HADOOP_HOME/lib/*:$HADOOP_HOME/conf:$PIG_HOME/pig-x.x.x-dev-withouthadoop.jar; ./pig


较新的Pig版本包含prebuilt withouthadoop版本(请参阅this票证),因此您可以跳过构建过程。此外,当你运行猪时,它将从PIG_HOME而不是捆绑版本中获取withouthadoop jar,因此你不需要添加withouthadoop.jar 到PIG_CLASSPATH(如果您从$PIG_HOME/bin运行Pig)

..回到你的问题:
Hadoop 0.20及其修改后的变体(0.20-append?)即使使用最新的Pig分配(0.11.1)也能正常工作:
您只需要执行以下操作:

unpack Pig 0.11.1
cd $PIG_HOME/bin
export PIG_CLASSPATH=$HADOOP_HOME/hadoop-core-x.x.jar:$HADOOP_HOME/lib/*:$HADOOP_HOME/conf; ./pig

如果你仍然得到“Failed to create DataStorage”,那就像Charles Menguy所建议的那样以-secretDebugCmd开始养猪,这样你就可以了 可以看出Pig是否获得了正确的Hadoop版本..等等。

答案 2 :(得分:0)

您还记得从start-all.sh运行/usr/local/bin吗?我遇到了同样的问题,我基本上回顾了配置Hadoop本身的步骤。我现在可以使用猪了。