来源:《spark实战》讲义
[1 ]Spark SQL
- SparkSQL提供了完整的数据写入支持,从而补全了多数据源互操作的最后一块重要拼图。可以与Hive、 Parquet、 JSON、 Pandas等多种数据源间的任意转换,正是这一增强的直接成果。
Spark SQL的特点:
- 引入了新的RDD类型SchemaRDD,可以象传统数据库定义表一样来定义SchemaRDD,
SchemaRDD由定义了列数据类型的行对象构成。 - SchemaRDD可以从RDD转换过来,也可以从Parquet文件读入,也可以使用HiveQL从Hive中获取。
- 在应用程序中可以混合使用不同来源的数据,如可以将来自HiveQL的数据和来自SQL的数据进行join操作。
- 内嵌catalyst优化器对用户查询语句进行自动优化
[2 ]SparkSQL vs DataFrame
[3 ]catalyst优化器
SparkSQL1.x 总体上由四个模块组成: core、 catalyst、 hive、 hiveThriftserver:
1) core处理数据的输入输出,从不同的数据源获取数据(RDD、Parquet、 json等),将查询结果输出成schemaRDD;
2) catalyst处理查询语句的整个处理过程,包括解析、绑定、优化、物理计划等,说其是优化器,还不如说是查询引擎;
3) hive对hive数据的处理
4) hive-ThriftServer提供CLI和JDBC/ODBC接口
[4 ]SparkSQL vs DataFrame
- DataFrames and SQL提供一通用的方式访问多种数据源, 包含 Hive, Avro, Parquet, ORC, JSON, and JDBC. 甚至还可以join数据用这些数据源的数据
- Spark SQL 重用Hive的 frontend and metastore, 可以访问、分析在Hive里面的数据, 查询, and UDFs.