我想用Apache Pig來表徵具有某些屬性的行的分數。Apache Pig的基本統計信息
例如,如果數據的模樣:
a,15
a,16
a,17
b,3
b,16
我想獲得:
a,0.6
b,0.4
我努力做到以下幾點:
A = LOAD 'my file' USING PigStorage(',');
total = FOREACH (GROUP A ALL) GENERATE COUNT(A);
這給我總=(5),但是當我試圖使用這個'總':
fractions = FOREACH (GROUP A by $0) GENERATE COUNT(A)/total;
我得到一個錯誤。
很明顯COUNT()返回某種投影,兩個投影(在計算總數和分數中)應該是一致的。有沒有辦法做到這一點?或者也許只是爲了將總數作爲一個數字並避免這種投影一致性要求?
@ inquisitive-mind語法有問題嗎?此代碼無法在pig-12或pig-15中解析。對意外字符第4行第40列進行抱怨(假設LOAD操作是第1行)。謝謝! –
@TnatsissaHCraeser嘗試點。 $ 0,(double)rows。$ 1 /(double)total。$ 0; –
@nquisitive_mind解析,但以神祕的方式失敗(使用上面的例子):「標量在輸出中有多行,第一:(3,1),第二:(15,1)」。請注意,第一個來自b,第三個來自第二個來自輸入的15。這似乎表明,具有超過1行的神祕標量實際上是「全部」,如果是這樣,它可能是投影問題... –