0
我具有以下數據:鑄造在負荷與在分開的步驟
John,fl,3
John,wt,3
John,sp,4
John,sm,3
Mary,fl,3
Mary,wt,3
Mary,sp,4
Mary,sm,4
我想按名稱(第一列),以計算所述數據的平均GPA(第三列)。爲此,我創建了以下豬腳本,它工作得很好。
a = LOAD '/root/sample.txt' using PigStorage(',') as (name:chararray, other:chararray, gpa:int);
b = group a by name;
c = foreach b generate group, AVG(a.gpa);
然後我重寫相同的腳本,如下所示。這一次鑄造列在單獨的步驟,而不是負擔,但下面的代碼給了我施展異常錯誤:
java.lang.Exception: java.lang.ClassCastException: org.apache.pig.data.DataByteArray cannot be cast to java.lang.String
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
a = LOAD '/root/sample.txt' using PigStorage(',');
b = foreach a generate $0 as name:chararray, $1 as other:chararray, $2 as gpa:int;
c = group b by name;
d = foreach c generate group, AVG(b.gpa);
我無法理解爲什麼???這兩個代碼示例如何不同?
您可能在導致轉換錯誤的記錄之一中有空值。嘗試轉儲數據並同時描述a;在加載聲明之後。 –