Apache pig 象鸟清管器类型参考ClassNotFoundException

Apache pig 象鸟清管器类型参考ClassNotFoundException,apache-pig,protocol-buffers,elephantbird,Apache Pig,Protocol Buffers,Elephantbird,我正在尝试使用大象鸟4.1将协议缓冲区中编码的数据处理为其pig表示。相关清管器代码: REGISTER '/home/ubuntu/elephant-bird/core/target/elephant-bird-core-4.1-SNAPSHOT.jar'; REGISTER '/home/ubuntu/elephant-bird/pig/target/elephant-bird-pig-4.1-SNAPSHOT.jar'; REGISTER '/home/ubuntu/elephant-bi

我正在尝试使用大象鸟4.1将协议缓冲区中编码的数据处理为其pig表示。相关清管器代码:

REGISTER '/home/ubuntu/elephant-bird/core/target/elephant-bird-core-4.1-SNAPSHOT.jar';
REGISTER '/home/ubuntu/elephant-bird/pig/target/elephant-bird-pig-4.1-SNAPSHOT.jar';
REGISTER '/home/ubuntu/elephant-bird/hadoop-compat/target/elephant-bird-hadoop-compat-4.1-SNAPSHOT.jar';

REGISTER '/home/ubuntu/libraryContainingProto.jar';

DEFINE ProtobufBytesToTuple com.twitter.elephantbird.pig.piggybank.ProtobufBytesToTuple('com.my.converted.proto.class');

raw_protobuffer = LOAD 'hbase://table' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('cf:cl') AS (downloader:chararray);
parsed = FOREACH raw_protobuffer GENERATE ProtobufBytesToTuple($0);
每当我尝试进行转换时,它都会以以下堆栈跟踪失败:

Caused by: java.lang.RuntimeException: could not instantiate 'com.twitter.elephantbird.pig.piggybank.ProtobufBytesToTuple' with arguments '[com.my.converted.proto.class]'
    at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:618)
    at org.apache.pig.newplan.logical.expression.UserFuncExpression.getFieldSchema(UserFuncExpression.java:193)
    at org.apache.pig.newplan.logical.optimizer.FieldSchemaResetter.execute(SchemaResetter.java:264)
    at org.apache.pig.newplan.logical.expression.AllSameExpressionVisitor.visit(AllSameExpressionVisitor.java:143)
    at org.apache.pig.newplan.logical.expression.UserFuncExpression.accept(UserFuncExpression.java:88)
    at org.apache.pig.newplan.ReverseDependencyOrderWalker.walk(ReverseDependencyOrderWalker.java:70)
    at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
    at org.apache.pig.newplan.logical.optimizer.SchemaResetter.visitAll(SchemaResetter.java:67)
    at org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:122)
    at org.apache.pig.newplan.logical.relational.LOGenerate.accept(LOGenerate.java:246)
    at org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
    at org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:114)
    at org.apache.pig.newplan.logical.relational.LOForEach.accept(LOForEach.java:76)
    at org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
    at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
    at org.apache.pig.parser.LogicalPlanBuilder.expandAndResetVisitor(LogicalPlanBuilder.java:392)
    at org.apache.pig.parser.LogicalPlanBuilder.buildForeachOp(LogicalPlanBuilder.java:924)
    at org.apache.pig.parser.LogicalPlanGenerator.foreach_clause(LogicalPlanGenerator.java:14195)
"~/pig_1379411496557.log" [readonly] 396L, 30186C                                                                 13,1-8        Top
    at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:618)
    at org.apache.pig.newplan.logical.expression.UserFuncExpression.getFieldSchema(UserFuncExpression.java:193)
    at org.apache.pig.newplan.logical.optimizer.FieldSchemaResetter.execute(SchemaResetter.java:264)
    at org.apache.pig.newplan.logical.expression.AllSameExpressionVisitor.visit(AllSameExpressionVisitor.java:143)
    at org.apache.pig.newplan.logical.expression.UserFuncExpression.accept(UserFuncExpression.java:88)
    at org.apache.pig.newplan.ReverseDependencyOrderWalker.walk(ReverseDependencyOrderWalker.java:70)
    at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
    at org.apache.pig.newplan.logical.optimizer.SchemaResetter.visitAll(SchemaResetter.java:67)
    at org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:122)
    at org.apache.pig.newplan.logical.relational.LOGenerate.accept(LOGenerate.java:246)
    at org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
    at org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:114)
    at org.apache.pig.newplan.logical.relational.LOForEach.accept(LOForEach.java:76)
    at org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
    at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
    at org.apache.pig.parser.LogicalPlanBuilder.expandAndResetVisitor(LogicalPlanBuilder.java:392)
    at org.apache.pig.parser.LogicalPlanBuilder.buildForeachOp(LogicalPlanBuilder.java:924)
    at org.apache.pig.parser.LogicalPlanGenerator.foreach_clause(LogicalPlanGenerator.java:14195)
    at org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1623)
    at org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator.java:799)
    at org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:517)
    at org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:392)
    at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184)
    ... 15 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:586)
    ... 37 more
