SparkSQL
SparkSQL
是什么
- SparkSQL是Spark的一个模块,用于处理结构化数据,提供了新的数据抽象DataFrame和Dataset
特点
-
兼容性
可以在同一个Spark任务中混合使用SQL处理和算子编程,
SparkSQL中RDD可以进行算子编程,DF和DS可以支持SQL操作,RDD、DF、DS之间可以互相转换。 -
统一的数据访问
SparkSQL可以使用相同的API访问各种常见的数据源- 文本格式: text csv json
- 列式存储: parquet orc
- 数据库: jdbc
-
完全兼容Hive
可以使用SparkSQL读取已经存在的hive数据仓库,由于SparkSQL内部集成了Hive的所有功能模块,所以对Hive的库和表,UDF等完全兼容 -
提供标准数据库连接
SparkSQL提供JDBC\ODBC连接,用于提供客户端的远程访问
认识新的API
- 程序入口: SparkSession
- 数据抽象: DataFrame Dataset
SparkSQL与Hive的关系
Hive
- 将库和表的元数据(metadata)存储在关系型数据库(MySQL)
- 将表的内容数据(data)存储在HDFS
- 通过命令行终端(hive)或者使用JDBC服务(hiveserver2)连接Hive集群,将HQL提交到集群通过MapReduce运行
SparkSQL
- 将库和表的元数据(metadata)存储在关系型数据库(MySQL)
- 将表的内容数据(data)存储在HDFS
- 通过命令行终端(spark-sql)或者使用JDBC服务(thriftserver)连接Spark集群,将HQL提交到集群通过SparkRDD运行
- SparkSQL也提供了DSL、SQL的编程api,程序入口SparkSession,数据抽象Dataset\DataFrame
将原有Hive数仓切换到SparkSQL
- 将Hive的hive-site.xml拷贝到Spark集群的conf目录
- 将元数据的jdbc驱动包拷贝到Spark集群的jars目录中