【发布时间】:2015-12-26 13:21:47
【问题描述】:
对于给定的 MR 作业,我需要生成两个输出文件。 一个文件应该是 Mapper 的输出 另一个文件应该是Reducer的输出(只是上面Mapper的一个聚合)
我可以将 mapper 和 reducer 输出都写在一个作业中吗?
编辑:
在 Job 1(仅 Mapper 阶段)输出包含单行中的 20 个字段,必须写入 hdfs(file1)。 在 Job 2(Mapper n reducer)中,Mapper 从 Job1 输出中获取输入,删除几个字段以引入标准格式(只有 10 个字段)并将其传递给写入 file2 的 reducer。
我需要 hdfs 中的 file1 和 file2... 现在我的疑问是,是否可以在 Job1 映射器中将数据作为 file1 写入 hdfs,然后修改相同的数据并将其传递给 reducer。
PS:到目前为止,我正在使用 2 个带有链接机制的作业。第一个作业只包含映射器,第二个作业包含映射器和减速器。
【问题讨论】:
-
我猜,您可以使用单个 MR 作业来生成结果。您是否在第二个作业的 Mapper 中进行任何转换,如果没有,则在单个 MR 作业中将 Mapper 的输出传递到 Reducer。
-
我是第二个映射器,我只是在修改单行的列数。例如:映射器(file1)的输出包含 20 列,mapper2 的输出包含 7 列。 mapper2 中的重复行将在 reducer 中删除。
-
如果你可以在第一个作业映射器中做到这一点,那么在那里执行并合并作业。否则,请提供有关这两项工作的详细信息。
-
在 Job 1 中(仅 Mapper)输出在单行中包含 20 个字段,必须写入 hdfs(file1).... 在 Job 2 中(Mapper n reducer)Mapper 从Job1 输出,删除几个字段以带入标准格式(只有 10 个字段)并将其传递给写入 file2 的 reducer。我需要 hdfs 中的 file1 和 file2 ......现在我的疑问是,是否可以在 Job1 映射器中将数据作为 file1 写入 hdfs,然后对其进行修改并将其发送到 reducer。
-
始终将信息添加到 OP 中。因为它易于阅读并且可供未来的读者直接使用。