
源码
学庭
沉下心来钻研,别浮躁就行。
展开
-
SparkSql底层解析运行流程
SparkSql , 一个字符串 , 是如何在spark集群中被解析运行的呢?本文带你一探究竟。1.断点1 找到解析入口2.进入sql3.执行sessionState.sqlParser.parsePlan(sqlText)sessionState在给定的[[SparkSession]]中保存所有会话特定状态的类。sqlParser 是一个 接口 其相关实现类如下图所示:parsePlan方法:SparkSqlParser.parsePlan没有找到 在其父类AbstractSqlP原创 2021-04-23 16:34:12 · 1163 阅读 · 2 评论 -
QueryExecution
QueryExecution使用Spark执行关系查询的主要工作流。设计为允许开发人员轻松访问查询执行的中间阶段。/** * 使用Spark执行关系查询的主要工作流。设计为允许开发人员轻松访问查询执行的中间阶段。 虽然这不是一个公共类,但我们应该避免为了更改函数名而更改函数名,因为许多开发人员使用该特性进行调试。 */class QueryExecution(val sparkSession: SparkSession, val logical: LogicalPlan) { // T原创 2021-04-21 11:25:25 · 427 阅读 · 0 评论 -
SparkSession.scala
Spark源码之SparkSession,Spark版本号2.2.0//SparkSession 源码/**使用数据集和数据框架API编程Spark的入口点。*在预先创建的环境中(例如命令行、笔记本电脑),使用生成器获取现有会话:* SparkSession.builder().getOrCreate()*构建器也可以用来创建一个新的会话:* SparkSession.builder* .master("local")* .appName("Word Count")*原创 2021-04-16 18:42:01 · 953 阅读 · 0 评论 -
QueryPlanningTracker.scala
/***一个简单的实用工具,用于跟踪查询规划中的运行时和相关统计信息*我们追踪两个不同的概念:*1阶段:这些是查询规划中的大范围阶段,如下所示,即分析、优化和物理规划(仅规划)。*2规则:这些是我们跟踪的单个催化剂规则。除了时间,我们还跟踪调用的数量和有效调用。*/伴生对象:object QueryPlanningTracker { val PARSING = "parsing" val ANALYSIS = "analysis" val OPTIMIZATION = "opt原创 2021-04-15 18:59:43 · 264 阅读 · 0 评论