【发布时间】:2020-10-03 18:54:40
【问题描述】:
在 Hive 中,我经常做如下查询:
select columnA, sum(columnB) from ... group by ...
我阅读了一些 mapreduce 示例,一个 reducer 只能产生一个键。看来 reducer 的数量完全取决于 columnA 中的键数。
因此,为什么 hive 可以手动设置减速器的数量?
如果A列有10个不同的值,我将reducer的数量设置为2,会发生什么?每个reducer会重复使用5次吗?
如果A列有10个不同的值,我将reducer的数量设置为20,会发生什么? hive 只会生成 10 个 reducer?
【问题讨论】:
-
reducer 不一定和key的个数一样。但是可以保证给定的密钥将由同一个减速器处理。看出区别了吗?
-
因此,如果“col_A”中有 10 个不同的键并且 reducer 的数量为 2,则 reducer_1 将处理 N 个键,而 reducer_2 将处理其余 (10-N) 个键。 N 的值(即如何在 reducer 中分配密钥的方式)由 hadoop 确定
-
将 reducer 的数量设置为大于不同值数量的值没有意义,因为该作业最多需要与不同值一样多的 reducer(而不是更多)
标签: hadoop hive mapreduce reduce hive-configuration