1

以下のスクリプトを豚で作成しました。私はPIGとPIGLATINにかなり慣れていません。私はまだ PIG スクリプトを効率的に使用する方法を学んでいます。

スクリプトを実行すると、次のエラーが発生しました。

エラー エラー [メイン] org.apache.pig.tools.grunt.Grunt - エラー 2997: バックエンド エラーから例外を再作成できません: org.apache.pig.backend.executionengine.ExecException

どなたか理由と修正方法を教えてください。csv ファイルには、整数値を持つ rate 列を除くすべての char 列があります。

*divs = LOAD 'output\file.csv' using PigStorage(',') AS (uniID:chararray, deal:chararray, rol: chararray,name:chararray,add:chararray,city:chararray,stat:chararray,stn:chararray,zip:chararray,country:chararray,db:chararray,sm:chararray,rate:int);
DUMP divs;
trimmed = foreach divs generate sm,uniID,rol,rate,country;
DUMP trimmed;
grpd = group trimmed by sm;
orderd = order trimmed by country;
describe trimmed;
describe grpd;
DUMP grpd;
describe orderd;
avgdiv = foreach grpd generate sm, AVG(divs.rate), SUM(divs.rate), MAX(divs.rate);
DUMP avgdiv;
store avgdiv into 'output/pigdescribe1out';
explain;*
4

1 に答える 1

1

グループ ステートメントはエラーを返します。グループ化する前にデータを集計しようとしているため、エラーが発生します。

divs = LOAD '$input' using PigStorage('^A') AS (uniID:chararray, deal:chararray, rol: chararray,name:chararray,add:chararray,city:chararray,stat:chararray,stn:chararray,zip:chararray,country:chararray,db:chararray,sm:chararray,rate:int);<br/>
DUMP divs;
trimmed = foreach divs generate sm,uniID,rol,rate,country;
DUMP trimmed;
grpd = group trimmed by sm;
orderd = order trimmed by country;
describe trimmed;
describe grpd;
DUMP grpd;
describe orderd;
avgdiv = foreach grpd generate FLATTEN(group), AVG(trimmed.rate), SUM(trimmed.rate), MAX(trimmed.rate);
DUMP avgdiv;
store avgdiv into 'data/sampledata/';
explain;

これは完全に正常に機能します。

于 2013-02-01T15:35:18.213 に答える