赞
踩
数据仓库,主要负责数据存储和管理,看作MapReduce计算引擎+HDFS分布式文件系统,直观理解就是Hive的SQL通过很多层解析成了MR程序,然后存储是放在了HDFS上,并且只能用SQL这种方式来处理结构化数据,因此spark和hive是互不依赖的。
实际应用两者结合,有三种方式:hive on spark、spark on hive、spark+spark hive catalog,常见的是第一种,是因为hive底层现在支持三种计算计算引擎:mr\tez\spark。
第一种:使用hive的语法规范即hive sql,执行时编译解析成spark作业运行(当然此时底层的计算引擎是spark);
参考引用说明:
(17 封私信 / 80 条消息) 请问spark和hive是什么关系? - 知乎 (zhihu.com)
(17 封私信 / 80 条消息) HBase 和 Hive 的差别是什么,各自适用在什么场景中? - 知乎 (zhihu.com)
2021.12.25更新 SparkSQL历史:
Hive on Spark,为了实现与Hive兼容,Shark在 HiveQL方面重用了Hive中HiveQL的解析、逻辑执行计划翻译、 执行计划优化等逻辑,可以近似认为仅将物理执行计划从 MapReduce作业替换成了Spark作业,通过Hive的HiveQL解 析,把HiveQL翻译成Spark上的RDD操作。
Shark的出现,使得SQL-on-Hadoop的性能比Hive有了 10-100倍的提高。但是它的设计有两个问题:
2014年6月1日Shark项目和Spark SQL项目的主持人Reynold Xin宣布: 停止对Shark的开发,团队将所有资源放在Spark SQL项目上,至此, Shark的发展画上了句号,但也因此发展出两个分支:Spark SQL和 Hive on Spark。前者推翻之前的那套另起炉灶,不再受限Hive而是兼容Hive,后者成了一个发展计划即Hive不再局限于一个引擎,而是采用MapReduce、Tez、Spark等引擎。
Spark SQL在Hive兼容层面仅依赖HiveQL解析、Hive元数据,也就是 说,从HQL被解析成抽象语法树(AST)起,就全部由Spark SQL接管了。
Spark SQL增加了DataFrame(即带有Schema信息的RDD),使用户可以 在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以是Hive、 HDFS、Cassandra等外部数据源,还可以是JSON格式的数据。
背景:
Spark SQL的出现填补了这个鸿沟
DataFrame的推出,让Spark具备了处理大规模结构化数据的能力,不仅比原有的RDD转化方式更加简单易用,而且获得了更高的计算性能。Spark能够轻松实现从MySQL到DataFrame的转化,并且支持SQL查询
RDD是分布式的 Java对象的集合,但是,对象内部结构对于RDD而言却是不可知的
DataFrame是一种以RDD为基础的分布式数据集,提供了详细的结构信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。