Spark SQL 简介
什么是Spark SQL
SparkSQL是Spark用来处理结构化数据的一个模块。
Spark SQL 特性
-
易整合
Spark SQL将SQL查询与Spark程序无缝混合,可以使用python,java等不同的语言进行代码开发 -
统一的数据源访问
以相同的方式连接到任何数据源,sparksql后期可以采用一种统一的方式去对接任意的外部数据源,不需要使用不同的Api -
兼容HIVE
sparksql可以支持hivesql这种语法 sparksql兼容hivesql

-
支持标准的数据库连接
sparksql支持标准的数据库连接JDBC或者ODBC

DataFrame
DataFrame 是一个由具名列组成的数据集。它在概念上等同于关系数据库中的表或 R/Python 语言中的 data frame。 由于 Spark SQL 支持多种语言的开发,所以每种语言都定义了 DataFrame 的抽象:
| 语言 | 主要抽象 |
|---|---|
| Scale | Dataset[Row] |
| Java | Dataset< Row > |
| Python | DataFrame |
| R | DataFrame |
DataFrame VS RDD

- DataFrame面向结构化数据,内部有明确的Scheme结构,即列名、列字段类型都是已知的;RDD面向的非结构化数据
- DataFrame引入了off-heap,大量的对象构建直接使用操作系统层面上的内存,不再使用heap堆中的内存,这样一来heap堆中的内存空间就比较充足,不会导致频繁GC,程序的运行效率比较高;而构建大量的java对象占用了大量heap堆空间,导致频繁的垃圾回收GC。
- DataFrame引入了schema,后期spark程序中的大量对象在进行网络传输的时候,只需要把数据的内容本身进行序列化就可以,数据结构信息可以省略掉。这样一来数据网络传输的数据量是有所减少,数据的序列化和反序列性能开销就不是很大了;而RDD数据的序列化和反序列性能开销很大
Datasets
Dataset 是分布式的数据集合,在 Spark 1.6 版本被引入,它具备RDD(强类型,支持Lambda函数)和Spark SQL优化的执行引擎的优点。
在 Scala 和 Java 语言中使用。Dataset API有Scala和Java两种版本。Python不支持Dataset API。但是,由于Python的动态特性,Dataset API的许多优点已经可用。R语言类似。
RDD 、DataFrame、Dataset区别

SparkSQL是Spark的一个模块,用于处理结构化数据,它实现了SQL查询与Spark程序的无缝结合,支持多种语言如Python、Java。SparkSQL提供统一的数据源访问,兼容Hive SQL,并能通过JDBC或ODBC连接标准数据库。DataFrame作为其核心抽象,是一种带有列结构的数据集,类似于数据库表或R/Python的dataframe。DataFrame相比于RDD更高效,因为它使用off-heap内存并引入schema,减少了数据传输和序列化的开销。此外,Dataset是Spark1.6引入的,结合了RDD的强类型和优化执行引擎的优点。
2704

被折叠的 条评论
为什么被折叠?



