1

以下失败:

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 的新手,所以如果我需要设置一些东西,请告诉我...

4

1 回答 1

0

您的直觉是正确的,因为您需要先对数据进行分组,然后再使用MIN. 您可以GROUP ALL为此目的使用:

data = FOREACH rawData GENERATE (int) col;
grouped = GROUP data ALL;
aggregate = FOREACH grouped GENERATE MIN($1);

操作后GROUP$0包含组、$1第一列、$2第二列,依此类推。

于 2013-09-19T22:39:54.217 回答