一、Spark SQL概念
它主要用于结构化数据处理和对Spark数据执行类SQL的查询。通过Spark SQL,可以针对不同格式的数据执行ETL操作(如JSON,Parquet,数据库)然后完成特定的查询操作。一般来说,Spark每支持一种新的应用开发,都会引入一个新的Context及相应的RDD,对于SQL这一特性来说,引入的就是SQLContext和SchemaRDD。注意:在Spark1.3之后,SchemaRDD已经更名为DataFrame,但它本质就类似一个RDD,因为可以将DataFrame无缝的转换成一个RDD。
二、Spark SQL功能
- Spark SQL 可以从各种结构化数据源(例如 JSON、Hive、Parquet 等)中读取数据。
- Spark SQL 不仅支持在 Spark 程序内使用 SQL 语句进行数据查询, 也支持从类似商业 智能软件 Tableau 这样的外部工具中通过标准数据库连接器(JDBC/ODBC)连接 Spark SQL 进行查询。
- 当在 Spark 程序内使用 Spark SQL时,Spark SQL 支持 SQL 与常规的 Python/Java/Scala代码高度整合,包括连接 RDD 与SQL表、公开的自定义 SQL 函数接口等。这样一来,许多工作都更容易实现了。
三、Spark SQL 与 Hive 的区别
前面介绍了spark sql的基本概念,下面介绍一下Spark SQL 与 Hive 的区别。
什么是Spark SQL
- Spark SQL是Spark中专门用来处理结构化数据(每一行数据都遵循Schema信息建表时表的字段及其类型)的一个模块
- 提供了 DataFrame/Dataset 的对分布式数据处理的基本抽象
- 其实之上是一个分布式的 SQL 引擎
什么是 Hive
- 数据仓库,能使用 SQL 读取、写入和管理存在于分布式存储架构上的大数据集
- 结构可以映射到已经存储的数据上
- 用户连接 Hive 可以使用命令行工具和 JDBC 驱动
两者的区别
都支持ThriftServer服务,为JDBC提供解决方案,区别如下:
Spark SQL
- 是Spark的一个库文件
- Spark SQL 元数据可有可无
- Spark SQL 中 schema 是自动推断的
- 支持标准 SQL 语句,也支持 HQL 语句等
- 从开发角度来讲,即支持SQL方式开发,也支持HQL开发,还支持函数式编程(DSL)实现SQL语句
Hive
- 是一个框架
- Hive中必须有元数据,一般由 MySql 管理,必须开启 metastore 服务
- Hive 中在建表时必须明确使用 DDL 声明 schema
- 只支持 HQL 语句
Hive:处理海量数据,比如一个月、一个季度、一年的数据量,依然可以处理,虽然很慢;
Spark SQL:这种情况下 Spark SQL 不支持,无法处理;
参考文章:
https://blog.csdn.net/weixin_44196083/article/details/92404776
以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!