Hadoop和Python:禁用排序
作者:互联网
我已经意识到,当使用Python代码运行Hadoop时,无论是mapper还是reducer(不确定哪个)都会在reducer.py打印输出之前对我的输出进行排序.目前,它似乎是按字母数字排序的.我想知道是否有一种方法可以完全禁用此功能.我想要基于从mapper.py打印的顺序的程序输出.我在Java中找到了答案,但没有找到关于Python的答案.我需要修改mapper.py还是命令行参数?
解决方法:
您应该阅读有关MapReduce基本概念的更多信息.即使在某些情况下可能不需要排序,“ Shuffle& Sort”阶段的改组部分也是MapReduce模型的固有部分. MapReduce框架(Hadoop)需要对映射器的输出进行分组,以便将所有密钥一起发送到一个单独的reducer,以便该reducer实际上可以“缩减”数据.使用流式传输时,键值对(默认情况下)由制表符值分隔.从其他SO问题中的示例代码中,我可以看到您提供的不是生成“键,值”元组,而只是提供了单个文本行.
编辑:对问题“如何使其按数字排序(例如10之前的9)?”添加了以下答案?
备选方案1:在键之前加上零,以使它们的大小都相同. “ 09”位于“ 10”之前.
备选方案2:如this SO question中所示,使用KeyFieldBasedComparator.
标签:python,sorting,mapreduce,hadoop,cluster-computing 来源: https://codeday.me/bug/20191012/1897086.html