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