Pigを始めたばかりです。ファイルからデータをロードして、それ以降ダンプしようとしています。読み込みは適切なようで、エラーはスローされません。以下はクエリです:
NYSE = LOAD '/ root/Desktop/Works/NYSE-2000-2001.tsv' USING PigStorage()AS(exchange:chararray、stock_symbol:chararray、date:chararray、stock_price_open:float、stock_price_high:float、stock_price_low:float、stock_price_close :float、stock_volume:int、stock_price_adj_close:float);
ダンプを実行しようとすると、次のエラーがスローされます。
エラー1066:エイリアスNYSE org.Apache.pig.impl.logicalLayer.FrontendExceptionのイテレータを開くことができません:エラー1066:org.Apache.pig.PigServer.openIterator(PigServer.Java:857)でエイリアスNYSEのイテレータを開くことができませんorg.Apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.Java:303)at org.Apache.pigのorg.Apache.pig.tools.grunt.GruntParser.processDump(GruntParser.Java:682) tools.grunt.GruntParser.parseStopOnError(GruntParser.Java:189)at org.Apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.Java:165)at org.Apache.pig.tools.grunt.Grunt.run( Grunt.Java:69)at org.Apache.pig.Main.run(Main.Java:490)at org.Apache.pig.Main.main(Main.Java:111)原因:Java.io.IOException:ジョブorg.Apache.pig.PigServer.openIterator(PigServer.Java:849)で異常なステータスFAILEDで終了しました。 "
問題の原因は何ですか?
hadoop 2.2
に対してpig0.12.0以前のjarを実行していますか?その場合は、src
からpigjarを再コンパイルすることで、このエラーを回避できました。これは、 debian
タイプボックスに関連する手順
pig-0.12.0.tar.gz
をダウンロードします
瓶を開梱し、権限を設定します
次に、解凍されたディレクトリ内でsrcを'ant clean jar -Dhadoopversion=23'
でコンパイルします。
次に、同じディレクトリなど、Mavenのクラスパスでjarを取得する必要があります。
mvn install:install-file -Dfile=pig.jar -DgroupId={set a groupId}-
DartifactId={set a artifactId} -Dversion=1.0 -Dpackaging=jar
または、Eclipseの場合は、外部ライブラリ/依存関係としてjarを追加します
pig 12
でhadoop 2.2.0
を実行しようとして正確なトレースを取得していましたが、上記の手順でうまくいきました
更新
問題を豚のjiraに投稿すると、彼らは応答しました。ここには、hadoop2pig-h2.jar用にコンパイル済みのpigjarがあります http://search.maven.org/#artifactdetails|org.Apache.pig|pig|0.12.0|jar
このjarのmavenタグは
<dependency> <groupId>org.Apache.pig</groupId> <artifactId>pig</artifactId> <classifier>h2</classifier> <version>0.12.0</version> <scope>provided</scope> </dependency>
これは、0.12以降のPigバージョンの変更が原因である可能性があります。具体的な変更点は、Pigが以前は許容的であり、データファイルの最初の行を自動的に無視するか、その行を列名として解釈することです。新しいバージョンのPigでは、この許容性が削除されました。回避策は、入力ファイルから列名を削除することです。これにより、問題が解決するはずです。
カピル
私もこの問題に直面しています。そして、私はこのリンクを見ます: http://www.fanli7.net/a/JAVAbiancheng/ANT/20140325/441264.html
pigバージョンを0.12.0から0.13.0
に置き換えるだけで、問題は解決します。 (ここで、私のhadoopバージョンは2.3.0
)
クラスPigServerへのブレークポイントをメソッドstore()に配置できます。
for(JobStats js : stats.getJobGraph()){
if(js.getException() != null) {
ex = js.getException();
}
}
Jsオブジェクト内にフィールドerrorMessageがあり、問題の説明が含まれている可能性があります