Spark SQL 介绍

news2025/1/11 17:03:47

文章目录

  • Spark SQL
    • 1、Hive on SparkSQL
    • 2、SparkSQL 优点
    • 3、SparkSQL 特点
      • 1) 容易整合
      • 2) 统一的数据访问
      • 3) 兼容 Hive
      • 4) 标准的数据连接
    • 4、DataFrame 是什么
    • 5、DataSet 是什么

Spark SQL

Spark SQL 是 Spark 用于结构化数据(structured data) 处理的Spark模块。

1、Hive on SparkSQL

SparkSQL 的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具。
Hive 是早期唯一运行在Hadoop 上的SQL-on-Hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,降低的运行效率,为了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop 工具开始产生,其实表现较为突出的是:

  • Drill

  • Impala

  • Shark
    其中 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于Hive 所开发的工具,它修改了内存管理,物理计划,执行三个模块,并使之能运行在Spark引擎上。Shark 的出现,使得SQL-on-Hadoop 的性能比 Hive 有了10-100倍的提高。
    但是,随着Spark 的发展,对于野心勃勃的 Spark 团队来说,Shark 对于 Hive 的太多依赖(如采用Hive的语法解析器,查询优化器等等),制约了 Spark 的 One Stack Rule Them All 的既定方针,制约了 Spark 各个组件的相互集成,所以提出了SparkSQL 项目。SparkSQL 抛弃原有Shark的代码,汲取了Shark的一些优点,如内存列存储(In-Memory Colummnar Storage)、Hive 兼容性等,重新开发了SparkSQL代码,由于摆脱了对Hive的依赖性,SparkSQL 无论在数据兼容,性能优化,组件扩展方面都得到了极大的方便。

  • 数据兼容方面:SparkSQL 不但兼容 Hive,还可以从RDD,parquet 文件,JSON 文件中怕哪个获取数据,未来版本甚至支持获取RDBMS 数据 、以及cassandra 等 NoSQL 数据。

  • 性能优化方面:除了采取In-Menory Columnar Storage,byte-code generation 等优化技术外,将会引进Cost Model 对查询进行动态评估,获取最佳物理计划等等。

  • 组件扩展方面:无论是SQL的语法解析器,分析器还是优化器都可以重新定义,进行扩展。

2、SparkSQL 优点

SparkSQL 作为Spark生态圈的一员继续发展,而不再受限于Hive,只是兼容Hive,而Hive on Spark 是一个Hive 的发展计划,该计划将Spark 作为 Hive 的底层引擎之一,也就是说,Hive将不再受限于一个引擎,可以采用Map-Reduce,Tez,Spark 等引擎。
对于开发人员来讲,SparkSQL 可以简化 RDD 的开发,提高开发效率,且执行效率非常快,所以实际工作中,基本上采用的就是SparkSQL,Spark SQL 为了简化RDD的开发,提高开发效率,提供了2个编程抽象,类似SparkCore中的RDD。
DataFrame 和 DataSet

3、SparkSQL 特点

1) 容易整合

无缝的整合了 SQL 查询和 Spark 编程。

2) 统一的数据访问

使用相同的方式连接不同的数据源。比如:MYSQL啊,Hbase,Hive之类的。

3) 兼容 Hive

在已有的仓库上直接运行 SQL 或者 HiveSQL

4) 标准的数据连接

通过 JDBC 或者 ODBC。

4、DataFrame 是什么

在 Spark 中,DataFrame 是一种以 RDD 为基础的分布式是数据集,类似于传统数据库中的二维表格。DataFrame 与 RDD 的主要区别在于,前者带有 schema 元信息,即 DataFrame 所表示的二维表数据集的每一列都带有名称和类型。这使得 Spark SQL 得以洞察更多的结构信息,从而对藏于 DataFrame 背后的数据源以及作用于 DataFrame 之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。反观 RDD,由于无从得知所存数据元素的具体内部结构,Spark Core 只能在 stage 层面进行简单,通用的流水线优化。
同时,与 Hive 类似,DataFrame 也支持嵌套数据类型(struct,array,和 map )从API易容性的角度上看,DataFrame API 提供的是一套高层的关系操作,比函数式的RDD API 要更加友好,门槛更低。
在这里插入图片描述
上面这张图直观地体现了 DataFrame 和 RDD的区别。
左侧的 RDD[Person] 虽然以 Person 为参数类型,但 Spark 框架本身不了解 Person 类的内部结构。而右侧的DataFrame 却提供了详细的结构信息,使得 Spark SQL 可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。
DataFrame 是为数据提供了Schema(元数据)的视图。可以把它当做数据库中的一张表来对待,DataFrame 也是懒执行的,但性能上比RDD 要高,主要原因:优化的执行计划,即查询计划通过 Spark catalyst optimiser 进行优化。

