對於像我這樣的人來說,新語言和試圖理解上面代碼中發生了什麼,我的評論版本和轉儲輸出):
數據Samle( 'SAMPLE_DATA/test_limiting.pig'):
1|5
1|5
1|6
2|9
2|9
3|1
3|2
和豬腳本本身:
A = LOAD 'sample_data/test_limiting.pig' USING PigStorage('|') AS (c1:int, c2:int);
----
-- A: {c1: int,c2: int}
----
-- (1,5)
-- (1,5)
-- (1,6)
-- (2,9)
-- (2,9)
-- (3,1)
-- (3,2)
B = GROUP A BY (c1, c2);
----
-- B: {group: (c1: int,c2: int),A: {(c1: int,c2: int)}}
----
-- ((1,5),{(1,5),(1,5)})
-- ((1,6),{(1,6)})
-- ((2,9),{(2,9),(2,9)})
-- ((3,1),{(3,1)})
-- ((3,2),{(3,2)})
C = FOREACH B GENERATE group, COUNT(A) as num;
----
-- C: {group: (c1: int,c2: int),num: long}
----
-- ((1,5),2)
-- ((1,6),1)
-- ((2,9),2)
-- ((3,1),1)
-- ((3,2),1)
D = GROUP C BY group.c1;
----
-- D: {group: int,C: {(group: (c1: int,c2: int),num: long)}}
----
-- (1,{((1,5),2),((1,6),1)})
-- (2,{((2,9),2)})
-- (3,{((3,1),1),((3,2),1)})
E = FOREACH D {
SA = ORDER C BY num DESC;
SB = LIMIT SA 1;
GENERATE FLATTEN(SB.group);
}
----
-- E: {null::group: (c1: int,c2: int)}
----
-- ((1,5))
-- ((2,9))
-- ((3,1))
乙tw,我需要用小寫字母寫出參考「組」,因爲它是用大寫字母變體來轟炸的。也許由於不同的版本,不知道。
由於Pig架構參考錯誤,看起來很不錯,有一些小的變化。 「D = GROUP C BY c1」應爲:「D = GROUP C BY group.c1」和「GENERATE SB.c1,SB.c2」應爲:「GENERATE FLATTEN(SB.group)」非常感謝您的幫助。很棒! – GregH
不客氣,我修正了語法 – frail