在为 Pig 使用 grunt 时如何避免多个 Map Reduce 作业,同时调试涉及相同 table 的不同操作的脚本?

How do I avoid multiple Map Reduce jobs when using grunt for Pig, while debugging scripts that involve different operations over the same table?

我在 grunt shell 工作,同时在 Pig 上工作。

我有 table AcolA

我想将 table AcolA 分组并将其存储在文件 grACount 中,以及 grACount 的过滤结果并存储过滤后的结果生成名为 grACountFilter.

的文件

如果我在 grunt 中写如下语句 shell:

grA = GROUP A BY colA;
grACount = FOREACH grA GENERATE group as colA, COUNT(A.colA) as countColA;
STORE grACount into 'grACount';
grACountFilter = FILTER grACount BY countColA>15;
STORE grACountFilter into 'grACountFilter';

然后它将为第 3 行提交地图缩减作业,然后再次为第 5 行提交地图缩减作业,对吧?

而且,当它再次为第 5 行提交作业时,它会重新计算 tables,对吗?

我想要的是不必提交两个不同的 map reduce 作业并一次性执行所有计算。这可能吗?

pig 中的STORE 和DUMP 命令将触发作业执行。所以你不能阻止这种行为。您可以将所有 STORE 命令放在一起。单个 STORE 或 DUMP 命令可能会触发多个 mapreduce 作业。

执行计划将在脚本到达STORE 或DUMP 命令时执行。作业数量取决于执行计划。