Hive SQL和Spark SQL的区别?
1
、
Hive
Hive
是基于
Hadoop
的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将
sql
语句转换为
MapReduce
任务进行运行。其优点是学习成本低,可以通过类
SQL
语句快速实现简单的MapReduce
统计,不必开发专门的
MapReduce
应用,十分适合数据仓库的统计分析。
Hive
是建立在
Hadoop
上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL)
,这是一种可以存储、查询和分析存储在
Hadoop
中的大规模数据的机制。
Hive
定义了简单的类SQL 查询语言,称为
HQL
,它允许熟悉
SQL
的用户查询数据。同时,这个语言也允许熟悉
MapReduce开发者的开发自定义的 mapper
和
reducer
来处理内建的
mapper
和
reducer
无法完成的复杂的分析工作。
2
、
Spark SQL
Spark SQL
主要用于结构化数据处理和对
Spark
数据执行类
SQL
的查询。通过
Spark SQL
,可以针对不同格式的数据执行ETL
操作(如
JSON
,
Parquet
,数据库)然后完成特定的查询操作。一般来说,
Spark
每支持一种新的应用开发,都会引入一个新的Context
及相应的
RDD
,对于
SQL
这一特性来说,引入的就是SQLContext和
SchemaRDD
。
注意:在
Spark1.3
之后,
SchemaRDD
已经更名为
DataFrame
,但它本质就类似一个
RDD
,因为可以将DataFrame无缝的转换成一个
RDD
。
3
、比对
Hive
是基于
Hadoop
的一个数据仓库工具,同时也是查询引擎,基于
Hadoop
做数据清洗(
ETL
)、报表、数据分析等。但是,对于实时插入、更新、删除数据,还要求强一致性和毫秒级响应,这个就不是Hive的长处,因为MapReduce
处理数据是一个个阶段进行的,每个阶段都要落盘,不能多个
map
串联使用。
对于
Spark
,有
RDD
,可以把
map
过程串起来,中间过程存在内存中,再做一些优化,官方给出的答案是比Hadoop
处理速度快乐
10-100
倍。
Hive
适合处理离线非实时数据、数据仓库存储。
Spark SQL
适合实时性要求或者速度要求较高的场所。