我刚刚升级了hortonworkshdp2.1上的pig0.12.0到0.13.0版本
当我试图在我的脚本中使用xmloader时,我得到了下面的错误,尽管我已经注册了piggybank。
脚本:
A = load 'EPAXMLDownload.xml' using org.apache.pig.piggybank.storage.XMLLoader('Document') as (x:chararray);
错误:
dump A
2014-08-10 23:08:56,494 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - io.bytes.per.checksum is deprecated. Instead, use dfs.bytes-per-checksum
2014-08-10 23:08:56,496 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS
2014-08-10 23:08:56,651 [main] INFO org.apache.pig.tools.pigstats.ScriptState - Pig features used in the script: UNKNOWN
2014-08-10 23:08:56,727 [main] INFO org.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer - {RULES_ENABLED=[AddForEach, ColumnMapKeyPrune, GroupByConstParallelSetter, LimitOptimizer, LoadTypeCastInserter, MergeFilter, MergeForEach, PartitionFilterOptimizer, PushDownForEachFlatten, PushUpFilter, SplitFilter, StreamTypeCastInserter], RULES_DISABLED=[FilterLogicExpressionSimplifier]}
2014-08-10 23:08:57,191 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - io.bytes.per.checksum is deprecated. Instead, use dfs.bytes-per-checksum
2014-08-10 23:08:57,199 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS
2014-08-10 23:08:57,214 [main] INFO org.apache.hadoop.mapreduce.lib.input.FileInputFormat - Total input paths to process : 1
2014-08-10 23:08:57,223 [main] INFO org.apache.pig.backend.hadoop.executionengine.util.MapRedUtil - Total input paths to process : 1
2014-08-10 23:08:57,247 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Unhandled internal error. Found interface org.apache.hadoop.mapreduce.TaskAttemptContext, but class was expected
4条答案
按热度按时间holgip5t1#
甚至我在hadoop版本2.2.0中也遇到了同样的错误。解决方法是,我们必须使用gruntshell注册以下jar文件。
下面我要粘贴的路径将基于hadoop-2.2.0版本。请根据您的版本查找jar。
/hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar
/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar
使用register命令,我们必须将这些jar和piggybank一起注册。
现在运行pig脚本/命令,如果遇到任何问题,请还原。
ryoqjall2#
有时你可能会遇到问题后安装Pig一样below:-
许多博客建议您通过执行以下命令来重新编译pig:
或者通过执行以下步骤重新编译piggybank.jar
但这并不能解决你的问题。这里的实际原因与hcatalog有关。尝试更新它!!。在我的例子中,我使用的是hive0.13和pig.0.13。我用的是hive0.13提供的hcatalog。
然后我将pig更新为0.15,并使用单独的hive-hcatalog-0.13.0.2.1.1.0-385库jar。问题解决了。。。。
因为后来我发现不是Pig制造了问题,而是Hivehcatalog库。希望这能有所帮助。
e4yzc0pl3#
更多细节,因为其他答案对我不适用:
git克隆Piggit镜像https://github.com/apache/pig
将cd放入克隆目录
如果您以前已经在这个目录中构建了pig,那么应该运行一个干净的
为hadoop 2构建pig
cd放入储液罐
同样,如果您以前构建过piggybank,请确保清除旧的构建文件
为hadoop2构建piggybank(相同的命令,不同的目录)
如果不先构建pig,piggybank在编译时会抛出一堆“symbol not found”异常。另外,由于我之前为hadoop1构建了pig(意外),没有运行clean,所以我遇到了运行时错误。
46qrfjad4#
注意,pig决定hadoop版本取决于您设置hadoop\u home->v1 hadoop\u prefix->v2的上下文变量
如果使用hadoop2,则需要重新编译piggybank(默认情况下是为hadoop1编译的)
转到pig/contrib/piggybank/java
$ant-dhadopversion=23个
然后将该jar复制到pig/lib/piggybank.jar上