ローカルおよび Hortonworks で完全に実行されるいくつかの既存の PIG スクリプトを HDInsights に移植しようとしていますが、Pig の piggybank (piggybank は HDInsight ディストリビューションに含まれています) を介して Avro ファイルを読み取ろうとすると、class not found エラーが発生します。
他の誰かが 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>