尝试将一些在本地和 Hortonworks 上完美运行的现有 PIG 脚本移植到 HDInsights,尝试通过 Pig 的 piggybank 读取 Avro 文件时出现类未找到错误(piggybank 包含在 HDInsight 发行版中)。
想知道是否有其他人让 Avro 在 HDInsight 中工作或有解决方法(例如,将哪个 jar 复制到哪里?)
更详细... 追踪这一点,我直接通过 Azure HDInsight 实例上的远程终端运行 PIG。
我看到的错误是: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
我认为这是https://code.google.com/p/json-simple/的 json-simple 库
我尝试将它添加到 HDInsight VM 中的几个位置(并在 PIG 中显式注册库),但仍然出现错误。
该错误很容易通过 RDP 重现到 HDinsight Azure 实例桌面上的 Hadoop 命令行提示符中:
从细节开始 PIG ...
c:\apps\dist\pig-0.11.0.1.3.1.0-06\bin>pig -verbose -warning
使用 AvroStorage 输入任何行。例如
grunt> LocationRecordAvro = LOAD 'wasb:///testinput/20130901.avro' USING org.apache.pig.
piggybank.storage.avro.AvroStorage();
获得一个例外...
2013-11-21 16:27:53,732 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed to parse:
<line 1, column 21> pig script failed to validate: java.lang.RuntimeException: could not instantiate 'org.apache.pig.piggybank.storage.avro.AvroStorage' with arguments 'null'
2013-11-21 16:27:53,732 [main] ERROR org.apache.pig.tools.grunt.Grunt - Failed to parse: Pig script failed to parse:
<line 1, column 21> pig script failed to validate: java.lang.RuntimeException: could not instantiate 'org.apache.pig.piggybank.storage.avro.AvroStorage' with arguments 'null'
at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:
191)
at org.apache.pig.PigServer$Graph.validateQuery(PigServer.java:1571)
at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1544)
at org.apache.pig.PigServer.registerQuery(PigServer.java:516)
at org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:99
1)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScript
Parser.java:412)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.j
ava:194)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.j
ava:170)
at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69)
at org.apache.pig.Main.run(Main.java:538)
at org.apache.pig.Main.main(Main.java:157)
Caused by:
<line 1, column 21> pig script failed to validate: java.lang.RuntimeException: could not instantiate 'org.apache.pig.piggybank.storage.avro.AvroStorage' with arguments 'null'
at org.apache.pig.parser.LogicalPlanBuilder.buildLoadOp(LogicalPlanBuild
er.java:835)
at org.apache.pig.parser.LogicalPlanGenerator.load_clause(LogicalPlanGen
erator.java:3236)
at org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGener
ator.java:1315)
at org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalP
lanGenerator.java:799)
at org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGener
ator.java:517)
at org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator
.java:392)
at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:
184)
... 10 more
Caused by: java.lang.RuntimeException: could not instantiate 'org.apache.pig.piggybank.storage.avro.AvroStorage' with arguments 'null'
at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.jav
a:618)
at org.apache.pig.parser.LogicalPlanBuilder.buildLoadOp(LogicalPlanBuild
er.java:823)
... 16 more
Caused by: java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
at java.lang.Class.getConstructor0(Class.java:2714)
at java.lang.Class.newInstance0(Class.java:343)
at java.lang.Class.newInstance(Class.java:325)
at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.jav
a:588)
... 17 more
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseExcepti
on
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)
... 23 more
grunt>