2012-11-29 40 views
4

我想返回組的前5行。 基本上我有一張桌子,上面有一些州名和他們的城市,按州名分組。我想擁有該州的前五名城市,而不是全部。hadoop豬返回頂部5行

我該如何使用豬做這件事? 預先感謝您。

+0

[我應該如何選擇前10%的表格?](http://stackoverflow.com/問題/ 12700003 /我應該如何選擇前10名) –

+1

@ChrisGerken我不認爲這是完全一樣的。他先做一個分組,然後做一個頂級x。我理解這個問題嗎? –

+1

@DonaldMiner:關鍵是在這兩種情況下使用LIMIT –

回答

11

GROUP BY之後,在FOREACH之內...您可以先做ORDER BY,然後再做LIMIT。這將首先按城市大小排序,然後拉出前5名。

B = GROUP A BY state; 
C = FOREACH B {       
    DA = ORDER A BY citysize DESC;     
    DB = LIMIT DA 5;       
    GENERATE FLATTEN(group), FLATTEN(DB.citysize), FLATTEN(DB.cityname); 
}