spark on hive 还是 hive on spark?

我们都知道,hive默认的计算引擎是mr,但是mr计算依赖于磁盘,导致计算非常缓慢,开启本地模式会稍微快一点,但是治标不治本,于是有些公司就将计算引擎切换成tez或者spark。

spark作为目前主流的离线计算引擎,非常的方便,所以很多企业都想直接将计算引擎换成spark,但目前hive和spark结合有两种方式Spark On Hive ,还有一种Hive On Spark,到底应该怎么选择呢?

从字面意思不难看出,Spark On Hive 肯定是以spark为主,hive为辅助,而Hive On Spark,却是以hive为主,spark为辅助。

那目前的技术主流肯定是park,所以spark on hive肯定是主流。

那什么是spark on hive 呢?

让 Spark 能够读取 Hive 中创建的元数据(数据库、表结构等),从而可以用 Spark SQL 直接查询 Hive 表。

核心配置​:只需要在 Spark 端进行配置,告诉 Spark 元数据服务在哪里。

Hive on Spark 的现状

Hive on Spark 并没有消失,但它有非常特定的使用场景:

  • 历史遗留系统迁移​:对于那些有大量复杂 HiveQL 脚本、UDF 且迁移到 Spark SQL 成本极高的企业,Hive on Spark 是一个不错的折中方案。它允许他们用最小的改动(只是换一个执行引擎)来提升性能。

  • 对 HiveQL 有强依赖的团队​:如果团队技能栈完全集中在 Hive,短期内转向 Spark SQL 有困难。

核心思想

  • Spark on Hive​:配置 Spark 去连接​ Hive 的元数据服务。

  • Hive on Spark​:配置 Hive 去使用​ Spark 作为其执行引擎。

文档中未直接提及spark on hivehive on spark的相关信息,但可基于对HiveSpark的一般性理解进行分析。 ### 区别 - **架构侧重点**:spark on hive是以Hive作为数据存储和管理的基础,Spark作为计算引擎,侧重于利用Spark的快速计算能力处理Hive中的数据;而hive on spark则是以Spark为核心计算框架,Hive作为查询语言接口,更强调通过Hive的SQL-like语法来使用Spark的计算能力。 - **数据处理流程**:spark on hive先从Hive中读取数据,然后将数据交给Spark进行计算;hive on spark则是用户通过Hive提交查询,Hive将查询转换为Spark作业进行执行。 ### 原理 - **spark on hive**:Spark提供了与Hive的集成接口,通过这个接口可以直接访问Hive的元数据和数据文件。Spark读取Hive表中的数据后,利用其RDD(弹性分布式数据集)或DataFrame等抽象进行分布式计算。 ```python # 示例代码,展示Spark访问Hive表 from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("SparkOnHiveExample") \ .config("hive.metastore.uris", "thrift://localhost:9083") \ .enableHiveSupport() \ .getOrCreate() # 读取Hive表 df = spark.sql("SELECT * FROM my_hive_table") df.show() ``` - **hive on spark**:Hive在接收到用户的查询请求后,将查询计划转换为Spark作业。Hive使用Spark的API将查询任务分解为一系列的Spark操作,然后由Spark集群执行这些操作。 ### 应用场景 - **spark on hive**:适用于需要对Hive中的大规模数据进行复杂分析和计算的场景,如机器学习、深度学习等需要快速迭代计算的任务。 - **hive on spark**:对于熟悉Hive SQL的用户,希望利用Spark的高性能计算能力而不改变原有查询习惯的场景,如数据仓库的报表生成、数据分析等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闫哥大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值