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

Posted

技术标签:

【中文标题】通过 Pig 转储中间 MR 作业数据【英文标题】:Dumping Intermediate MR Job Data By Pig 【发布时间】:2015-09-08 11:52:07 【问题描述】:

我对 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:按操作执行分组。

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

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

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

提前致谢 干杯:)

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢 Venkata,你能分享一些关于它的工作的文档吗?

以上是关于通过 Pig 转储中间 MR 作业数据的主要内容,如果未能解决你的问题,请参考以下文章

通过SDK提交MapReduce作业

转储数据集时将数据从 Hive 加载到 Pig 错误

无法在 PIG 中转储关系

转储 Json 数据时出现 Apache Pig 错误

在 pig 中转储一个字符串或一个(字符串,整数)元组

Pig - 地图缩减模式下的权限被拒绝