我有一个输入如下的猪脚本:
| 上校 | 上校 B | 上校 C | 科尔D | 上校 |
我有这样的关系,按不同的列分组:
X = Col A | 总和列 C | Sum Col D|
Y = Col B | Sum Col D | Sum Col E|
Z = ...
ETC
然后我需要将 X、Y、Z 存储到不同的文件夹中,因此会多次调用 STORE。Pig 是否知道如何只加载和处理一次数据然后进行存储?
我有一个输入如下的猪脚本:
| 上校 | 上校 B | 上校 C | 科尔D | 上校 |
我有这样的关系,按不同的列分组:
X = Col A | 总和列 C | Sum Col D|
Y = Col B | Sum Col D | Sum Col E|
Z = ...
ETC
然后我需要将 X、Y、Z 存储到不同的文件夹中,因此会多次调用 STORE。Pig 是否知道如何只加载和处理一次数据然后进行存储?
您的输入只会被加载一次,但每个GROUP BY
都需要一个单独的 MapReduce 作业。
在您的示例中,您正在分组Col A
,Col B
因此您的脚本将编译为两个作业。
这实际上取决于您拥有的特定猪代码(例如,您可以将其中一个连接作为倾斜等)在任何情况下猪都有EXPLAIN
关键字,它向您显示逻辑计划、物理计划以及此处相关的地图/减少为建立任何关系而实施的计划。有关详细信息,请参阅Pig 的手册
是的,猪知道怎么做。你只会有一份 MR 工作。