通过pig转储中间mr作业数据

bvpmtnay  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(269)

我对Pig的正常行为有个疑问。
假设我正在写一个Pig的脚本如下:

A = LOAD some Input;
B = FILTER A BY `some condition 1`;
C = FILTER A BY `some condition 2`;
D = GROUP B BY `some column1` ;
E = GROUP C BY `some column1` ;
store D;
store E;

现在,当pig实际传递数据时,假设pig创建2个作业来执行此脚本:
作业1:按条件1和条件2筛选
作业2:按操作执行分组。
因此作业1的输出数据被作业2用作输入;pig是否将作业1的输出数据写入磁盘,然后将该输出数据加载为作业2的输入数据,或者pig是否将作业1的输出直接传递给作业2(如果有足够的内存/ram,则可能将中间输出存储在内存/ram中)作为某种优化技术的一部分?
我的问题是,当pig触发多个作业时,是每个作业将其mr输出放入磁盘,然后下一个作业将输出作为其输入,还是直接将其传递给下一个作业而不将其写入磁盘。
任何支持这一结论的有用链接都将大有裨益。
提前感谢(干杯:)

5vf7fwbs

5vf7fwbs1#

pig作为dag在内部执行作业。在mr作业中,作业的输出总是存储在磁盘上。所以为了准确地回答您的问题,它将从磁盘中选取job1的输出。

相关问题