5、DataSet 是什么

DataSet 分布式数据集合。DateSet 是Spark1.6 中添加的一个新抽象,是DataFrame 的一个扩展。它提供了 RDD 的优势(强类型,使用强大的lamba函数的能力)以及 Spark SQL 优化执行引擎的特点。DataSet 也可以使用功能性的转换(操作map,flatMap,fliter 等等)。

  • DataSet 是 DataFrame API 的一个扩展,是 SparkSQL 最新的数据抽象
  • 用户友好的API风格,既具有类型安全检查也具有 DataFrame 的查询优化特性
  • 用样例类来对 DataSet 中定义数据的结构信息,样例类中每个属性的名称直接映射到 DataSet 中的字段名称
  • DataSet 是强类型的。比如可以有DataSet[Car],DataSet[Person]。
  • DataFrame 是 DataSet 的特例,DataFrame=DataSet[Row] ,所以可以通过 as 方法将DataFrame 转换为 DataSet。Row 是一个类型,跟 Car,Person 这些的类型都一样,所有的表结构信息都用Row来表示。获取数据时需要制定顺序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

维基百科数据抽取

1. 数据路径 https://dumps.wikimedia.org/enwiki/latest/ ----英文 https://dumps.wikimedia.org/zhwiki/latest/ ----中文 https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2 --下载最新的 https://dumps.wikimedia.org/wikidatawiki/2023…

公司招了个腾讯P7:闲聊后被我套出拿下35Koffer的面试技巧

早上一进公司就见人事热热闹闹的带人办入职手续,早之前听说公司将来一个腾讯离职的同事,薪资已达中上水平,大家都很好奇到底是怎样的人才,果不其然,让我们见识到什么是测试天花板 在新人见面会上,自动化、测…

web开发

目录 使用Idea搭建Web项目 使用Idea开发Web项目基本知识 tomcat配置信息 HTML /CSS 开发主页 Servlet 学习和掌握的内容: HTML/CSSServlet MVC模式和Web开发数据库基本应用和JDBC应用软件项目开发流程 环境及工具版本: Windows10,JDK1.8 Idea2…

【C++】基于范围的for循环 (C++11)

基于范围的for循环 C11 一、范围for的基本语法二、范围for中使用引用 &#xff08;一些奇葩的问题&#xff09;讨论三、范围for的使用条件一、范围for的基本语法 在C98中如果要遍历一个数组&#xff0c;可以按照以下方式进行&#xff1a; #include<iostream> using nam…

分享111个JS焦点图代码,总有一款适合您

分享111个JS焦点图代码&#xff0c;总有一款适合您 111个JS焦点图代码下载链接&#xff1a;https://pan.baidu.com/s/1GxjW5m9DNOPEQd-Qf_gGSA?pwd4aci 提取码&#xff1a;4aci Python采集代码下载链接&#xff1a;https://wwgn.lanzoul.com/iKGwb0kye3wj jQuery宽屏左右…

锦正茂EM3电磁铁的技术参数

产品特点&#xff1a; ※U形结构、视野开阔、磁场强度高、磁场强度大小调节方便 ※体积小、重量轻、占空比小、结构紧凑、磁场性能更佳 ※电磁铁的工作气隙调节轻便灵活&#xff0c;极头处设有螺纹&#xff0c;更换极头装卸方便 ※可选配工作间隙刻度指示 ※小气隙时用于铁…

代理模式(Proxy Pattern)

代理模式定义&#xff1a; 提供了对目标对象另外的访问方式&#xff1b;即通过代理对象访问目标对象。举个例子&#xff1a;猪八戒去找高翠兰结果是孙悟空变的&#xff0c;可以这样理解&#xff1a;把高翠兰的外貌抽象出来&#xff0c;高翠兰和孙悟空都实现了这个接口&#xff…

跨境电商选品重要吗?

选品很重要&#xff01;跨境电子商务选择的核心要求&#xff1a;优质商品&#xff0c;价格优势&#xff0c;符合跨境销售特点&#xff0c;满足目标海外市场需求&#xff0c;突出自身特色竞争优势。跨境电商是如何选择产品的&#xff1f;这个问题也很流行&#xff0c;应该考虑以…

面试-java Spring 一

一.Spring两大特性 控制反转(IoC)&#xff1a;就是创建对象的控制权&#xff0c;被反转到了Spring框架上。通常我们实例化一个对象时&#xff0c;都是使用类的构造方法来new一个对象&#xff0c;这个过程是由我们自己来控制的&#xff0c;而控制反转就把new对象的工交给了Spri…

