来源:《spark实战》讲义


《spark实战》笔记07--应用库--Spark SQL
[1 ]Spark SQL

  • SparkSQL提供了完整的数据写入支持,从而补全了多数据源互操作的最后一块重要拼图。可以与Hive、 Parquet、 JSON、 Pandas等多种数据源间的任意转换,正是这一增强的直接成果。

Spark SQL的特点:

  • 引入了新的RDD类型SchemaRDD,可以象传统数据库定义表一样来定义SchemaRDD,
    SchemaRDD由定义了列数据类型的行对象构成。
  • SchemaRDD可以从RDD转换过来,也可以从Parquet文件读入,也可以使用HiveQL从Hive中获取。
  • 在应用程序中可以混合使用不同来源的数据,如可以将来自HiveQL的数据和来自SQL的数据进行join操作。
  • 内嵌catalyst优化器对用户查询语句进行自动优化

《spark实战》笔记07--应用库--Spark SQL


[2 ]SparkSQL vs DataFrame
《spark实战》笔记07--应用库--Spark SQL


[3 ]catalyst优化器
《spark实战》笔记07--应用库--Spark SQL
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.

相关文章: