0

在 hive 中,为什么桶的数量应该等于减速器的数量?

4

2 回答 2

0

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

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

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

于 2017-09-18T09:56:51.850 回答
0

插入分桶表时启动的减速器数量是该表中桶数的除数。选择最接近最大减速器集的除数,并启动许多减速器。

例子:

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 个减速器。

于 2019-01-29T16:14:45.860 回答