Spark -- Spark SQL 简介 数据抽象

Spark SQL 简介

Spark SQL官方介绍

●官网

http://spark.apache.org/sql/

Spark SQL是Spark用来处理结构化数据的一个模块。

Spark SQL还提供了多种使用方式,包括DataFrames APIDatasets API。但无论是哪种API或者是编程语言,它们都是基于同样的执行引擎,因此你可以在不同的API之间随意切换,它们各有各的特点。

 

Spark SQL 的特点

1.易整合

可以使用java、scala、python、R等语言的API操作。

2.统一的数据访问

连接到任何数据源的方式相同。

3.兼容Hive

支持hiveHQL的语法。

兼容hive(元数据库、SQL语法、UDF、序列化、反序列化机制)

4.标准的数据连接

可以使用行业标准的JDBC或ODBC连接。

 

SQL优缺点

●SQL的优点

表达非常清晰, 比如说这段 SQL 明显就是为了查询三个字段,条件是查询年龄大于 10 岁的

  难度低、易学习。

●SQL的缺点

复杂分析,SQL嵌套较多:试想一下3层嵌套的 SQL维护起来应该挺力不从心的吧

机器学习较难:试想一下如果使用SQL来实现机器学习算法也挺为难的吧

 

Hive和SparkSQL

Hive是将SQL转为MapReduce

SparkSQL可以理解成是将SQL解析成'RDD' + 优化再执行

 

Spark SQL数据抽象

DataFrame

●什么是DataFrame

DataFrame是一种以RDD为基础的带有Schema元信息的分布式数据集,类似于传统数据库的二维表格 。

                                                                 

DataSet

●什么是DataSet

DataSet是保存了更多的描述信息,类型信息的分布式数据集。

与RDD相比,保存了更多的描述信息,概念上等同于关系型数据库中的二维表。

与DataFrame相比,保存了类型信息,是强类型的,提供了编译时类型检查,

调用Dataset的方法先会生成逻辑计划,然后被spark的优化器进行优化,最终生成物理计划,然后提交到集群中运行!

                                                                  

DataSet包含了DataFrame的功能,

Spark2.0中两者统一,DataFrame表示为DataSet[Row],即DataSet的子集。

DataFrame其实就是Dateset[Row]

                                                                   

​​​​​​​RDD、DataFrame、DataSet的区别

结构图解

                 

RDD[Person]
          以Person为类型参数,但不了解 其内部结构。
DataFrame
          提供了详细的结构信息schema列的名称和类型。这样看起来就像一张表了
DataSet[Person]
          不光有schema信息,还有类型信息

​​​​​​​

发布了108 篇原创文章 · 获赞 197 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_44036154/article/details/105439155