Gau*_*are 29 hadoop hive apache-spark apache-spark-sql
SparkSQL CLI内部使用HiveQL,如果是Hive on spark(HIVE-7292),则hive使用spark作为后端引擎.有人可以提供更多的亮点,这两种情况究竟有何不同以及两种方法的利弊?
pra*_*jod 21
当SparkSQL使用配置单元时
SparkSQL可以使用HiveMetastore来获取存储在HDFS中的数据的元数据.此元数据使SparkSQL能够更好地优化其执行的查询.Spark是查询处理器.
当Hive使用Spark时请参阅JIRA条目:HIVE-7292
这里的数据是通过spark访问的.而Hive是查询处理器.因此,我们拥有Spark Core的所有设计功能.但这是Hive的重大改进,截至2016年2月2日仍在"进行中".
使用SparkSQL处理数据有第三种选择
不使用Hive就使用SparkSQL.SparkSQL无法访问Hive Metastore中的元数据.查询运行速度较慢.我已经做了一些比较选项1和3的性能测试.结果在这里.
chu*_*ium 12
SparkSQL vs Spark API你可以简单地想象你在RDBMS世界:
SparkSQL是纯SQL,Spark API是编写存储过程的语言
Spark上的Hive类似于SparkSQL,它是一个使用spark作为执行引擎的纯SQL接口,SparkSQL使用Hive的语法,所以作为一种语言,我会说它们几乎是相同的.
但Hive on Spark对hive功能提供了更好的支持,尤其是hiveserver2和安全功能,SparkSQL中的hive功能真的很不错,SparkSQL中有一个hiveserver2 impl,但在最新发布的版本(1.6.x)中,SparkSQL中的hiveserver2没有不再使用hivevar和hiveconf参数了,通过jdbc登录的用户名也不起作用......
请参阅https://issues.apache.org/jira/browse/SPARK-13983
我相信火花项目中的蜂巢支持真的是非常低优先级的东西......
可悲的是,Hive on spark集成并不那么容易,存在很多依赖性冲突......比如 https://issues.apache.org/jira/browse/HIVE-13301
并且,当我尝试使用spark集成的hive时,出于调试目的,我总是像这样开始hive cli:
export HADOOP_USER_CLASSPATH_FIRST=true
bin/hive --hiveconf hive.root.logger=DEBUG,console
Run Code Online (Sandbox Code Playgroud)
我们的要求是以安全的方式使用spark与hiveserver2(具有身份验证和授权),目前SparkSQL无法提供此功能,我们在Spark上使用ranger/sentry + Hive.
希望这可以帮助您更好地了解应该走哪个方向.
| 归档时间: |
|
| 查看次数: |
37579 次 |
| 最近记录: |