加拿大访问学者家属如何办理探亲签证?

由于大多数访问学者的访学期限都为一年&#xff0c;家人来访不仅可以缓解访学的寂寞生活&#xff0c;而且也是家人到加拿大体验国外风情的好机会。家属在国内申请赴加签证时&#xff0c;如果材料齐全&#xff0c;一般上午递交了申请&#xff0c;下午就可以拿到签证。以下是家人…

mongo DB数据库bindIP的配置和我的理解(bindIP不是应用服务器的IP)

先批评这个文章&#xff01;典型的错误&#xff0c;bindIP根本不是绑定哪一个ip的 背景&#xff1a;最近在阿里云上搭建overleaf的web服务集群&#xff0c;数据库和应用服务器分离&#xff0c;一口气买了三台服务器准备开始干活。overleaf用的是mongodb&#xff0c;我本来准备…

【多道批处理系统】计算完成两个作业需要的最少时间,并图文叙述

一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达, 它们的计算和I/O操作顺序如下。 P1:计算60ms,I/O操作80ms,计算20ms。 P2:计算120ms,I/O操作40ms,计算40ms。 不考虑调度和切换时间,请计算完成两个作业需要的最少时间&#xff0c;并图文叙述两个作业的执行情况。

[开源]ChatGPT-OpenAI注册使用保姆级教程?[开箱可用][免费使用]

[开源]ChatGPT-OpenAI注册使用保姆级教程?[开箱可用][免费使用]ChatGPT是什么?1.ChatGPT官网2.一部分打不开的ChatGPT官网3.如何开始真实的ChatGPT官网之旅...3.1有美国IP的服务器3.2一个chrome浏览器插件ChatGPT for Google3.3打开了...4.获取用户输入正确的手机号(美国)4.1…

mysql explain 执行计划 超简单入门介绍与sql案例以及常用sql优化方案

explain说明 EXPLAIN是MySQl必不可少的一个分析工具&#xff0c;主要用来测试sql语句的性能及对sql语句的优化&#xff0c;或者说模拟优化器执行SQL语句。 在select语句之前增加explain关键字&#xff0c;执行后MySQL就会返回执行计划的信息 而不是执行sql。但如果from中包含子…

Ubuntu安装搜狗输入法

目前搜狗输入法已支持Ubuntu1604、1804、1910、2004、20101、添加中文语言支持&#xff0c;并使用fcitx输入法框架&#xff08;搜狗输入法基于fcitx&#xff09;打开 系统设置——区域和语言——管理已安装的语言——在“语言”tab下——点击“添加或删除语言”弹出“已安装语言…

RabbitMq相关面试题

文章目录消息队列有没有接触过&#xff1f; 简单介绍一下&#xff1f;消息中间件模式分类 &#xff1f;使用MQ有什么好处&#xff1f;MQ如何选型 &#xff1f;你们项目中用到过 MQ 吗&#xff1f;谈谈你对 MQ 的理解&#xff1f;MQ消费者消费消息的顺序一致性问题&#xff1f;R…

蓝桥杯-单片机类客观题真题解析

2017年第八届(国赛) 选项A 用于中断 选项B code :程序存储区(64KB) idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同,是用类似C中的指针方式访问的。 data:固定指前面0x00-0x7f的128个RAM,可以直接读写的,速度最快,生…

如何降低输电线路在线监控摄像头的功耗呢?

输电线路视频/图像监测装置通过安装在线路杆塔上的摄像头&#xff0c;将线路走廊、通道、杆塔、绝缘子、导线、金具等的图像&#xff0c;经无线公网&#xff08;4G/3G&#xff09;传输到监控中心平台上&#xff0c;使管理者和运维人员通过办公电脑&#xff0c;就可实时掌握现场…

内存检测工具Dr.Memory在Windows上的使用

之前在https://blog.csdn.net/fengbingchun/article/details/51626705 中介绍过Dr.Memory&#xff0c;那时在Windows上还不支持x64&#xff0c;最新的版本对x64已有了支持&#xff0c;这里再总结下。 Dr.Memory源码地址https://github.com/DynamoRIO/drmemory&#xff0c;最新发…

计算机网络概念——应用层email协议

1. email的工作方式。电子邮件中有四个重要的组成部分&#xff1a;邮件服务器&#xff08;电子邮件体系结构的核心&#xff0c;为其用户提供邮箱服务&#xff08;管理、维护用户报文的服务&#xff09;&#xff0c;并起到邮件服务器间相互通信的作用&#xff09;、用户代理&…