在配置单元中,为什么桶的数量应该等于化简器的数量?
因为这是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 个化简器。