2017-09-15 228 views
0

我正在下面執行錯誤:錯誤1200:豬腳本無法解析

data1 = load '/user/pig/join2_genchanA.txt' using PigStorage(',')as (showname:chararray, channelname:chararray); 

data2 = load '/user/pig/join2_gennumA.txt' using PigStorage(',')as (showname:chararray, showviewer:long); 

joindata = join data1 by showname, data2 by showname; 

bat = filter joindata by channelname=='BAT'; 

foreachviewer = FOREACH bat GENERATE channelname, showviewer; 

foreachgroupall = GROUP foreachviewer all; batsum = FOREACH foreachgroupall GENERATE SUM(bat.showviewers); 

現在我得到以下錯誤:

"2017-09-15 04:01:03,517 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: **Pig script failed to parse**: <line 28, column 46> Invalid scalar projection: bat Details at logfile: /home/cloudera/pig_1504878875671.log" 

請幫助我。

+0

錯誤提及第28行第46列。腳本中的28行是什麼?腳本看起來比錯誤指示的小很多。 –

+0

嗨inquisitive_mind,這是唯一的代碼。行值28表示在錯誤行代碼之前執行了27行。 – AMJO

回答

0

這是說野外蝙蝠在別名foreachgroupall中不可用。

在foreachgroupall上做一個DESCRIBE,它會顯示字段名。

替換最後一行在您的代碼段與下面的一個 -

batsum = FOREACH foreachgroupall GENERATE SUM(foreachviewer.data2::showviewer); 

我建議你閱讀的數據集,而不是後加入過濾通道名稱BAT稍早進行過濾。請參閱下面的代碼片段以獲取詳細信息 -

data1 = load '/user/pig/join2_genchanA.txt' using PigStorage(',') as (showname:chararray, channelname:chararray); 

data2 = load '/user/pig/join2_gennumA.txt' using PigStorage(',') as (showname:chararray, showviewer:long); 

bat = FILTER data1 BY channelname=='BAT'; 

joindata = join bat by showname, data2 by showname; 

foreachviewer = FOREACH joindata GENERATE bat::channelname AS channelname, data2::showviewer AS showviewer; 

req_stats = FOREACH(GROUP foreachviewer ALL) GENERATE SUM(foreachviewer.showviewer); 

DUMP req_stats;