2012-09-07 44 views
1

我试图建立我的第一个猪的UDF在Java中使用AvroStorage(),并正在与Eclipse 建设时遇到麻烦调用函数我的代码如下所示:

REGISTER /home/user2/deb/demo.jar; 

寄存器/归属/user2/deb/deb/avro-1.4.0.jar 注册/home/user2/deb/deb/json-simple-1.1.jar 注册/home/user2/deb/deb/piggybank.jar 注册/ home /user2/deb/jackson-core-asl-1.5.5.jar 注册/home/user2/deb//jackson-mapper-asl-1.5.5.jar

avro = LOAD '/user/user2/deb/part-r-00000.avro' USING AvroStorage('schema_check') AS (accntNo: chararray); 

C = FOREACH avro GENERATE masking.AccountMask(accntNo); 转储C;

ERROR 1070: Could not resolve AvroStorage using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.] 

java.lang.RuntimeException: Cannot instantiate:AvroStorage 
at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:459) 

回答

0

我认为你需要包括avro运行时jar:avro-1.5.3.jar。您可能会运行与1.5.3不同的avro版本,因此请检查并确保您在其中放入正确的版本号。

寄存器/some/path/avro-1.5.3.jar

+0

仍然没有工作,现在它抛出另一个异常 – Dev

+0

错误2997:无法从错误中重新创建异常:错误:找到类org.apache.hadoop.mapreduce.TaskAttemptContext,但期望的接口 org.apache.pig.backend.executionengine.ExecException:错误2997:无法重新创建从后备错误异常:错误:找到类org.apache.hadoop.mapreduce.TaskAttemptContext,但是界面预计 – Dev

+0

以前我用错了piggybank.jar,现在这个问题已经解决了 – Dev

0

尝试使用完全合格的名称AvroStorage:

avro = LOAD '/user/user2/deb/part-r-00000.avro' 
     USING org.apache.pig.piggybank.storage.avro.AvroStorage('schema_check') 
     AS (accntNo: chararray);