Python Hadoop Mapreduce多重还原排序
我正在使用Hadoop Mapreduce对一个大文档进行排序,并使用Python Hadoop Mapreduce多重还原排序,python,sorting,hadoop,mapreduce,Python,Sorting,Hadoop,Mapreduce,我正在使用Hadoop Mapreduce对一个大文档进行排序,并使用KeyFieldBasedPartitioner将不同的输入划分到不同的Reducer。我要解决这个问题的想法是让映射器发送每个单词的第一个字母作为键,单词作为值。每个具有相同字母的单词都将被放入一个reducer,它将对所有以该字母开头的单词进行排序,然后在最后我将使用-getmerge,将所有结果合并到一个文档中,并查看一个完全排序的文档 到目前为止,我的整个过程如下: Giant document->mapper(删除标
KeyFieldBasedPartitioner
将不同的输入划分到不同的Reducer。我要解决这个问题的想法是让映射器发送每个单词的第一个字母作为键,单词作为值。每个具有相同字母的单词都将被放入一个reducer,它将对所有以该字母开头的单词进行排序,然后在最后我将使用-getmerge
,将所有结果合并到一个文档中,并查看一个完全排序的文档
到目前为止,我的整个过程如下:
Giant document->mapper(删除标点符号并拆分单词)->输出第一个字母,将单词对放入KeyFieldBasedPartitioner
->将其发送到26个减缩器中的一个(每个字母一个)->减缩器排序
现在,还原符都对各自的部分进行排序,但是当我使用-
getmerge
组合它们时,文档从以“n”开头的单词开始,然后以以“m”开头的单词结束。我如何指定它以使最终输出符合顺序?您是否检查了这个现有问题:我确实看到了这个问题,但该问题的解决方案似乎是针对Java用户的。我不能再使用单一的reducer了,我不得不使用KeyFieldBasedPartitioner
,所以实现我自己的分区器不是一个选项。