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 的重要性。

相关文章
|
6天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
4月前
|
存储 SQL 分布式计算
性能优化:Spark SQL中的谓词下推和列式存储
性能优化:Spark SQL中的谓词下推和列式存储
|
4月前
|
SQL 分布式计算 测试技术
使用UDF扩展Spark SQL
使用UDF扩展Spark SQL
|
4月前
|
SQL 数据采集 分布式计算
Spark SQL中的聚合与窗口函数
Spark SQL中的聚合与窗口函数
|
4月前
|
SQL JSON 分布式计算
Spark SQL简介与基本用法
Spark SQL简介与基本用法
|
4月前
|
SQL 分布式计算 数据处理
Spark的生态系统概览:Spark SQL、Spark Streaming
Spark的生态系统概览:Spark SQL、Spark Streaming
|
4月前
|
SQL OLAP Serverless
第五章:SQL高级处理---SQL学习笔记
第五章:SQL高级处理---SQL学习笔记
41 0
|
4月前
|
SQL 关系型数据库 MySQL
第四章:集合运算---SQL学习笔记
第四章:集合运算---SQL学习笔记
61 0
|
4月前
|
机器学习/深度学习 SQL 分布式计算
Apache Spark 的基本概念和在大数据分析中的应用
介绍 Apache Spark 的基本概念和在大数据分析中的应用
162 0
|
1月前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。

热门文章

最新文章