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