我有一個文件,如下hadoop的豬百分比
名稱評分
約翰AA
約翰AA
約翰AA
約翰BB
瑪麗立方厘米
瑪麗立方厘米
mary dd
我想輸出他們的得分centage通過對每個人 分數數量,以便它看起來像這樣
約翰AA 75
約翰BB 25
瑪麗立方厘米66.6
瑪麗DD 33.3
John有3 1aa和BB,所以AA%= 75和BB%= 25 我想這樣做在Hadoop的豬,請幫幫忙,謝謝
-Troy
我有一個文件,如下hadoop的豬百分比
名稱評分
約翰AA
約翰AA
約翰AA
約翰BB
瑪麗立方厘米
瑪麗立方厘米
mary dd
我想輸出他們的得分centage通過對每個人 分數數量,以便它看起來像這樣
約翰AA 75
約翰BB 25
瑪麗立方厘米66.6
瑪麗DD 33.3
John有3 1aa和BB,所以AA%= 75和BB%= 25 我想這樣做在Hadoop的豬,請幫幫忙,謝謝
-Troy
你可以試試這個?
輸入:FILE.DAT
john aa
john aa
john aa
john bb
mary cc
mary cc
mary dd
代碼:
A = LOAD 'file.dat' USING PigStorage(' ') as (name:chararray,score:chararray);
N = CUBE A BY CUBE(name,score);
N2 = FOREACH N GENERATE FLATTEN(group) AS (name,score), ((float)COUNT_STAR(cube)) As (totcnt:float);
N3 = FILTER N2 BY name!='null';
N4 = GROUP N3 BY name;
N5 = FOREACH N4 {
fil = order N3 BY score;
fil1 = LIMIT fil 1;
fil2 = FILTER N3 BY score!='null';
generate FLATTEN(fil2) AS (name:chararray,score:chararray,indcount:float),FLATTEN(fil1.totcnt) as (totcnt:float);
}
N6 = FOREACH N5 GENERATE name,score,(indcount/totcnt)*100;
DUMP N6;
輸出:
(john,aa,75.0)
(john,bb,25.0)
(mary,cc,66.66667)
(mary,dd,33.333336)
哇!強大的CUBE的作品,謝謝你!維涅什。 –
不客氣.. :) –
感謝張貼 - 你可以使用編輯工具,今天你的一些代碼?謝謝。 –
也可以請您提供有關您的問題的更多信息。問題陳述不明確。 –
基本上爲每個名稱(約翰,瑪麗)產生的比例的數量的百分比。例如:john有3個aa和1個bb,那麼aa爲75%,bb爲23%。希望這一點很清楚,還要感謝一個豬場計劃有多少個UDF?如果多於一個,那麼語法是什麼......註冊....謝謝 –