配置单元倾斜连接问题

34gzjxbg  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(361)

我对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;
pprl5pva

pprl5pva1#

在阅读了Hive的源代码之后。我找到答案了

问题1: hive.mapjoin.smalltable.filesize 以及 hive.auto.convert.join 不适用于斜联接

对于每个skey连接,hive都将使用map连接来处理它。

第2季度

外部连接不会触发歪斜连接,源代码显示blow

// We are trying to adding map joins to handle skew keys, and map join righ
// now does not work with outer joins  
    if (!GenMRSkewJoinProcessor.skewJoinEnabled(parseCtx.getConf(), joinOp)) {
      return;
    }

相关问题