python - Hadoop 和 Python : Disable Sorting

标签 python sorting hadoop mapreduce cluster-computing

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

最佳答案

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

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

替代方案 1:在键前面添加零,以便它们都具有相同的大小。 “09”位于“10”之前。

替代方案 2:使用 KeyFieldBasedComparator,如 this SO question 中所示.

关于python - Hadoop 和 Python : Disable Sorting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19188263/

相关文章:

python - 如何以 plotly 方式显示点网格?

python - bool 索引但结果是其他一些操作

javascript - `Node.js` 和/或其他 Javascript 分支相对于非 JS 框架(Rails、Django...)的性能、稳定性和速度

json - 根据值从数组中挑选 JSON 对象

hadoop - pig :在一类中包含多个UDF

hadoop - DNS不一致

python - 如何格式化轴 x 日期 ('dd/mm/yyyy' )?

sorting - 使用我自己的比较功能对Flutter小部件列表进行排序

java - 找出java中LSD计数排序程序中出现java.lang.NoClassDefFoundError的原因

hadoop - Hadoop 中的 JoGL?用于图形的 Hadoop?