Hadoop 和 Python:禁用排序



我已经意识到,当使用Python代码运行Hadoop时,映射器或化简器(不确定哪个)在 reducer.py 打印输出之前对我的输出进行排序。 目前,它似乎是按字母数字排序的。 我想知道是否有办法完全禁用它。 我希望程序的输出基于从 mapper.py 打印的顺序。 我在Java中找到了答案,但没有找到Python的答案。 我是否需要修改 mapper.py 或命令行参数?

你应该阅读更多关于基本的MapReduce概念。尽管在某些情况下排序可能是不必要的,但"Shuffle & Sort"阶段的洗牌部分是MapReduce模型的固有部分。MapReduce框架(Hadoop)需要对映射器的输出进行分组,以便将所有键一起发送到一个化简器,以便化简器可以实际"化简"数据。使用流式处理时,键值对(默认情况下)由制表符值分隔。从您在其他 SO 问题中的示例代码中,我可以看到您没有提供生成"键、值"元组,而只是提供单个文本行。

编辑:在问题"如何使其按数字排序(例如,9 之前 10)"中添加了以下答案?

备选方案 1:在键前面加上零,以便它们的大小都相同。"09"在"10"之前。

备选方案 2:使用 KeyFieldBasedComparator ,如本 SO 问题所示。

,如下所述

如果你的归约任务数不为 0,Hadoop框架将对你的结果进行排序。这是没有办法的。

相关内容

  • 没有找到相关文章

最新更新