为什么mrjob在整理我的钥匙?

fcwjkofz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(343)

我正在运行一个相当大的mrjob作业(1755638个键),并且这些键正在按排序顺序写入减速器。即使我指定hadoop应该使用hash分区器,也会发生这种情况:

class SubClass(MRJob):

    PARTITIONER = "org.apache.hadoop.mapred.lib.HashPartitioner"

...

我不明白为什么钥匙被分类,当我不要求他们被分类。

6g8kf2rb

6g8kf2rb1#

当您没有显式指定任何分区器时,默认情况下使用hashpartitioner。

7d7tgy0s

7d7tgy0s2#

默认情况下不会对键进行排序,但是如果数据集很小,hashpartitioner将提供排序键的外观。当我将数据集的大小从50m增加到10g时,密钥就停止了排序。

iyzzxitl

iyzzxitl3#

mr按键对键/值对进行排序,这样可以确保给定键的所有值一起传递给reducer。实际上,传入reduce()方法的iterable只是读取排序后的列表,直到找到一个新键,然后停止迭代。这就是为什么钥匙总是按顺序出现。

相关问题