我正在导入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
我可以使用类似于下面的代码来获取value列的最大值和最小值
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中解决此问题的好方法吗?
在此先感谢您的任何想法,不胜感激!
真皮
最佳答案
您需要GROUP BY id
而不是GROUP ALL
。
关于hadoop - HADOOP PIG-使用PIG获取记录子集的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505589/