HADOOP PIG-使用PIG获取记录子集的最大值和最小值

HADOOP PIG-使用PIG获取记录子集的最大值和最小值,hadoop,max,apache-pig,min,Hadoop,Max,Apache Pig,Min,我正在导入一个CSV文件,其中包含一些与下面类似的数据 ---------- ID | VALUE ---------- 1 | 1 2 | 1 3 | 1 1 | 2 2 | 2 3 | 2 1 | 3 2 | 3 3 | 3 MAX_MIN_VALUE = LOAD 'SampleData.csv' AS (id:chararray, value:int); MAX_MIN_VALUE_GROUP = GROUP MAX_MIN_VA

我正在导入一个CSV文件,其中包含一些与下面类似的数据

----------
ID | VALUE
----------
1  |   1
2  |   1
3  |   1
1  |   2
2  |   2
3  |   2
1  |   3
2  |   3
3  |   3
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的最大值和最小值

--------------
ID | MAX | MIN
--------------
1  |  3  |  1
2  |  3  |  1
3  |  3  |  1
我可以使用类似于下面的代码获得value列的max和min

----------
ID | VALUE
----------
1  |   1
2  |   1
3  |   1
1  |   2
2  |   2
3  |   2
1  |   3
2  |   3
3  |   3
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

您需要
按id分组
,而不是
对所有人分组