sparkSQL和hive到底什么关系

SparkSQL解决了这两个问题。
首先,SparkSQL仅在Hive兼容级别依赖HQLparser、HiveMetastore和HiveSerDe。
换句话说,从HQL被解析为抽象语法树(AST)的那一刻起,SparkSQL就接管了。
Catalyst负责执行计划的生成和优化。
借助Scala的模式匹配等函数式语言特性,使用Catalyst开发执行计划优化策略比Hive简单得多。
去年Sparksummit上Catalyst的作者MichaelArmbrust对Catalyst:2013|SparkSummit做了简单的介绍。
其次,与Shark相比,SparkSQL不再需要自己维护打补丁的Hive分支,进一步减少了对Hive的依赖。
Shark未来将完全使用SparkSQL作为其引擎,而不仅仅是用于查询优化。

Spark-SQL、HiveonSpark、SparkonHive

在Spark的实践中,Spark-SQL虽然HiveonSpark和SparkonHive的三个概念可能会让初学者感到困惑,但理解它们很重要。
本文将对这些概念进行清晰的分析。
第一的,我们先明确一些基本概念:Spark底层是一个基于RDD的计算引擎,提供高性能计算能力,SparkSQL负责SQL语法解析。
MapReduce是Hadoop中用于大数据处理的计算引擎。
Spark-SQL将SQL与SparkRDD引擎集成,允许用户直接编写SQL查询;Spark然后运行分布式计算。
其主要目的是简化编码并提高性能。
HiveonSpark将通过Hive的语法解析HiveSQL在Spark环境中的实现,并与Spark的RDD引擎一起运行。
由于Hadoop生态系统中接口丰富,该方法适合执行数据仓库查询操作。
相反,SparkonHive是Spark在Hive环境下的实现,直接利用了HiveSQL的语法,但实现的仍然是Spark的RDD引擎。
这种模式常用于使用Spark作为开发框架、使用Hive作为数据仓库存储的情况。
在性能方面,在这三个选项之间主要区别在于它们都是基于Spark的RDD引擎而不是底层计算引擎,所以都是关于用法和接口的。
因此,选择哪一种主要取决于具体的业务需求和开发环境。