1.1 Spark SQL 是什么
Spark SQL 是 Apache Spark 的用于处理结构化数据(Structured Data)的模块。
1.2 Spark SQL 特点
集成: Spark 程序可实现与 SQL 查询的无缝对接。我们可以通过 Java、Scala、Python 或 R 语言利用 Spark SQL 将结构化数据作为 Spark 中的弹性分布式数据集(RDD)进行查询。
统一的数据访问: DataFrames 和 SQL 提供了访问各种数据源的通用方法,包括 Hive、Avro、Parquet、ORC、JSON 和 JDBC。
兼容 Hive: 可实现在现有仓库上运行 SQL 或 HiveQL 查询。Spark SQL 支持 HiveQL 语法以及 Hive SerDes 和 UDF。
标准数据连接: 通过 JDBC 或 ODBC 连接。
1.3 Spark SQL 数据抽象
Spark Core 中的数据抽象为 RDD(弹性分布式数据集),Spark SQL 中的数据抽象为 DataFrame、DataSet。
RDD、DataFrame、DataSet 在版本上的区别:
RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6)
DataFrame 与 DataSet的关系:
在 Spark API 中,DataFrame=DataSet[Row]
1.3.1 DataFrame
DataFrame 是一种以 RDD 为基础的分布式数据集,具备 RDD 的优点。DataFrame 在概念上等同于关系数据库中的表或 R、Python(Pandas)中的 DataFrame。
DataFr