Hive优化之谓词下推
解释
Hive谓词下推(Predicate pushdown)
关系型数据库借鉴而来,关系型数据中谓词下推到外部数据库用以减少数据传输
基本思想:尽可能早的处理表达式
属于逻辑优化,优化器将谓词过滤下推到数据源,使物理执行跳过无关数据
参数打开设置:hive.optimize.ppd=true
两种生效形式
形式1:
select a.id,a.value1,b.value2 from table1 ajoin (select b.* from table2 b where b.ds>='20181201' and b.ds<'20190101') con (a.id=c.id)
最推荐形式1的方法,虽然看着非常的土,但却是最好的方法
形式2:
select a.id,a.value1,b.value2 from table1 ajoin table2 b on a.id=b.idwhere b.ds>='20181201' and b.ds<'20190101'
使用外连接失效
select a.id,a.value1,b.value2 from table1 aleft outer join table2 b on a.id=b.idwhere b.ds>='20181201' and b.ds<'20190101'
讨论
join、left join、right join、full outer join谓词下推生效与失效的情况
基于上述讨论总结一份PPD规则表参考资料
Changelog
181203创建
181130了解谓词下推名词