本文主要是介绍学习笔记 --- Spark SparkSQL下Parquet中PushDown的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PushDown是一种SQL优化方式,通常用在查询。应用场景:
假设通过DataFrame,df.select(a,b,c).filter(by a).filter(by b).select(c).filter(by c)这样的查询,在optimizer阶段,需要合并多个filters(CombineFilters),并调整算子间的顺序,例如将部分filter移到select等前面(PushPredicateThroughAggregate/Generate/Join/Project)。filter前需要操作一大批数据,但filter后只需要操作很小一部分数据,SQL优化时就希望一开始就只操作这一小部分数据,而不需要把所有数据都导入进来,因为最终还是要被过滤掉。
PushDown本身既有SQL语法的层面也有物理执行的层面。
PushDown是要把操作放到叶子节点上。这也是为什么叫谓词下推(Predicate pushdown)的原因。当把操作放到叶子节点时就导致操作在数据源上执行。
参考:
https://blog.csdn.net/full_stack_delp/article/details/72972934
这篇关于学习笔记 --- Spark SparkSQL下Parquet中PushDown的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!