将partitioner视为决定哪个reducer(bucket)将处理Map器的特定键值(元素)输出的实体。 默认的partitioner使用key的散列函数在reducer中划分元素。一个类比是核心javaMap集合如何使用哈希函数来决定元素(键值)的bucket(reducer)。 在这个过程中,它保证同一个键被发送到一个reducer(该reducer处理该键的所有值)。所以,如果Map器发出 m 唯一键(每个键可以有任何计数)和 n 在reducer中,partitioner尝试分配键,以便每个reducer m/n 唯一键以及与该键关联的值列表。 注意,可以在程序中设置减速器的数量。这意味着您正在说分区程序限制可用于分发密钥的存储桶的数量。
2条答案
按热度按时间wswtfjt71#
如果不指定分区器,则默认
HashPartitioner
跑。它只是基于密钥进行散列:cwdobuhd2#
将partitioner视为决定哪个reducer(bucket)将处理Map器的特定键值(元素)输出的实体。
默认的partitioner使用key的散列函数在reducer中划分元素。一个类比是核心javaMap集合如何使用哈希函数来决定元素(键值)的bucket(reducer)。
在这个过程中,它保证同一个键被发送到一个reducer(该reducer处理该键的所有值)。所以,如果Map器发出
m
唯一键(每个键可以有任何计数)和n
在reducer中,partitioner尝试分配键,以便每个reducerm/n
唯一键以及与该键关联的值列表。注意,可以在程序中设置减速器的数量。这意味着您正在说分区程序限制可用于分发密钥的存储桶的数量。