首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spark SQL Catalyst 内部原理 与 RBO

本文转发自技术世界,原文链接 http://www.jasongj.com/spark/rbo/ 本文所述内容均基于 2018年9月10日 Spark 最新 Release 2.3.1 版本。...后续将持续更新 Spark SQL 架构 Spark SQL 的整体架构如下图所示 ?...以 DAG 的方法执行上述 Physical Plan 在执行 DAG 的过程中,Adaptive Execution 根据运行时信息动态调整执行计划从而提高执行效率 Parser Spark SQL...为了尽可能保证无论用户是否熟悉 SQL 优化,提交的 SQL 质量如何, Spark SQL 都能以较高效率执行,还需在执行前进行 LogicalPlan 优化。...Optimizer Spark SQL 目前的优化主要是基于规则的优化,即 RBO (Rule-based optimization) 每个优化以 Rule 的形式存在,每条 Rule 都是对 Analyzed

80220
您找到你想要的搜索结果了吗?
是的
没有找到

Spark SQL Catalyst 内部原理 与 RBO

后续将持续更新 Spark SQL 架构 Spark SQL 的整体架构如下图所示 [Spark SQL Catalyst] 从上图可见,无论是直接使用 SQL 语句还是使用 DataFrame,都会经过如下步骤转换成...] Analyzer 分析前后的 LogicalPlan 对比如下 [Spark SQL Analyzer] 由上图可见,分析后,每张表对应的字段集,字段类型,数据存储位置都已确定。...为了尽可能保证无论用户是否熟悉 SQL 优化,提交的 SQL 质量如何, Spark SQL 都能以较高效率执行,还需在执行前进行 LogicalPlan 优化。...[Spark SQL RBO Column Pruning] 这里需要说明的是,此处的优化是逻辑上的优化。...[Spark SQL RBO Column Pruning] 至此,一条 SQL 从提交到解析、分析、优化以及执行的完整过程就介绍完毕。 本文介绍的 Optimizer 属于 RBO,实现简单有效。

1.3K60

一文了解函数式查询优化器Spark SQL Catalyst

Reference Overview Spark SQL的核心是Catalyst优化器,是以一种新颖的方式利用Scala的的模式匹配和quasiquotes机制来构建的可扩展查询优化器。 ?...Spark2.x SQL语句的解析采用的是ANTLR4,ANTLR4根据语法文件SqlBase.g4自动解析生成两个Java类:词法解析器SqlBaseLexer和语法解析器SqlBaseParser。...使用这两个解析器SQL字符串语句解析成了ANTLR4的ParseTree语法树结构。...词义注入 //org.apache.spark.sql.catalyst.analysis.Analyzer.scala lazy val batches: Seq[Batch] = Seq( //...不需要people.address,那么可以将address字段丢弃 //@see http://blog.csdn.net/oopsoom/article/details/38121259 //org.apache.spark.sql.catalyst.optimizer.Optimizer.scala

2.7K20

源码解析之Parser

我们写的sql语句只是一个字符串而已,首先需要将其通过词法解析和语法解析生成语法树,Spark1.x版本使用的是scala原生的parser语法解析器,从2.x后改用的是第三方语法解析工具ANTLR4,...antlr4的使用需要定义一个语法文件,sparksql的语法文件的路径在sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser.../SqlBase.g4 antlr可以使用插件自动生成词法解析和语法解析代码,在SparkSQL中词法解析器SqlBaseLexer和语法解析器SqlBaseParser,遍历节点有两种模式Listener...然后在parsePlan中,使用AstBuilder将ANTLR 4语法树结构转换成catalyst表达式逻辑计划logical plan。...[4]") .getOrCreate() spark.sql("select * from table").show(false) --- // 代码2 def sql(sqlText:

2.3K31

Shark,Spark SQLSpark上的Hive以及Apache Spark上的SQL的未来

随着Spark SQLApache Spark effort(HIVE-7292)上新Hive的引入,我们被问到了很多关于我们在这两个项目中的地位以及它们与Shark的关系。...对于SQL用户,Spark SQL提供了最先进的SQL性能并保持与Shark / Hive的兼容性。...有了将在Apache Spark 1.1.0中引入的功能,Spark SQL在TPC-DS性能上击败Shark几乎一个数量级。...Hiveon Spark项目(HIVE-7292) 虽然Spark SQL正在成为SQL on Spark的标准,但我们意识到许多组织已经在Hive上进行了投资。...总之,我们坚信Spark SQL不仅是SQL的未来,而且还是在Spark上的结构化数据处理的未来。我们会努力工作,将在接下来的几个版本中为您带来更多体验。

