spark sql 执行流程

这篇具有很好参考价值的文章主要介绍了spark sql 执行流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近学习了spark sql执行流程,从网上搜到了大都是sql解析、analyzer、optimizer阶段、sparkplan阶段,但是我比较好奇的是,这几个阶段是怎么串起来的,于是花了好几天着重从源码层面看看了看具体实现,写了几点自己认为应该注意的地方。

1、command命令的执行过程

spark sql的命令主要分为两种形式:command和普通DML操作。

command从源码测可以看到它属于logicalPlan阶段spark sql执行流程,spark,sql,大数据

从官方文档的解释可以看出,它处理主要是show databases;use ;create table;alter table等 DDL的操作。

它的主要继承子类为RunnableCommand,在它的子类LeafRunnableCommand的具体实现中可以看到DDL的一些命令。

但是我看这些command的时候,发现一些百思不得其解的事情。

spark sql执行流程,spark,sql,大数据

这个RunnableCommand的核心方法为run方法,可以看到它的返回值为Seq[ROW], 并不是我所认为的sparkPlan。

不是说,所有的logicalPlan都要转为sparkPlan,然后再启动spark任务吗?这里为什么没有呢? 

后来我查资料的时候,发现org.apache.spark.sql.execution.command.commands.scala文件中存在以下两个trait.  ExecutedCommandExec和DataWritingCommandExec

spark sql执行流程,spark,sql,大数据

spark sql执行流程,spark,sql,大数据

 在SparkStrategies.scala文件的BasicOperators strategy中使用了这两个类。

spark sql执行流程,spark,sql,大数据

这个BasicOperators在sparkPlanners中进行了定义。

这里就明白了,也就是说大部分的command命令,他们使用的strategy是默认的。也就是说这里并不违背所有logicalPlan必须在sparkPlan里面才能执行的要求。

 2、catalog体系

spark3当前里面分为两种catalog,sessioncatalog,v2sessioncatalog。

它们都由CatalogManager来进行管理。

v2SessionCatalog主要是为了解决multi catalog准备的,需要在配置文件中新增自定义的数据源。

用户需要实现新增的TableCatalog中提供的方法,去访问自己的表、namespace等元数据信息。

这些catalog是如何使用的?

analyzer阶段的构造函数为catalogmanager;

optimizer阶段也会使用catalogmanager;

在物理执行计划阶段也会使用catalogmanager;文章来源地址https://www.toymoban.com/news/detail-625257.html

到了这里,关于spark sql 执行流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 12 | 使用 Spark SQL执行CURL

    Spark SQL 是 Apache Spark 生态系统中的一个组件,它提供了用于结构化数据处理和分析的高级接口。Spark SQL 可以让用户使用 SQL 语言来查询和操作数据,同时也提供了强大的分布式计算能力。下面是关于 Spark SQL、SparkSession 和 DataFrame 的关键点: 1. Spark SQL: 定义 :Spark SQL 是一个

    2024年02月10日
    浏览(33)
  • 解决执行 spark.sql 时版本不兼容的一种方式

    场景描述 hive 数据表的导入导出功能部分代码如下所示,使用 assemble 将 Java 程序和 spark 相关依赖一起打成 jar 包,最后 spark-submit 提交 jar 到集群执行。 在CDH6.3.2 集群(后面称CDH),当程序执行 spark.sql 导入本地磁盘 csv 数据到 hive 表时出现异常(如下),但导出表数据到本地

    2024年02月12日
    浏览(47)
  • 【spark客户端】Spark SQL CLI详解:怎么执行sql文件、注释怎么写,支持的文件路径协议、交互式模式使用细节

    The Spark SQL CLI is a convenient interactive command tool to run the Hive metastore service and execute SQL queries input from the command line. Note that the Spark SQL CLI cannot talk to the Thrift JDBC server. spark SQL Cli 用于运行hive metastore服务和通过命令行执行sql查询。注意,Spark SQL CLI不能和Thrift JDBC server进行通讯。  

    2024年02月08日
    浏览(39)
  • 02 SQL更新语句执行流程

    与查询流程不一样的是,更新流程还涉及两个重要的日志模块。 ​ redo log(重做日志)和 binlog(归档日志) ​ redo log 物理日志 binlog 逻辑日志 WAL 的全称是 Write-Ahead Logging。 关键点就是 先写日志,再写磁盘 ,用来提升更新效率。 具体来说,当有一条记录需要更新的时候,

    2024年02月19日
    浏览(34)
  • 008、体系架构之SQL 执行流程

    元数据的读取 执行器从information_schema当总获取表的元数据信息(table meta),元数据的信息从内存中读取就可以了,因为已经缓存到了information schema。 DistSQL DistSQL:除了点查的语句,例如对多表(t1 t2)的关联查询,转成单表查询(select * from t1 where xx ) (select * from t2 where xx) 再

    2024年02月09日
    浏览(31)
  • 【TiDB理论知识 07】SQL执行流程

    目录 目录 一 DML语句读写流程概要 1 DML语句读流程概要 2  DML语句写流程概要 二 DDL语句的执行流程概要 SQL解析 Parse 与 编译 Compile 读取的执行 写入的执行 DDL的执行 1 DML语句读流程概要 用户发出SQL 被协议层接收 Protocal Layer 通过PD获取时间戳  parse模块 解析SQL,通过词法解析

    2024年02月15日
    浏览(23)
  • 【MySQL】MySQL中SQL执行流程

    连接器(Connector) : 当客户端发送一个连接请求时,连接器负责接受并建立与MySQL服务器的连接。它进行身份验证、权限验证等操作,并为客户端分配一个会话(Session)。 查询缓存(Query Cache) : 在连接建立后,MySQL可以使用查询缓存来提高查询性能。查询缓存会检查当前

    2024年02月11日
    浏览(33)
  • MySQL的体系结构与SQL的执行流程

    如果你在使用MySQL时只会写sql语句的,那么你应该看一下《MySQL优化的底层逻辑》。如果你只了解到sql是如何优化的,那么你应该通过本文了解一下Mysql的体系结构以及sql语句的执行流程。 先来看下MySQL的体系结构,下图是在MySQL官方网站上扒下来的,所以有很高的权威性和准

    2024年02月05日
    浏览(40)
  • MySQL—一条查询SQL语句的完整执行流程

    表结构和数据如下: 我们分析的sql语句如下: 大体来说,MySQL可以分为Server层和存储引擎层两部分: Server层 包括:连接器、查询缓存、分析器、优化器、执行器等 涵盖MySQL的大多数核心服务功能 所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在

    2024年04月28日
    浏览(47)
  • MySQL进阶_5.逻辑架构和SQL执行流程

    不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是: 客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。 上图的处理流程在MySQL5.7和8.0中有所不同,只是一个通用的处理流程,后续会有更详细

    2024年02月05日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包