我对 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 是将作业 1 的输出数据写入磁盘,然后将该输出数据加载为作业 2 的输入数据,还是 Pig 直接将作业 1 的输出传递给作业 2(可能是将中间输出存储在内存/RAM 中,如果它有足够的)作为某种优化技术的一部分?
我的问题是,当 Pig 触发多个作业时,每个作业是将其 MR 输出放入磁盘,然后下一个作业将输出作为其输入,还是以某种方式直接将其传递给下一个作业而不将其写入磁盘.
任何支持结论的有用链接都会有很大帮助。
提前致谢 干杯:)
最佳答案
Pig 在内部以 DAG 的形式执行作业。始终在 MR 作业中将作业的输出存储到磁盘。因此,为了准确回答您的问题,它将从磁盘中选择 job1 的输出。
关于hadoop - 通过 Pig 转储中间 MR 作业数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32457113/