以下失败:
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 的新手,所以如果我需要设置一些东西,请告诉我...
最佳答案
您的直觉是正确的,因为您需要先对数据进行分组,然后再使用 MIN
。为此,您可以使用 GROUP ALL
:
data = FOREACH rawData GENERATE (int) col;
grouped = GROUP data ALL;
aggregate = FOREACH grouped GENERATE MIN($1);
GROUP
操作后,$0
包含组,$1
第一列,$2
第二列, 等等。
关于java - PIG 聚合函数 - OutOfMemory : Java Heap Space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752926/