按Pig转储中间MR作业数据



我有一个关于猪的正常行为的查询。

假设我正在编写一个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:执行Group By操作。

所以Job 1的输出数据被Job 2用作输入;Pig是否将Job 1的输出数据写入磁盘,然后将该输出数据加载为Job 2的输入数据,或者Pig是否将Job 1的输出直接传递给Job 2(如果有足够的内存,可能会将中间输出存储在内存/RAM中)作为某些优化技术的一部分?

我的问题是,当Pig触发多个作业时,每个作业是否将其MR输出放到磁盘上,然后下一个作业将输出作为其输入,或者它是否以某种方式直接将其传递给下一个作业而不将其写入磁盘。

任何支持结论的有用链接都将大有帮助。

提前感谢欢呼:)

Pig内部作为DAG执行作业。在MR作业中,作业的输出总是存储到磁盘上。因此,为了准确地回答您的问题,它将从磁盘中选择job1的输出。

最新更新