Spark和Hive的区别
1
、
Hive
Hive
是基于
Hadoop
的数据仓库工具,同时又是查询引擎,
Spark SQL
只是取代的
Hive
的查询引擎这一部分,企业可以使用Hive+Spark SQL
进行开发。
Hive
的主要工作如下:
把HQL
翻译长
map-reduce
的代码,并且有可能产生很多
mapreduce
的
job
把生产的Mapreduce
代码及相关资源打包成
jar
并发布到
Hadoop
的集群当中并进行运行
Hive默认情况下用
derby
存储元数据,所以在生产环境下一般会采用多用户的数据库进行元数据的存储,并可以读写分离和备份,一般使用主节点写,从节点读,一般使用MySQL
。
2
、
Spark
Spark SQL处理一切存储介质和各种格式的数据
(
可以扩展
sparksql
来读取更多类型的数据
)
;
Spark SQL把数据仓库的计算速度推向了新的高度(
Tungsten
成熟之后会更厉害);
Spark SQL推出的
Dataframe
可以让数据仓库直接使用机器学习,图计算等复杂算法;
Hive+Spark SQL+DataFrame
使用:
Hive:负责廉价的数据仓库存储
Spark Sql:负责高速的计算
DataFrame:负责复杂的数据挖掘
3
、
Hive on Spark
与
Spark Sql
的区别
Hive on Spark大体与
Spark SQL
结构类似,只是
SQL
解析器不同,但是计算引擎都是
Spark
。
4
、
Hive on Mapreduce
和
Spark SQL
使用场景
Hive on Mapreduce
场景
Hive
的出现可以让那些精通
SQL
技能、但是不熟悉
MapReduce
、编程能力较弱与不擅长
Java
语言的用户能够在HDFS
大规模数据集上很方便地利用
SQL
语言查询、汇总、分析数据,毕竟精通
SQL
语言的人要比精通Java
语言的多得多。
Hive
适合处理离线非实时数据
。
Spark SQL
场景
Spark
既可以运行本地
local
模式,也可以以
Standalone
、
cluster
等多种模式运行在
Yarn
、
Mesos
上,还可以运行在云端例如EC2
。此外,
Spark
的数据来源非常广泛,可以处理来自
HDFS
、
HBase
、Hive、
Cassandra
、
Tachyon
上的各种类型的数据。
实时性要求或者速度要求较高的场所
。
5
、
Hive on Mapreduce
和
Spark SQL
性能对比
Spark SQL
和
Hive on Spark
时间差不多,但都比
Hive on mapreduce
快很多,官方数据认为
Spark
会被传统mapreduce快
10-100
倍。