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

czfnxgou  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(247)

给定一个大文件,我需要遍历该文件的记录,并对每个记录进行遍历
提取某个字段的值(状态)
将此记录添加到名为“status\”+value的文件中
将该状态值发送到
因此,输出将包含一组按状态分组的带有记录的文件,以及一些带有状态列表的文件
理想情况下,它应该
将具有状态的文件放在“output\u dir/statuses/status\u nnn”(其中nnn是实际状态值)下,
“输出目录/状态列表”将包含每行一个状态
这和hadoop有关吗?通过这个例子,我了解了如何为每条记录生成文件名,但不确定如何分离记录和枚举状态。
我事先不知道那些记录里有哪些状态。

niknxzdl

niknxzdl1#

在贴图阶段,每个记录可以进行2次发射:和 <list_statuses, status> . “列表\状态”必须是您事先选择的唯一键。然后在reduce阶段,您的行为取决于键,如果它等于您的特殊键,那么您将发出一个带有状态的文件(例如,这个reduce函数将把所有状态存储在一个集合中),否则生成 <status,field> 文件。
这对你有意义吗?

相关问题