Spark Sql概述

Spark Sql概述,第1张

Spark Sql概述 Spark sql概述 1.1 什么是Spark sql

Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。与基本的 Spark RDD API 不同, Spark SQL 的抽象数据类型为 Spark 提供了关于数据结构和正在执行的计算的更多信息。Spark SQL 它提供了2个编程抽象, 类似 Spark Core 中的 RDD
1. Dataframe
2. DataSet

1.2 Spark SQL 的特点 1. 2.1 Integrated(易整合)

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

1.2.2 Uniform Data Access(统一的数据访问方式)

使用相同的方式连接不同的数据源。

1.2.3 Hive Integration(集成 Hive)

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

1.2.4 Standard Connectivity(标准的连接方式)

通过 JDBC 或者 ODBC 来连接。

1.3 什么是 Dataframe

与 RDD 类似,Dataframe 也是一个分布式数据容器。同时与Hive类似,Dataframe也支持嵌套数据类型(struct、array和map)。

上图直观地体现了Dataframe和RDD的区别。
左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解Person类的内部结构。
而右侧的Dataframe却提供了详细的结构信息,使得 Spark SQL 可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。
Dataframe是为数据提供了Schema的视图。可以把它当做数据库中的一张表来对待,
Dataframe也是懒执行的。

1.4 什么是 DataSet
  1. 是Dataframe API的一个扩展,是 SparkSQL 最新的数据抽象(1.6新增)。
  2. 用户友好的API风格,既具有类型安全检查也具有Dataframe的查询优化特性。
  3. Dataset支持编解码器,当需要访问非堆上的数据时可以避免反序列化整个对象,提高了效率。
  4. 样例类被用来在DataSet中定义数据的结构信息,样例类中每个属性的名称直接映射到DataSet中的字段名称。
  5. Dataframe是DataSet的特列,Dataframe=DataSet[Row] ,所以可以通过as方法将Dataframe转换为DataSet。Row是一个类型,跟Car、Person这些的类型一样,所有的表结构信息都用Row来表示。
  6. DataSet是强类型的。比如可以有DataSet[Car],DataSet[Person].
  7. Dataframe只是知道字段,但是不知道字段的类型,所以在执行这些 *** 作的时候是没办法在编译的时候检查是否类型失败的,比如你可以对一个String进行减法 *** 作,在执行的时候才报错,而DataSet不仅仅知道字段,而且知道字段类型,所以有更严格的错误检查。就跟JSON对象和类对象之间的类比。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5653631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存