Caused by: java.lang.NoClassDefFoundError: com/twitter/elephantbird/util/TypeRef
    at com.twitter.elephantbird.pig.piggybank.ProtobufBytesToTuple.<init>(ProtobufBytesToTuple.java:37)
    ... 42 more
Caused by: java.lang.ClassNotFoundException: com.twitter.elephantbird.util.TypeRef
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 43 more
原因:java.lang.RuntimeException:无法使用参数“[com.my.converted.proto.class]”实例化“com.twitter.elephantbird.pig.piggybank.ProtobufBytesToTuple”
位于org.apache.pig.impl.PigContext.InstanceEFuncFromSpec(PigContext.java:618)
位于org.apache.pig.newplan.logical.expression.UserFuncExpression.getFieldSchema(UserFuncExpression.java:193)
位于org.apache.pig.newplan.logical.optimizer.FieldSchemaResetter.execute(SchemaResetter.java:264)
位于org.apache.pig.newplan.logical.expression.AllSameExpressionVisitor.visit(AllSameExpressionVisitor.java:143)
位于org.apache.pig.newplan.logical.expression.UserFuncExpression.accept(UserFuncExpression.java:88)
位于org.apache.pig.newplan.ReverseDependencyOrderWalker.walk(ReverseDependencyOrderWalker.java:70)
访问org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
位于org.apache.pig.newplan.logical.optimizer.SchemaResetter.visitAll(SchemaResetter.java:67)
在org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:122)上
位于org.apache.pig.newplan.logical.relational.loggenerate.accept(loggenerate.java:246)
位于org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
在org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:114)上
位于org.apache.pig.newplan.logical.relational.LOForEach.accept(LOForEach.java:76)
位于org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
访问org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
位于org.apache.pig.parser.LogicalPlanBuilder.expandAndResetVisitor(LogicalPlanBuilder.java:392)
位于org.apache.pig.parser.LogicalPlanBuilder.buildForeachOp(LogicalPlanBuilder.java:924)
位于org.apache.pig.parser.logicalplanggenerator.foreach_子句(logicalplanggenerator.java:14195)
“~/pig1379411496557.log”[readonly]396L,30186C 13,1-8顶部
位于org.apache.pig.impl.PigContext.InstanceEFuncFromSpec(PigContext.java:618)
位于org.apache.pig.newplan.logical.expression.UserFuncExpression.getFieldSchema(UserFuncExpression.java:193)
位于org.apache.pig.newplan.logical.optimizer.FieldSchemaResetter.execute(SchemaResetter.java:264)
位于org.apache.pig.newplan.logical.expression.AllSameExpressionVisitor.visit(AllSameExpressionVisitor.java:143)
位于org.apache.pig.newplan.logical.expression.UserFuncExpression.accept(UserFuncExpression.java:88)
位于org.apache.pig.newplan.ReverseDependencyOrderWalker.walk(ReverseDependencyOrderWalker.java:70)
访问org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
位于org.apache.pig.newplan.logical.optimizer.SchemaResetter.visitAll(SchemaResetter.java:67)
在org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:122)上
位于org.apache.pig.newplan.logical.relational.loggenerate.accept(loggenerate.java:246)
位于org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
在org.apache.pig.newplan.logical.optimizer.SchemaResetter.visit(SchemaResetter.java:114)上
位于org.apache.pig.newplan.logical.relational.LOForEach.accept(LOForEach.java:76)
位于org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75)
访问org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
位于org.apache.pig.parser.LogicalPlanBuilder.expandAndResetVisitor(LogicalPlanBuilder.java:392)
位于org.apache.pig.parser.LogicalPlanBuilder.buildForeachOp(LogicalPlanBuilder.java:924)
位于org.apache.pig.parser.logicalplanggenerator.foreach_子句(logicalplanggenerator.java:14195)
位于org.apache.pig.parser.LogicalPlanGenerator.op_子句(LogicalPlanGenerator.java:1623)
位于org.apache.pig.parser.LogicalPlanGenerator.general_语句(LogicalPlanGenerator.java:799)
位于org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:517)
位于org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:392)
位于org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184)
... 还有15个
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:525)
位于org.apache.pig.impl.PigContext.InstanceEFuncFromSpec(PigContext.java:586)
... 37多
原因:java.lang.NoClassDefFoundError:com/twitter/elephantbird/util/TypeRef
在com.twitter.elephantbird.pig.piggybank.ProtobufBytesToTuple.(ProtobufBytesToTuple.java:37)
... 42多
原因:java.lang.ClassNotFoundException:com.twitter.elephantbird.util.TypeRef
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:423)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 43多

我怀疑这可能与包含适当的JAR有关,从我看到的来看,这些依赖项应该在elephant bird core中。

当我排除“elephant bird core”库时,我能够重现相同的错误。所以我怀疑jar有什么问题

您可以检查jar是否具有TypeRef。
jar -xvf elephant-bird-core-4.1-SNAPSHOT.jar | grep "TypeRef.class"