SparkSQL 之 Hive On Spark 原理分析

摘要:Hive on Spark 让传统 Hive 数仓跑在 Spark 引擎上。本文从 RSC 远程作业提交机制、HQL 编译 6 步、MR/Tez/Spark 三引擎对比、完整配置清单四个维度,配合 2 张架构图,彻底解析 Hive on Spark 原理。

关键词:Hive on Spark, RSC, Remote SparkContext, SparkClient, hive.execution.engine


一、开篇

传统 Hive 默认使用 MapReduce,每个 Stage 写 HDFS。Hive on Spark 将 Spark 作为执行引擎:RDD 内存迭代 + Catalyst 优化。

css 复制代码
引擎演变: MR(1x) → Tez(10~100x) → Spark(100x+)
切换: set hive.execution.engine=spark;

二、架构全景 --- RSC 核心机制

scss 复制代码
RSC (Remote Spark Context) = Hive 内嵌的轻量 Spark Driver
  ① HiveServer2 接收 HQL → ② SparkClient 创建
  ③ RemoteDriver 向 YARN 提交 → ④ 启动 RSC
  ⑤ YARN 分配 Executor → ⑥ JobMonitor 监控

三、HQL 编译 & 引擎对比

HQL 编译 6 步

scss 复制代码
① 解析(AST) → ② 语义分析(Metastore) → ③ 逻辑优化
④ SparkTask(Operator Tree→SparkWork) → ⑤ SparkCompiler(RDD Transform)
⑥ SparkClient.submit → Executor 执行

引擎对比

MR Tez Spark
速度 1x 10~100x 100x+
中间结果 HDFS磁盘 内存Pipeline RDD内存
适用 已淘汰 纯SQL 迭代/ML

四、配置清单

xml 复制代码
<!-- hive-site.xml -->
hive.execution.engine=spark
spark.master=yarn
spark.yarn.jars=hdfs://namenode/spark-jars/*  <!-- 必配! -->
properties 复制代码
# spark-defaults.conf
spark.executor.memory=4g
spark.dynamicAllocation.enabled=true
spark.shuffle.service.enabled=true

五、总结

  1. RSC:Hive 内嵌 Driver,通过 SparkClient 向 YARN 提交作业。
  2. 引擎选择:Tez 纯 SQL 更快,Spark 迭代/ML 更优。
  3. 配置关键:spark.yarn.jars 必配 + Dynamic Allocation。

作者 :starzy

博客 :blog.starzy.cn

GitHub :starzy1990.github.io

专注 AI Agent · LangGraph · RAG · 大数据架构 · 数据工程实践

相关推荐
微三云马玮均—GEO源码系统 私有化部署10 小时前
消费返物业费:消费+服务趋势的必然产物!
大数据·人工智能·物联网·区块链·生活
workflower12 小时前
AI system product quality model
大数据·人工智能·机器学习·云计算·无人机
yl453012 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
xianghongtao011613 小时前
麦肯锡2026技术趋势02_智能体AI_研究解读
大数据·人工智能
数字化顾问13 小时前
(138页PPT)四大咨询矿业集团流程梳理与优化报告(附下载方式)
大数据·人工智能
yukai0800814 小时前
【203篇系列】056 我的Agent系统
大数据·elasticsearch·搜索引擎
yuanxi20016 小时前
青海共和百万千瓦光伏光热项目并网发电:大客户销售如何用价值力抓住能源大单
大数据·职场和发展·能源·创业创新·学习方法
W***259218 小时前
2026深度解读:Work Agent长程任务的执行机制与落地能力
大数据·人工智能
卷毛迷你猪19 小时前
快速实验篇(B07 )Session 会话化与序列
大数据·hive·hadoop
卷毛迷你猪19 小时前
快速实验篇(B08)搜索词分析实战
大数据·hive·hadoop