我试图用Java构建我的第一个Pig UDF,并且在使用Eclipse构建时无法调用该函数 我的代码如下所示:
REGISTER /home/user2/deb/demo.jar;
注册/home/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); DUMP 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 :(得分:0)
我认为你需要包含avro运行时jar:avro-1.5.3.jar。您可能正在运行与1.5.3不同的avro版本,因此请检查以确保在其中添加正确的版本号。
注册/some/path/avro-1.5.3.jar
答案 1 :(得分:0)
尝试使用AvroStorage的完全限定名称:
avro = LOAD '/user/user2/deb/part-r-00000.avro'
USING org.apache.pig.piggybank.storage.avro.AvroStorage('schema_check')
AS (accntNo: chararray);