2016-03-03 147 views
0

我有一個文件包含來自世界各地的所有國家的數據。Hadoop Pig Max命令

我想找出有最大機場的國家。

我已經寫了下面的代碼:

A = load 'airports.dat' USING PigStorage (',') AS(AirportID:int,Name:chararray,City:chararray,Country:chararray,IATA:chararray,IATAothers:chararray,Latitude:float,Longitude:float,Altitude:float,Timezone:float,DST:chararray,Zone:chararray); 
B= GROUP A BY Country; 
C= FOREACH B GENERATE A.Country, COUNT(A) AS Count; 

但畢竟這我沒有得到如何找到最大。

任何人都可以請幫忙。

+0

MAX「計算在單柱包的最大數值或chararrays的。」,所以它運行在值,而不是整個列。你必須訂購DESC和限制 –

回答

1

您已創建每個國家/地區的機場數量。你現在需要做的,是拿最高數行:

D = order C by $1 DESC; 
E = limit D 1; 
dump E; 
+0

謝謝跑....輸出是像({(印度),(印度),(印度)....等等},25) – Jig232

+0

如果我需要做什麼只需輸出爲(印度,25) – Jig232

+0

而不是生成A.Country,您應該生成組爲國家。當您執行groupby時,您實際上會獲得屬於該組的所有行的groupkey關係。當你生成A.country時,它會給你每一行的國家。你需要的是他們的組鍵(這是檢索簡單地使用'爲每個B生成組,COUNT(A)' –