2012-11-22 39 views
0

我導入CSV類似於以下HADOOP PIG - 獲取最大和最小使用PIG

---------- 
ID | VALUE 
---------- 
1 | 1 
2 | 1 
3 | 1 
1 | 2 
2 | 2 
3 | 2 
1 | 3 
2 | 3 
3 | 3 

我想要做的是讓最大值和最小值的一些數據文件的記錄子集每個ID。輸出會像

-------------- 
ID | MAX | MIN 
-------------- 
1 | 3 | 1 
2 | 3 | 1 
3 | 3 | 1 

我能夠得到使用類似的代碼值列的最大值和最小值低於

MAX_MIN_VALUE = LOAD 'SampleData.csv' AS (id:chararray, value:int); 
MAX_MIN_VALUE_GROUP = GROUP MAX_MIN_VALUE ALL; 
WITH_MAX_MIN = FOREACH MAX_MIN_VALUE_GROUP 
     GENERATE 
      FLATTEN(MAX_MIN_VALUE.(id)), MAX(MAX_MIN_VALUE.value), MIN(MAX_MIN_VALUE.value); 

我掙扎,周圍是如何讓我的頭過濾數據,以便我可以獲得每個ID的最大值和最小值。在SQL中,我會做一個自我連接,但不能想到在PIG中的等效方式。

任何人都可以指出我在正確的方向作爲一個好的方法來解決這個豬嗎?

在此先感謝您的任何想法,非常感謝! Derm

回答

1

您需要GROUP BY id而不是GROUP ALL