为什么蜂巢中的桶数应该等于减速器的数量?

时间:2017-08-03 06:42:05

标签: apache hadoop hive partitioning buckets

在蜂巢中,为什么桶的数量应该等于减少器的数量?

2 个答案:

答案 0 :(得分:0)

因为这是mapreduce最优化的工作方式(所有其他方法都相同)。任务将在减速器之间分配。

在hive 0.x和1.x中,您必须指定以下内容:hive.enforce.bucketing = true。这意味着减速器的数量将根据表中的桶数自动确定。在hive(2.x)的更高版本中,这是默认设置。

来源:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables

答案 1 :(得分:0)

插入到存储桶表中时启动的reduce数量是该表中存储桶数量的除数。 选择最接近最大减速器设置的除数,并启动许多减速器。

示例:

Num of buckets in a table 5956.
hive.exec.reducers.max=1009
divisors of 5956=1489*4
number of launched reducers: 4

因此可以启动1489或4个减速器,但是由于可以启动的最大减速器为1009,因此只有4个减速器可以运行,而大型表可能要花十年的时间。

设置hive.exec.reducers.max = 2000将启动1489个减速器。