Spark SQL面试题

article/2025/10/3 15:42:23

1.RDD DataFrame DataSet的区别

(1) 三者之间的关系

DataFrame是特殊的RDD(它相当于RDD+schema,即RDD+表信息),可以将他看成数据库中的一张数据表,但是只知道这个"表"中的各个字段,不知道各个字段的数据类型。
Dataset是DataFrame的父类,当Dataset中存储Row(Row是一个类型,跟Car、Person这些的类型一样,所有的表结构信息我都用Row来表示)时,两者等价(Dataset[Row]=DataFrame)。

(2) 各自优缺点

RDD

优点:
编译时类型安全:编译时就能检查出类型错误;
面向对象的编程风格:直接通过对象调用方法的形式来操作数据

缺点:
序列化和反序列化的性能开销大:无论是集群的通信,还是IO操作,都需要对对象的结构和数据进行序列化和反序列化。
GC(垃圾回收)的性能开销大:频繁的创建和销毁对象,增加了GC的负担。

 DataFrame

优点:DataFrame通过引入schema (即数据的结构信息)和off-heap(不在堆里面的内存,使用操作系统上的内存), Spark通过schame就能够读懂数据, 因此在通信和IO时就只需要序列化和反序列化数据, 而结构的部分就可以省略了;通过off-heap引入,可以快速的操作数据,避免大量的GC。

缺点:DataFrame不是类型安全的, API也不是面向对象风格的。

DataSet

Dataset兼容了RDD和DataFrame的优点,使用在以后的spark中,Dataset将会逐步代替RDD和DataFrame的使用。

2.Catalyst工作流程

任何一个优化器工作原理都大同小异:SQL语句首先通过Parser模块被解析为语法树,此棵树称为Unresolved Logical Plan;Unresolved Logical Plan通过Analyzer模块借助于数据元数据解析为Logical Plan;此时再通过各种基于规则的优化策略进行深入优化,得到Optimized Logical Plan;优化后的逻辑执行计划依然是逻辑的,并不能被Spark系统理解,此时需要将此逻辑执行计划转换为Physical Plan;为了更好的对整个过程进行理解,下文通过一个简单示例进行解释。

3.spark SQL运行流程

1)对读入的sql语句进行解析

  • 分辨出sql语句中有哪些是关键词(如:select,from,where),哪些是表达式,哪些是Projection,哪些是Data Source等
  • 判断sql语句是否规范

2)将sql语句和数据库的数据字典进行绑定

  • 数据字典:列,表,视图等
  • 若相关的Projection DataSource 等都是存在的话,就表示该sql语句是可以执行的

3)数据库选择最优执行计划

  • 数据库会提供几个执行计划,这些计划都会运行统计数据
  • 数据库会从上述各种执行计划中选择一个最优计划

4)执行计划

  • 按照Operation(操作)–>DataSource(数据源)–>Result的次序来执行
  • 在执行的过程中有时候甚至不需要读取物理表就可以返回结果,比如重新运行刚运行的sql语句,可直接从数据库的缓冲池中返回结果


http://chatgpt.dhexx.cn/article/ZEZMAh9t.shtml

相关文章

SQL常见面试题

