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

时间:2012-11-22 03:45:04

标签: 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

我想要做的是获取每个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中的等效方式。

有没有人能指出我在PIG中解决这个问题的好方法?

提前感谢任何想法,非常感谢! 真皮

1 个答案:

答案 0 :(得分:1)

您需要GROUP BY id而不是GROUP ALL