在 Hadoop 中的 Reducer 中收集多个映射器的结果
Gathering multiple mapper's result sorted at Reducer in Hadoop
我有多个非常大的文件(将近 500MB)作为我的 MR 程序的输入。我将这些文件划分(拆分)为大小相等的分区。每个 Mapper 得到
文件的单个分区
Mapper : Key=(filename, partition_number) and Value= (character stream of partition)
我正在对映射器中的值(字符流)应用一些计算。
我想在一个减速器中收集与输入文件(对于它的所有分区)对应的结果。所以我把 reducer i/p key 想成了 'filename'。但是 mapper 的那些输出必须按顺序收集在 reducer 中。(比如 [partition1 o/p + partition2 +...+partitionN o/p] )
你能给我建议逻辑吗?
谢谢。
您需要二次排序。有关示例,请参见 https://vangjee.wordpress.com/2012/03/20/secondary-sorting-aka-sorting-values-in-hadoops-mapreduce-programming-paradigm/
在这种情况下
- 主要比较器比较[文件名,partition_number]
- 仅在文件名上分组比较器
- 仅根据文件名进行分区
我有多个非常大的文件(将近 500MB)作为我的 MR 程序的输入。我将这些文件划分(拆分)为大小相等的分区。每个 Mapper 得到 文件的单个分区
Mapper : Key=(filename, partition_number) and Value= (character stream of partition)
我正在对映射器中的值(字符流)应用一些计算。 我想在一个减速器中收集与输入文件(对于它的所有分区)对应的结果。所以我把 reducer i/p key 想成了 'filename'。但是 mapper 的那些输出必须按顺序收集在 reducer 中。(比如 [partition1 o/p + partition2 +...+partitionN o/p] )
你能给我建议逻辑吗? 谢谢。
您需要二次排序。有关示例,请参见 https://vangjee.wordpress.com/2012/03/20/secondary-sorting-aka-sorting-values-in-hadoops-mapreduce-programming-paradigm/
在这种情况下
- 主要比较器比较[文件名,partition_number]
- 仅在文件名上分组比较器
- 仅根据文件名进行分区