
Spark
文章平均质量分 50
学庭
沉下心来钻研,别浮躁就行。
展开
-
[Spark Sql 执行概览]
Spark Sql 执行概览前言Spark Sql执行全过程Spark Sql 实际转换过程Spark Sql逻辑计划执行sql样例Spark sql物理计划前言 Spark SQL的前身是shark,即“Hive on Spark”。Shark项目最初启动于2011年。当时HIve几乎算是唯一的SQL-on-Hadoop选择方案。Hive将SQL语句翻译为MapReduce,性能受限于MapReduce计算模型,始终无法满足各种交互式sql分析的需求原创 2021-12-17 14:54:52 · 1793 阅读 · 0 评论 -
【Hive、Spark Sql中为什么说group by是distinct的优化?】
Hive、Spark Sql中为什么说group by是distinct的优化?用LogicalPlan带你一探究竟group bydistinct看图说话用LogicalPlan带你一探究竟无论是Hive还是SparkSql都会生成LogicalPlan,PhysicalPlan只要我们明白了 他在底层如何转换如何优化的就能知道group by和distinct有何区别。group bysql: “select name from student group by name”distinct原创 2021-12-15 17:28:30 · 3033 阅读 · 0 评论 -
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 评论