我有一堆未压缩的protobuf二进制日志文件(* .binlog)。除了未压缩之外,每个文件/流包含可变数量的消息。
我正在尝试将这些文件加载到HDFS中并使用Pig查询它们。
我的问题是:
是否可以使用Elephant-Bird读取未压缩的文件?我也试过读取bzip2编码的文件,但到目前为止我的尝试
给了我Failed to read from file
错误
我正在尝试
register '/all-libraries/*.jar';
raw_data = load 'file.binlog' using com.twitter.elephantbird.pig.load.ProtobufPigLoader('my_package.My_proto_Class');
加载函数返回时没有错误,但是当我说
时value = foreach raw_data generate field1; //doesn't throw error
dump value //throws error
错误1066:无法打开别名值的迭代器
org.apache.pig.impl.logicalLayer.FrontendException:ERROR 1066:无法为别名person_phone_numbers打开迭代器 在org.apache.pig.PigServer.openIterator(PigServer.java:892) 在org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:774) 在org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372) 在org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198) 在org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:173) 在org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69) 在org.apache.pig.Main.run(Main.java:541) 在org.apache.pig.Main.main(Main.java:156) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在org.apache.hadoop.util.RunJar.run(RunJar.java:221) 在org.apache.hadoop.util.RunJar.main(RunJar.java:136) 引起:java.io.IOException:作业因异常状态FAILED而终止 在org.apache.pig.PigServer.openIterator(PigServer.java:884) ......还有13个
如果有可能的话,任何人都会提示吗?如何在阅读邮件之前指示ProtobufPigLoader
阅读邮件长度?