通过 Pig 转储中间 MR 作业数据

Dumping Intermediate MR Job Data By Pig

我想知道 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 个作业来执行此脚本:

Job 1 : Filters By Condition 1 and Condition 2

Job 2 : Performs the Group By Operation.

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

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

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

提前致谢 干杯:)

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