1.4K20

Apache Hudi集成Spark SQL抢先体验

摘要 社区小伙伴一直期待的Hudi整合Spark SQL的[HUDI-1659](https://github.com/apache/hudi/pull/2645)正在积极Review中并已经快接近尾声...,Hudi集成Spark SQL预计会在下个版本正式发布,在集成Spark SQL后,会极大方便用户对Hudi表的DDL/DML操作,下面来看看如何使用Spark SQL操作Hudi表。...环境准备 首先需要将[HUDI-1659](https://github.com/apache/hudi/pull/2645)拉取到本地打包,生成SPARK_BUNDLE_JAR(hudi-spark-bundle..._2.11-0.9.0-SNAPSHOT.jar)包 2.1 启动spark-sql 在配置完spark环境后可通过如下命令启动spark-sql spark-sql --jars $PATH_TO_SPARK_BUNDLE_JAR...--conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension

1.5K20

Spark SQL底层执行流程详解(好文收藏)

---- 本文目录 一、Apache Spark 二、Spark SQL发展历程 三、Spark SQL底层执行原理 四、Catalyst 的两大优化 传送门:Hive SQL底层执行过程详细剖析 一...、Apache Spark Apache Spark是用于大规模数据处理的统一分析引擎,基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量硬件之上...SparkSQL-DataFrame诞生 解决问题: Spark SQL 执行计划和优化交给优化器 Catalyst; 内建了一套简单的 SQL 解析器,可以不使用 HQL; 还引入和 DataFrame...三、Spark SQL底层执行原理 Spark SQL 底层架构大致如下: 可以看到,我们写的SQL语句,经过一个优化器(Catalyst),转化为RDD,交给集群执行。...SQL到RDD中间经过了一个Catalyst,它就是Spark SQL的核心,是针对Spark SQL语句执行过程中的查询优化框架,基于Scala函数式编程结构。

3.2K20

2021年大数据Spark(二十三):SparkSQL 概述

Spark SQL的前身是Shark,它发布时Hive可以说是SQL on Hadoop的唯一选择(Hive负责将SQL编译成可扩展的MapReduce作业),鉴于Hive的性能以及与Spark的兼容,...SparkSQL模块主要将以前依赖Hive框架代码实现的功能自己实现,称为Catalyst引擎。...Catalyst: SQL翻译器 SparkSQL 模块      从Spark框架1.0开始发布SparkSQL模块开发,直到1.3版本发布SparkSQL Release版本可以在生产环境使用,此时数据结构为...1)、解决的问题 Spark SQL 执行计划和优化交给优化器 Catalyst; 内建了一套简单的SQL解析器,可以不使用HQL; 还引入和 DataFrame 这样的DSL API,完全可以不依赖任何...SparkSQL模块官方文档:http://spark.apache.org/docs/2.4.5/sql-programming-guide.html

1.1K20

大数据开发:Spark SQL数据处理模块

Spark SQL作为Spark当中的结构化数据处理模块,在数据价值挖掘的环节上,备受重用。自Spark SQL出现之后,坊间甚至时有传言,Spark SQL将取代Hive,足见业内对其的推崇。...今天的大数据开发学习分享,我们就来讲讲Spark SQL数据处理模块。...组件扩展:SQL 语法解析器、分析器、优化器均可重新定义。 性能优化:内存列存储、动态字节码生成等优化技术,内存缓存数据。 多语言支持:Scala、Java、Python、R。...Spark SQL原理及组成 Catalyst 优化: 优化处理查询语句的整个过程,包括解析、绑定、优化、物理计划等,主要由关系代数(relation algebra)、表达式(expression)以及查询优化...Spark SQL执行流程 SqlParser 对 SQL 语句解析,生成 Unresolved 逻辑计划(未提取 Schema 信息); Catalyst 分析器结合数据字典(catalog)进行绑定

77820
领券