有三个问题针对Hive斜连接优化的一些细节:
问题1
在https://cwiki.apache.org/confluence/display/Hive/Skewed+Join+Optimization中,我们知道hive斜连接优化的基本思想…但有些细节让我很困扰:
例如: select A.id from A join B on A.id = B.id在tableA中,有三个歪斜键:id=1, id=2, id=3,其他键均匀分布,会启动4个MR job吗?
job 1处理等分布的key;
job 2处理歪斜键id=1;
job 3处理歪斜键id=2;
job 4处理歪斜键id=3;
对吗?谢谢。
问题2
如我们所知,斜连接优化的关键是我们可以使用映射连接到处理斜连接键,如1,2,3。那么,如果这不符合映射连接条件,它会退回到普通连接吗?问题3
默认设置为:hive.skewjoin。key= 100000,对于实际查询来说通常太小。是否有可能动态地决定倾斜连接的触发条件,例如基于JVM堆大小和倾斜表的总行数?
问题1:不是4个作业,而是4个reducer,每个reducer处理一个唯一的键