07 2020 档案
摘要:Spark SQL(5-2) CacheManage之InMemoryRelation 本来计划中是没有这节的,但是中午在看spark sql 内存管理模块的时候,脑子里面突然问到,spark sql 缓存到内存的数据是怎么组织的;上网查了下博客;然后自己也跟了下代码,就形成了这篇总结。 接着之前提
阅读全文
摘要:Spark SQL(8)-Spark sql聚合操作(Aggregation) 之前简单总结了spark从sql到物理计划的整个流程,接下来就总结下Spark SQL中关于聚合的操作。 聚合操作的物理计划生成 首先从一条sql开始吧 SELECT NAME,COUNT(*) FRON PEOPLE
阅读全文
摘要:Spark SQL(7)- physicalPlan 物理计划 spark的物理计划是将得到的逻辑算子树进一步的处理,得到针对RDD的一系列操作的集合,之后提交作业到spark集群。 spark物理计划的生成主要经历了一下的步骤: 应用sparkPlanner中定义的各种策略(strategy),
阅读全文
摘要:Spark SQL(6) OptimizedPlan 在这一步spark sql主要应用一些规则,优化生成的Resolved Plan,这一步涉及到的有Optimizer。 之前介绍在sparksession实例化的是会实例化sessionState,进而确定QueryExecution、Analy
阅读全文
摘要:Spark SQL(5) CacheManage 在spark sql的analyzed plan 生成之后,会经过一步withCachedData的操作,其实就是根据对logicalplan的缓存,如果logicalPlan的查询结果相同则会替换相对应的节点。这步发生在QueryExecution
阅读全文
摘要:Spark Sql(4)-Unresolved Plan到Analyzed Plan 在第三篇总结了Unresolved Plan的生成过程,在此之后就是将其转换为Analyzed Plan。这这一步主要涉及到QueryExecution、Analyzer、catalog等。 spark.sql()
阅读全文
摘要:Spark SQL Parser到Unresolved LogicPlan Spark SQL Parser简单来说就是将sql语句解析成为算子树的过程,在这个过程中,spark sql采用了antlr4来完成。 当执行spark.sql()方法时,会调用 Dataset.ofRows(self,
阅读全文
摘要:本文主要简述InternalRow、TreeNode及其子类。 一、InternalRow 在Spark SQL的内部实现中,InternalRow就是用来表示一行行数据的,也就是说在物理计划执行的阶段,Spark SQL转换和操作的都是RDD[InternalRow]。 其UML类图如下: 其中:
阅读全文
摘要:Spark SQL简述 Spark SQL在Spark全家桶中扮演着很重要的角色,本文主要从参考的书籍和自己的理解尝试着总结下Spark SQL(2.3.2),也算是个笔记。先来个网上的图片,看看Spark SQL的架构是怎么样的。 Spark sql主要步骤设计逻辑计划,然后物理计划之后会将物理计
阅读全文