SQL常见面试题关系型数据库(SQL)非关系型数据库(NoSQL)数据库三大范式主键与外键CHAR与VRCHAR数据类型临时表数据库函数、触发过程与存储器 SQL语句SQL语言分类DROP、TRUNCATE、DELETE的区别sum、count(\*)、count(1)、count(colu…

常见的SQL面试题:经典50例

SQL基础知识整理 select 查询结果,如: [学号,平均成绩:组函数avg(成绩)] from 从哪张表中查找数据,如:[涉及到成绩:成绩表score] where 查询条件,如:[b.课程号0003 and b.成绩>80] group by 分组,如:…

5个必考的大厂SQL面试题

学Python的同学,SQL也一定要学习,SQL几乎是每个数据岗的必备题目,下面分享几个常见的大厂SQL习题。 (1)找出连续7天登陆,连续30天登陆的用户(小红书笔试,电信云面试)&am…

7 大开源数据库利弊全对比

1、CUBRID CUBRID 是一个很好的免费开源选择,专门针对 Web 应用程序进行优化,当复杂的 Web 服务需要处理大量数据并生成巨大的并发请求时,CUBRID 非常有用。这个解决方案是用 C 写的。 优点: 多粒度锁定 在线备份 用于开发语言…

还在用Navicat?这款开源的数据库管理工具界面更炫酷!

数据库管理工具,是后端程序员使用频率非常高的的工具。Navicat、DataGrip虽然很好用,但都是收费的。最近在逛Github的时候,无意间发现了一款开源的数据库管理工具Beekeeper Studio,界面非常炫酷推荐给大家! Beekeeper…

开源数据库管理系统现在比商业产品更受欢迎

原文链接:https://db-engines.com/en/blog_post/86 2021年1月13日 作者:马蒂亚斯盖尔曼(Matthias Gelbmann) Matthias Gelbmann是奥地利维也纳Solid IT联合创始人,董事总经理兼顾问。 Matthias Gelbmann在维也纳学习了…

你了解世界上功能最强大的开源数据库吗?

如果不是领导强制要求,可能根本不会留意到这款号称世界上功能最强大的开源数据库——PostgreSQL。如果你不读这篇文章,或许也会错过一个跃跃欲试想挤进前三的优秀数据库。 为了能够熟练运用,特意买书研究,发现这款数据库还真有点…

开源数据库列表

转载于:http://database.csdn.net/subject/databaseopen.htm 编辑导语 开源数据库最初的诞生和发展大都依靠自由软件开发者,但是,现在越来越多的IT公司开始把触角伸向了开源数据库。而早期投身于其中的IT厂商早已获利,比如Sleepy…

TuGraph 开源数据库体验

TuGraph 开源数据库体验 文章目录 TuGraph 开源数据库体验1. 简单介绍2. 可视化界面体验:查询界面:数据建模:数据导入: 3. 体验心得: 1. 简单介绍 TuGraph 是蚂蚁集团自主研发的大规模图计算系统,提供图数…

数据库与开源的未来

大家好,社区的小伙伴可能已经发现CnosDB已经全面拥抱Rust。我们一直高度关注行业趋势的发展,拥抱新兴的语言和前沿的技术。本期Jesse就想跟大家聊聊数据库与开源的未来。 本文仅代表个人观点,如有偏颇之处,还请海涵~ …

做了7年开源数据库开发,我学到了什么?

作者 | PHILIP OTOOLE,已获作者授权 译者 | 弯月 责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 2016年4月9日,第一版rqlite(https://github.com/rqlite/rqlite/releases/tag/v1.0)正式发布&a…

【数据库】什么是 PostgreSQL?开源数据库系统

文章目录 前言什么是 PostgreSQL?PostgreSQL 中的 SQL服务器管理接口 PostgreSQL 用途通用 OLTP:联合中心:地理空间:LAPP 堆栈: 使用 PostgreSQL 有什么好处?开源许可证:易于扩展:可…

这款免费开源的数据库工具,支持所有主流数据库!

Java技术栈 www.javastack.cn 关注阅读更多优质文章 DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好的 ASL 协议。可以通过官方网站或者 Github 进行下载。 由于 DBeaver 基于 Java 开发,可以运行在各种操作…

开源数据库管理系统DBeaver

简介 DBeaver dbeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具。 易用性是该项目的主要目标,是经过精心设计和开发的数据库管理工具。免费、跨平台、基于开源框架和允许各种扩展写作(插件)。 它支持任…

开源数据库的国际化思考与实践

整理 | 小雨青年 出品 | CSDN(ID:CSDNnews) 在全球开源技术掌门人高峰论坛上,PingCAP 联合创始人兼CTO 黄东旭分享了《开源数据库的国际化思考与实践》。 开源已死?不,还差得远 可能因为TiDB 是开源的&a…

一个比 ClickHouse 还快的开源数据库

开源分析数据库 ClickHouse 以快著称,真的如此吗?我们通过对比测试来验证一下。 ClickHouse vs Oracle 先用 ClickHouse(简称 CH)、Oracle 数据库(简称 ORA)一起在相同的软硬件环境下做对比测试。测试基准使…

Java开源数据库引擎,数据库计算封闭性的一站式解决方案

目录 前言引入一、数据库封闭性带来的问题?问题1: ETL变成ELT甚至LETETL:ELT: 问题2: 中间表带来的资源消耗和耦合问题3: 多样性数据源问题4: 存储过程带来的安全和耦合问题问题5: 大数据性能导致的尴尬 二、开放的SPL解决方式多样源直接计算…

比较适合物联网的开源数据库

物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。物联网数据的本质需要一种不同类型的数据库。以下是一些数据库,当与物联网一起使用时,会给出非常好的结果。 物联…

阿里巴巴开源的免费数据库工具Chat2DB

Chat2DB 是一款由阿里巴巴开源的免费数据库工具,它为开发人员提供了一个强大且易于使用的平台,用于存储和查询数据。与传统的数据库工具相比,Chat2DB 具有以下特点和优势: 多数据库支持:Chat2DB 可以与多种类型的数据库…

21款最优秀的开源数据库

摘要:几乎所有软件项目的开发都需要数据库的支持,目前,随着开源技术的迅速发展,越来越多的数据供应商选择开源数据库,为开源事业添砖加瓦。 作为一名软件开发人员或DBA,其中一份必不可少的工作就是与数据库…