在猪中使用 AvroStorage()
Posted
技术标签:
【中文标题】在猪中使用 AvroStorage()【英文标题】:Use of AvroStorage() in pig 【发布时间】:2012-09-07 11:42:39 【问题描述】:我正在尝试用 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); 转储 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)
【问题讨论】:
【参考方案1】:我认为您需要包含 avro 运行时 jar:avro-1.5.3.jar。您运行的 avro 版本可能与 1.5.3 不同,因此请检查以确保在其中输入了正确的版本号。
注册/some/path/avro-1.5.3.jar
【讨论】:
ERROR 2997: Unable to recreate exception from backed error: Error: Found class org.apache.hadoop.mapreduce.TaskAttemptContext, 但接口应该是 org.apache.pig.backend.executionengine.ExecException: ERROR 2997: Unable to recreate exception from backed error: Error: Found class org.apache.hadoop.mapreduce.TaskAttemptContext, but interface is expected 之前我用错了piggybank.jar,现在问题已经解决了 所以不确定还有什么问题,如果有的话? 是的,它现在显示以下异常 ExecException: ERROR 2997: Unable to recreate exception from backed error: Error: Found class org.apache.hadoop.mapreduce.TaskAttemptContext, but interface is expected 谁能给我下载 piggybank-0.9.0 或 0.10.0 jars 的链接。请尽快帮助我【参考方案2】:尝试使用 AvroStorage 的完全限定名称:
avro = LOAD '/user/user2/deb/part-r-00000.avro'
USING org.apache.pig.piggybank.storage.avro.AvroStorage('schema_check')
AS (accntNo: chararray);
【讨论】:
以上是关于在猪中使用 AvroStorage()的主要内容,如果未能解决你的问题,请参考以下文章