以下失败:
data = FOREACH rawData GENERATE (int) col;
aggregate = FOREACH data GENERATE MIN(col);
我能以某种方式将上述内容付诸实践吗?
我试过了:
data = FOREACH rawData GENERATE 1 dummy, (int) col;
grouped = GROUP data BY dummy;
aggregate = FOREACH grouped GENERATE MIN(data.col)
现在我得到了:java.lang.Exception: java.lang.OutOfMemoryError: Java heap space
总共有11行整数(1..11)...所以不确定为什么我会得到一个outOfMemoryError?
我正在从命令行pig -f myscript.pig
PIG新手所以如果我需要设置一些内容请告诉我......
答案 0 :(得分:0)
您的直觉是正确的,因为您需要先使用MIN
对数据进行分组。您可以将GROUP ALL
用于此目的:
data = FOREACH rawData GENERATE (int) col;
grouped = GROUP data ALL;
aggregate = FOREACH grouped GENERATE MIN($1);
在GROUP
操作后,$0
包含该组,第一列为$1
,第二列为$2
,依此类推。