SparkSQL 是什么_适用场景 | 学习笔记

简介: 快速学习 SparkSQL 是什么_适用场景

开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第三阶段:SparkSQL 是什么_适用场景】学习笔记,与课程紧密联系,让用户快速学习知识。

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


SparkSQL 是什么_适用场景

 

在说 spark SQL 应用场景之前,有必要先去补充一下关于数据集的分类,然后,再去说使用场景。这是我们整个小节的作用,通过对于 spark 应用场景的理解,大家会更容易去理解 spark SQL 是干什么。

 

Sparks SQL 的应用场景

1、数据集的分类

数据集主要分为三类,一类叫做结构化数据,一类叫做半结构化数据,一类叫做非结构化数据。

(1)结构化数据

一般指数据有固定的 Schema,例如在用户表中, name 字段是 String 型,每一条数据的 name 字段值都可以当作 String 来使用。

首先对于结构化数据集,对于 Michael 的一张表,他就是一个结构化的数据,就是有非常明确的约束,比如说,一个表里面有三列,第一列叫做 name,第二列叫做 age,第三列叫做 score,你在使用这个 insert 来去插入数据的时候,只能按照这个模式来进行插入,这是第一方面,这是我们说的这个结构化第一方面,就是这个字段要约束。

第二点,你如果往这个 name 列里面插数据,假设说这个 name 列,一开始规定好了是 string,是一个误差,不能往里面插一个 ins,对于字段类型也有约束,我们称之为结构化数据。

他有非常严格的约束,不符合这个约束插不进去,比如说 Michael 的表,不符合插不进去,所以这张表,我们就称之为叫做结构化数据,一般情况下,结构化数据也特指的就是各种关系型数据库当中的表。

(2)半结构化数据

一般指的是数据没有固定的 Schema,但是数据本身是有结构的。

有一些数据集,其中也是有一些约束,并且它也有字段的这个概念,你看字段这个概念,并且这个字段概念当中,他也有这个类型的概念。比如说,在 Jason 当中,他如果加上这样的一个引号,它就是一个字符串,没有加这个引号,直接来一个 int,我们就称之为叫做 membership。

他有这个字段的一些约束,有这个字段的这个列,第二点,每一列有数据类型,每一列也有类型,他和结构化数据有什么区别?

区别就在于,虽然你这个地方指定了,这叫 first last name age,如果想再去增加一列也可以,就是说它没有一个严格的约束,这个数据集必须长成什么样子,不符合会怎么样,这种就称之为叫做半结构化数据,不是说半结构化数据它没有结构,只是说他没有约束,可以随意的去修改,它也有结构,但你可以去修改。

(3)非结构化数据

没有固定 Schema。

指的是半结构化数据是没有固定的 Schema 的,可以理解为没有显式指定 Schema。

比如说一个用户信息的 JSON 文件,第一条数据的 phone_num 有可能是 String,第二条数据虽说应该也是 String,但是如果硬要指定为 BigInt,也是有可能的。

因为没有指定 schema,没有显式的强制的约束。

有结构

虽说半结构化数据是没有显式指定 Schema 的,也没有约束,但是半结构化数据本身是有有隐式的结构的,也就是数据自身可以描述自身。例如 JSON 文件,其中的某一条数据是有字段这个概念的,每个字段也有类型的概念,JSON 是可以描述自身的,也就是数据本身携带有元信息。

2、适用场景

了解了三种数据的形态,sparks SQL 更适合用哪种数据来进行操作的呢?它更适合做什么样的这个数据集的操作呢?

l Spark 的 RDD 主要用于处理非结构化数据和半结构化数据

l SparksQL 主要用于处理结构化数据

注意:

虽然 SparkSQL 是基于 RDD 的,但是 SparkSQL 的速度比 RDD 要快很多。

SparkSQL 在编写的时候可以通过更方便针对于结构化数据的 API 来进行更好的操作。

SparkSQL 相较于 RDD 的优势在哪?

l SparksQL 提供了更好的外部数据源读写支持

因为大部分外部数据源是有结构化的,需要在 RDD 之外有一个新的解决方案,来整合这些结构化数据源

l SparksQL 提供了直接访问列的能力

因为 SparkSQL 主要用做于处理结构化数据,所以其提供的 API 具有一些普通数据库的能力。

相关文章
|
10月前
|
SQL 机器学习/深度学习 分布式计算
Spark5:SparkSQL
Spark5:SparkSQL
101 0
|
10月前
|
存储 分布式计算 资源调度
Spark笔记(pyspark)1
Spark笔记(pyspark)
95 0
|
10月前
|
分布式计算 资源调度 Java
Spark笔记(pyspark)2
Spark笔记(pyspark)
106 0
|
分布式计算 监控 算法
Sparkstreaming 介绍 场景 | 学习笔记
快速学习 Sparkstreaming 介绍 场景
107 0
Sparkstreaming 介绍 场景 | 学习笔记
|
SQL 分布式计算
SparkSQL实践
SparkSQL实战:统计用户及商品数据指标,包含以下三张表
147 0
SparkSQL实践
|
机器学习/深度学习 消息中间件 分布式计算
Sparkstreaming 介绍-特点 | 学习笔记
快速学习 Sparkstreaming 介绍-特点
178 0
|
SQL 缓存 分布式计算
SparkSQL 初识_2
快速学习 SparkSQL 初识_2
118 0
SparkSQL 初识_2
|
分布式计算 资源调度 算法
Spark 初识 3 | 学习笔记
快速学习 Spark 初识 3
Spark  初识 3   | 学习笔记
|
缓存 分布式计算 算法
SparkSQL 初识_1
快速学习 SparkSQL 初识_1
134 0
|
SQL 分布式计算 数据挖掘
SparkSQL初识_4
快速学习SparkSQL初识_4
127 0