假设我的映射器输出了N个键(这些键不同),并且我有K个缩减器。如何编写自定义的Paritioner,以便每个reducer都能接收大约N / K个密钥?哪个密钥转到哪个接收并不重要。
示例:假设我的映射器输出10对<k1,v1>,<k2,v2>,<k3,v3>,...<k10,v10>
,并且我有3个reducer。我想要3对去到第一减速器,3对去到第二,4对去到第三,无论哪个键去哪个减速器。
我尝试过的事情:
<k1,v1>
随机分配给第一减速器,<k2,v2>
分配给第二减速器,依此类推。但是仍然有减速器比其他减速器获得更多的数据k1,k2,...k10
根据输入数据而变化->我必须为每个输入数据更改代码。而且,这些键具有相同的作用。我只需要在减速器之间平均分配它们。 非常感谢。
答案 0 :(得分:0)
默认分区程序使用哈希函数,它可以按设计分配均匀的数据,因此除非您对数据有所了解,否则您将无法获得更好的结果。应该分配的键的确切值。