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

GitHubstarzy1990.github.io

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

相关推荐
白色机械键盘1 小时前
领域大模型微调数据集构建实战
大数据·人工智能
东莞和裕包装2 小时前
如何管控广州定制纸箱生产中的啤切精度与印刷色差质量问题
大数据·运维·网络·人工智能
时下握今3 小时前
CDA一级认证|三大基础分析范式怎么理解?分类/链式/相关范式详解
大数据
xiaopai9453 小时前
从WPS工程项目管理表到工程项目管理系统:企业数字化升级的边界在哪里?
大数据·wps·工程项目管理·建米软件
TMT星球4 小时前
伽利略机器人亮相WRC 2026,突破形态局限发布“陆行具身系统”Galileo X
大数据·人工智能·机器人
一只鹿鹿鹿6 小时前
数据资产管理解决方案(Word文件)
大数据·数据库·安全·web安全·系统安全
m0_638079626 小时前
2026年AI论文写作辅助工具技术对比与使用观察
大数据·人工智能
商业数据派6 小时前
日赚近1亿的网易,这个季度栽在了拼多多身上
大数据·人工智能
晓子文集6 小时前
Tushare接口文档:月线行情(monthly)
大数据·数据库·金融数据·量化投资·tushare