AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

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目录中

数据仓库

file