hive 中有两个与倾斜连接相关的属性。
<property>
<name>hive.skewjoin.mapjoin.map.tasks</name>
<value>10000</value>
<description>
Determine the number of map task used in the follow up map join job for a skew join.
It should be used together with hive.skewjoin.mapjoin.min.split to perform a fine grained control.
</description>
</property>
<property>
<name>hive.skewjoin.mapjoin.min.split</name>
<value>33554432</value>
<description>
Determine the number of map task at most used in the follow up map join job for a skew join by specifying
the minimum split size. It should be used together with hive.skewjoin.mapjoin.map.tasks to perform a fine grained control.
</description>
</property>
但我仍然不明白这两者之间的关系是什么,因为hive.skewjoin.mapjoin.map.tasks
定义了地图任务的数量,hive.skewjoin.mapjoin.min.split
最终也定义了地图任务的数量。
你正在阅读
这意味着,它最多使用的任务...通过指定最小拆分大小。
计算输入拆分的总大小,除以拆分大小属性,然后确定应创建多少映射任务,并由另一个属性定义创建的总任务数限制,这就是为什么它说"细粒度控制"