sparksql vs-hive-on-spark-difference及其利弊?

x759pob2  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(338)

sparksqlcli在内部使用hiveql,在spark上的配置单元(hive-7292)中,配置单元使用spark作为后端引擎。有没有人能说得更清楚一点,这两种情况到底有什么不同,以及这两种方法的利弊?

uubf1zoe

uubf1zoe1#

以下是我在Hive官方网站上找到的相关答案:
1.3 比较 具有 鲨鱼 和 Spark sql语句  那里 是 二 相关 项目 在里面 这个 Spark 生态系统 那个 提供 Hive 秋林 支持 在 Spark: 鲨鱼 和 Spark sql。  ●这个 鲨鱼 项目 翻译 查询 计划 生成 通过 Hive 进入之内 它的 拥有 代表 和 执行 他们 结束 Spark。   ●Spark sql语句 是 一 特征 在里面 Spark。 它 使用 Hive 分析器 作为 这个 前端 到 提供 Hive 秋林 支持。 Spark 应用 开发商 可以 容易地 表达 他们的 数据 处理 逻辑 在里面 sql语言, 作为 好 作为 这个 其他 Spark 操作员, 在里面 他们的 代码。 Spark sql语句 支架 一 不同的 使用 案例 比 Hive。 
相比 具有 鲨鱼 和 Spark sql语言, 我们的 方法 通过 设计 支架 全部的 现有的 Hive 特征, 包括 Hive 秋林 (和 任何 未来 扩展), 和 Hive 集成 具有 授权, 监测, 审计, 和 其他 操作的 工具。 
3. Hive­-水平 设计  作为 注意 在里面 这个 简介, 这 项目 拿 一 不同的 方法 从 那个 属于 鲨鱼 或 Spark sql语句 在里面 这个 感觉 那个 我们 是 不 去 到 实施 sql语句 语义学 使用 Spark 原语。 在 这个 相反, 我们 将 实施 它 使用 MapReduce 原语。 这个 只有 新的 事情 在这里 是 那个 这些 MapReduce 原语 将 是 执行 在里面 Spark。 在里面 事实上, 只有 一 很少的 属于 Spark 原语 将 是 习惯于 在里面 这 设计。 
这个 方法 属于 执行 Hive MapReduce 原语 在 Spark 那个 是 不同的 从 什么 鲨鱼 或 Spark sql语句 做 有 这个 下列的 直接的 优势:  1.Spark 用户 将 自动 得到 这个 整体 设置 属于 Hive 富有的 特征, 包括 任何 新的 特征 那个 Hive 可以 介绍 在里面 这个 未来。  2.这个 方法 避免 或 减少 这个 必然性 属于 任何 定制 工作 在里面 Hive Spark 执行 引擎。
3.信息技术 将 也 限制 这个 范围 属于 这个 项目 和 减少 长期 维修 通过 保持 Hive­-在­-Spark 全等的 到 Hive MapReduce 和 泰兹。 

0sgqnhkj

0sgqnhkj2#

当sparksql使用配置单元时
sparksql可以使用hivemetastore来获取hdfs中存储的数据的元数据。这种元数据使sparksql能够更好地优化它执行的查询。这里是查询处理器。
当hive使用spark时,请参见jira条目:hive-7292
这里的数据是通过spark访问的。hive是查询处理器。所以我们可以充分利用Spark芯的所有设计特点。但这是hive的一项重大改进,截至2016年2月2日仍在“进行中”。
还有第三种方法可以使用sparksql处理数据
使用sparksql而不使用配置单元。在这里,sparksql不能从配置单元元存储访问元数据。而且查询运行速度较慢。我做了一些性能测试,比较了选项1和3。结果就在这里。

mefy6pfw

mefy6pfw3#

sparksql vs spark api您可以简单地想象自己身处rdbms世界:
sparksql是纯sql,sparkapi是编写存储过程的语言
spark上的hive类似于sparksql,它是一个纯sql接口,使用spark作为执行引擎,sparksql使用hive的语法,所以作为一种语言,我想说它们几乎是一样的。
但是spark上的hive对hive特性有更好的支持,特别是hiveserver2和安全特性,sparksql中的hive特性确实有缺陷,sparksql中有一个hiveserver2 impl,但是在最新版本(1.6.x)中,sparksql中的hiveserver2不再使用hivevar和hiveconf参数,通过jdbc登录的用户名也不起作用。。。
看到了吗https://issues.apache.org/jira/browse/spark-13983
我相信spark项目中的Hive支持是非常低优先级的东西。。。
遗憾的是,spark集成上的hive并不是那么容易,有很多依赖冲突。。。例如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

我们的要求是以一种安全的方式(通过身份验证和授权)将spark与hiveserver2结合使用,目前sparksql本身无法提供这一点,我们在spark上使用ranger/sentry+hive。
希望这能帮助你更好的知道你应该往哪个方向走。

相关问题