在为 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 A
和 colA
。
我想将 table A
按 colA
分组并将其存储在文件 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 命令时执行。作业数量取决于执行计划。
我在 grunt shell 工作,同时在 Pig 上工作。
我有 table A
和 colA
。
我想将 table A
按 colA
分组并将其存储在文件 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 命令时执行。作业数量取决于执行计划。