我对Hive中的歪斜连接有些怀疑。
1.hive何时使用公共连接来处理数据,因为我只在设置blow属性之后才能看到map join
设置hive.optimize.skewjoin=true;
设置hive.mapjoin.smalltable.filesize=2;
2.为什么偏斜连接不能与左连接一起工作
下表和sql:
tmp.skew_large_table 字段 imei,imsi,mac,phone,data_date;
total rows:290,0808
skew key : 868407035454956 670081
-----------
tmp.test_skew_small_table 字段 imei,package,data_date
total rows:857,6164
skew key : 868407035454956 10461
-----------
sql:
select a.*,b.*
from tmp.skew_large_table a
join
tmp.test_skew_small_table b
on a.imei=b.imei;
1条答案
按热度按时间pprl5pva1#
在阅读了Hive的源代码之后。我找到答案了
问题1:
hive.mapjoin.smalltable.filesize
以及hive.auto.convert.join
不适用于斜联接对于每个skey连接,hive都将使用map连接来处理它。
第2季度
外部连接不会触发歪斜连接,源代码显示blow