0

给定大文件 A,我需要遍历该文件的记录和每条记录

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

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

理想情况下,它应该

  • 将具有状态的文件放在“output_dir/statuses/status_nnn”下(其中 nnn 是实际状态值),
  • 'output_dir/status_list' 将包含每行一个状态

这可能与hadoop有关吗?我发现了如何通过这个示例为每条记录生成文件名,但不确定如何分离记录和枚举状态。

我事先不知道这些记录中可能包含哪些状态。

4

1 回答 1

0

在映射阶段,您可以为每条记录执行 2 次发射:和<list_statuses, status>. 'list_statusses' 必须是您预先选择的唯一键。然后在 reduce 阶段,您的行为取决于密钥,如果它等于您的特殊密钥,则您发出一个带有状态的文件(例如,此 reduce 函数将所有状态存储在 Set 中)否则生成<status,field>文件。

你能理解这个吗?

于 2013-09-13T08:15:35.317 回答