为什么配置单元中的桶数应等于化简器数?



在配置单元中,为什么桶的数量应该等于化简器的数量?

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

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

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

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

例:

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 个化简器。

相关内容

  • 没有找到相关文章

最新更新