我正在尝试在AWS EMR中运行Pig脚本和ElephantBird。我正在使用Hadoop 2.x来做到这一点,但我收到以下消息:
2014-09-09 14:53:11,001 INFO [main] org.apache.hadoop.mapred.MapTask:开始刷新地图输出 2014-09-09 14:53:11,029 INFO [main] org.apache.hadoop.io.compress.CodecPool:得到了全新的压缩器[.snappy] 2014-09-09 14:53:11,040 FATAL [main] org.apache.hadoop.mapred.YarnChild:运行child时出错:java.lang.IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.Counter,但是类是预期的 在com.twitter.elephantbird.pig.util.PigCounterHelper.incrCounter(PigCounterHelper.java:55) 在com.twitter.elephantbird.pig.load.LzoBaseLoadFunc.incrCounter(LzoBaseLoadFunc.java:70) 在com.twitter.elephantbird.pig.load.JsonLoader.getNext(JsonLoader.java:128) 在org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:211) at org.apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.nextKeyValue(MapTask.java:544) at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80) at org.apache.hadoop.mapreduce.lib.map.WrappedMapper $ Context.nextKeyValue(WrappedMapper.java:91) 在org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) 在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:775) 在org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) 在org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:167) at java.security.AccessController.doPrivileged(Native Method) 在javax.security.auth.Subject.doAs(Subject.java:415) 在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548) 在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
我尝试过使用不同版本的大象鸟(从3.0.9到4.0.x),但它们似乎都没有用。我将我的集群降级为Hadoop 1.x,我使用大象鸟没有问题。 有什么想法吗?