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

标签 hadoop apache-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 是将作业 1 的输出数据写入磁盘,然后将该输出数据加载为作业 2 的输入数据,还是 Pig 直接将作业 1 的输出传递给作业 2(可能是将中间输出存储在内存/RAM 中,如果它有足够的)作为某种优化技术的一部分?

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

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

提前致谢 干杯:)

最佳答案

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

关于hadoop - 通过 Pig 转储中间 MR 作业数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32457113/

相关文章:

hadoop - 错误2245:无法从loadFunc org.apache.hive.hcatalog.pig.HCatLoader获取架构

hadoop - 无法使用连接工厂连接到 BigTable

hadoop - 如何使用 PIG 在 Hadoop 中给定阈值进行连接

hadoop - 使用 Pig 处理没有扩展名的压缩文件

hadoop - 如何在我的hadoop客户端上清理jar工作

hadoop - 如何在 Apache Pig 中加载具有参数化名称的文件

ubuntu - 无法将目录上传到hdfs。 `/usr/local/tmp/':没有这样的文件或目录

hadoop - 为什么运行 1TB teragen 时没有 reducer ?

eclipse - Hadoop - 输入路径不存在

hadoop - Pig Latin 中不区分大小写的搜索