Spark SQL 是什么_历史和重要性 | 学习笔记

简介: 快速学习 Spark SQL 是什么_历史和重要性

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark SQL 是什么_历史和重要性】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12034


Spark SQL 是什么_历史和重要性

 

前面我们了解到声明式的 SQL,是一个特别重要的数据查询的语言和手段,如果是这样,像 spark 这种大的工具,肯定会试图去支持 SQL,spark 支持 SQL 的时候有什么样的历史,他做了什么样无用的工作呢?

我们接下来说一说 spark SQL 的特点。通过对于 spark SQL 特点的了解,希望大家对于 spark SQL 有一个更深刻的认识,希望大家能理解 spark SQL 为什么要设计成现在的这个样子。


spark SQL的特点

1、历史性

SQL,是数据分析领域一个非常重要的一个查询范式,Spark 一直想去支持这种范式,我们来看一看大概的一个步骤

如下图所示:

image.png

在很久以前,必须要去搞一个在 hadoop 之上去进行 SQL 查询的这样的一个工具,这时业界刚好有一个现成的工具,叫做 Hive,要想能不能继续Hive来进行一些操作?

他就做了一个 Shack 去生成了 SQL 这样的一个项目。

整体上的步骤:

Hive:

解决的问题

Hive 实现了 SQL on Hadoop,使用 MapReduce 执行任务

简化了 MapReduce 任务

新的问题

Hive的查询延迟比较高,原因是使用MapReduce做调度

Shack:

解决的问题

Shark改写Hive的物理执行计划,使用Spark 作业代替

MapReduce 执行物理计划

使用列式内存存储

以上两点使得Shark的查询效率很高

新的问题

Shark 重用了 Hive 的 SQL 解析,逻辑计划生成以及优化,所以

其实可以认为 Shark 只是把 Hive 的物理执行替换为了 Spark 作业

执行计划的生成严重依赖 Hive,想要增加新的优化非常困难

Hive使用 MapReduce 执行作业,所以 Hive 是进程级别的并行,

而 Spark 是线程级别的并行,所以 Hive 中很多线程不安全的代码不适用于 Spark

由于以上问题, Shark 维护了 Hive 的一个分支,并且无法合并进主线,难以为继。

spark SQL:

解决的问题

Spark SQL 使用 Hive 解析 SQL 生成 AST 语法树,将其后的逻辑

计划生成,优化,物理计划都自己完成,而不依赖 Hive

执行计划和优化交给优化器`Catalyst '

内建了一套简单的 SQL 解析器,可以不使用 HQL,此外,还引入和

DataFrame 这样的 DSL API,完全可以不依赖任何 Hive 的组件

hark 只能查询文件,Spark sQL 可以直接降查询作用于 RDD,这

一点是一个大进步

新的问题

对于初期版本的 SparkSQL,依然有挺多问题,例如只能支持 SQL

的使用,不能很好的兼容命令式,入口不够统一等

Dataset:

SparkSQl 在2.0时代,增加了一个新的 API,叫做 Dataset, Dataset 统一和结合了 SQL的访间和命令式 API 的使用,这是一个划时代的进步。

在 Dataset 中可以轻易的做到使用 SQL 查询并且筛选数据,然后使用命令式 API 进行探索式分析。

2、重要性

我们在整个spark阶段的第一天,介绍了 spark,有很多上层的一些工具,比如说 streaming,比如说 graphx,比如说 MUib,这些上层的工具,都是基于 spark SQL。

所以对于整个 spark 体系来说,Spark SQL 很重要,也就是说我们现在接触了两个东西,第一个是我们的 RDD,第二个是 Spark SQL,是基于 RDD 他底层,在我们 spark SQL 上层有很多其他的组件,所以,直接暴露给用户去使用的更多的接口是 sparks,也就是说在这一层,用户用的最多。

image.png

RDD 是底层,它代表根本的运行原理,代表了对于这种过程特别在意的,这种情况下你怎么去处理数据。纯命令的式开发好,离用户最近,用户最多的还是去使用。

这是我们本节,简单介绍一下 spark SQL 为什么出现。根本上来讲,它是什么,其次,我们又介绍了 SQL 的重要性。

相关文章
|
1天前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
|
1月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
36 0
|
1月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
73 0
|
1月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
33 0
|
1月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
43 0
|
1月前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
37 0
|
3月前
|
SQL 存储 分布式计算
|
SQL Java 数据库连接
动态 sql| 学习笔记
快速学习动态 sql。
122 0
|
SQL Java 数据库连接
动态 sql| 学习笔记
快速学习动态 sql。
313 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")

热门文章

最新文章

下一篇
无影云桌面