美文网首页
hive join中的谓词下推

hive join中的谓词下推

作者: lemontree_hook | 来源:发表于2020-11-23 15:08 被阅读0次

    详情参考hive:

    https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior#OuterJoinBehavior-Examples

    基本概念介绍

    首先定义了join的四种类型的表:

    Preserved Row table
    保留表,通俗地说就是 a left (outer) join b 中的a表;a right (outer) join b 中的b表,
    对于a full outer join b ,a和b表都是 保留表。
    Null Supplying table:不知道怎么翻译好,null值提供表?,其实就是在join中如果不能匹配上的使用null填充的表,a left (outer) join b 中的b表;a right (outer) join b 中的a表,
    对于a full outer join b ,a和b表都是 null值保留表
    During Join predicate:join中谓词,on后面的条件: in 'R1 join R2 on R1.x = 5
    R1.x = 5就是join中谓词。
    After Join predicate:join后谓词,where后面的条件: a left join b where a.t=1,
    a.t=1 就是join后谓词
    所谓的谓词下推就是在join之前的mr(spark)任务的map阶段提前对表进行过滤优化,使得最后参与join的表的数据量更小
    直接给出结论
    1.如果是 on后面的过滤条件,是不能提前到保留表过滤执行优化。
    2.如果是where后的过滤条件,是不能提前到null值保留表过滤执行优化。
    给出来官网的说明:
    里面包含几个谓词下推的例子:通过 explain (extended) sql 可以看到如果谓词下推,会对数据提前在map阶段过滤提升join的效率:

    image.png

    相关文章

      网友评论

          本文标题:hive join中的谓词下推

          本文链接:https://www.haomeiwen.com/subject/dbqviktx.html