映射将文件拆分为小文件的作业,并在reduce阶段生成这些文件的名称

时间:2013-09-13 01:07:41

标签: hadoop mapreduce

鉴于大文件A,我需要迭代该文件的记录和每条记录

  • 提取某个字段的值(状态)
  • 将此记录添加到名为“status_”+ value
  • 的文件中
  • 将该状态值发送到reducer

因此输出将包含一组带有记录的文件,按状态分组,以及一些带有状态列表的文件

理想情况下,它应该

  • 将状态置于'output_dir / statuses / status_nnn'(其中nnn为实际状态值),
  • 'output_dir / status_list'将包含每行一个状态

这可能与hadoop有关吗?我发现如何使用此example为每条记录生成文件名,但不知道如何分隔记录和枚举状态。

我事先并不知道哪些状态可能存在于这些记录中。

1 个答案:

答案 0 :(得分:0)

在地图阶段,您可以为每条记录执行2次点击:<list_statuses, status>。 'list_statusses'必须是您事先选择的唯一键。然后在reduce阶段,你的行为取决于键,如果它等于你的特殊键,那么你发出一个带有状态的文件(这个reduce函数会将所有状态存储在一个Set中),否则生成<status,field>文件。

这对你有意义吗?