news 2026/5/13 9:44:45

Hive核心知识点和面试高频考点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hive核心知识点和面试高频考点

        Hive是一个开源的,建立在Hadoop上的数据仓库框架,提供类似SQL的HQL语言操作结构化数据,其基本原理是将HQL语言自动转换成Mapreduce任务或Tez任务或Spark任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。

一、核心组件

1. 用户接口(User Interfaces)

  • CLI:命令行接口,用户直接输入 HiveQL 查询。
  • JDBC/ODBC(Beeline):允许应用程序通过标准数据库连接方式与 Hive 交互。
  • Web UI:Hive 提供的简单 Web 界面(Hive Web Interface,HWI)。

2. Driver(驱动器)/ Hive SQL 执行流程

Driver用来接收用户查询,负责会话管理、查询编译、优化及执行计划的生成。Driver 包含:

  • Parser(解析器):将 HiveQL 字符串解析为抽象语法树(AST)。
  • Semantic Analyzer(语义分析器):借助 Metastore 获取表、列、分区等元数据,对 AST 进行语义校验,并将 AST 转换为内部查询块(Query Block),此时补全类型推导、隐式转换等信息。
  • Logical Plan Generator(逻辑计划生成器):将 Query Block 转换成初始的逻辑执行计划,即一棵由Operator算子组成的 Operator Tree(操作符树),代表数据的流向和操作。常见算子如下:
    • TableScanOperator:读取 HDFS 文件。→ Map Task

    • FilterOperator:执行 WHERE 过滤。

    • SelectOperator:选取或计算列。

    • JoinOperator:两张表连接。→ Reduce Task

    • GroupByOperator:分组聚合。→ Reduce Task

    • ReduceSinkOperator:将数据按 Key 分发到 Reducer(Map 和 Reduce 的边界)。

    • FileSinkOperator:写入目标表/临时结果。

  • Optimizer(优化器):对逻辑计划进行一系列改写和优化,如谓词下推、分区修剪、列裁剪、Map Join 转换、公共表达式消除等,得到优化后的逻辑计划。
  • Physical Plan Generator(物理计划生成器):将优化后的逻辑计划翻译为物理执行计划(Task Tree)。这一步与具体执行引擎绑定:MR、Tez 或 Spark。
  • Executor(执行器):按物理计划的依赖顺序,将 Task 提交给执行引擎。并监控执行进度,最后返回结果给客户端。如果是 SELECT 查询,最后一个任务会将结果写入临时目录,然后由客户端读取并显示;如果是 INSERT 等操作,结果会直接写入目标表(HDFS 目录或分区)。

    • MR 模式:通过 JobClient 提交到 YARN。

    • Tez 模式:提交一个 DAG 到 Tez Session。

    • Spark 模式:提交到 Spark 集群。

3. Metastore(元数据存储)

        存储 Hive 表的元数据(如表名、列名、分区信息、表所在的 HDFS 路径等)。通常使用关系型数据库(如 Derby、MySQL、PostgreSQL)来存储。Metastore 分为三个部分:

  • Metastore Service:提供元数据访问接口。
  • Metastore Database:实际存储元数据的数据库。
  • Metastore Client:内嵌在 Hive 服务中的客户端,用于与 Metastore Service 通信。

hive的metastore的三种模式

  • 内嵌Derby方式:这个是Hive默认的启动模式,一般用于单元测试,这种存储方式有一个缺点:在同一时间只能有一个进程连接使用数据库。

  • Local方式:本地MySQL

  • Remote方式:远程MySQL,一般常用此种方式

4. Execution Engine(执行引擎)

负责执行物理计划。Hive 支持多种执行引擎:

  • MapReduce(默认):稳定可靠,但中间结果写入磁盘,适合批处理,延迟较高。
  • Tez(基于有向无环图DAG的优化引擎):将传统MapReduce作业拆解为更基础的元操作(如Input、Sort、Merge),并通过DAG灵活组合。这使得一个复杂任务可以在一个Tez作业中完成,无需像MapReduce那样串联多个独立的Job。
  • Spark(内存计算引擎):基于内存计算,支持 DAG 和更多优化,适合交互式查询和迭代计算。

数据存储:基于 HDFS,计算资源由 YARN 管理。

二、内部表与外部表

1. 内部表 (Managed Table / Internal Table)

  • 定义:Hive 完全管理这张表的生命周期,包括元数据和数据文件。

  • 存储位置:默认在 hive.metastore.warehouse.dir 指定的目录下(如 /user/hive/warehouse)。

  • 数据生命周期

    • DROP TABLE 时,元数据和 HDFS 上的数据文件都会被删除

    • TRUNCATE TABLE 会清空数据文件。

2. 外部表 (External Table)

  • 定义:Hive 只管理元数据,数据文件由用户自行管理,一般用于引用已经存在于 HDFS 上的数据。

  • 创建时:需要用 EXTERNAL 关键字,并通常用 LOCATION 指定数据路径。

  • 数据生命周期

    • DROP TABLE 时,只删除元数据,HDFS 上的数据文件保留

    • TRUNCATE TABLE 对外部表不可用(不允许截断外部数据)。

  • TBLPROPERTIES ('external.table.purge'='true'): 该参数让外部表支持类似内部表的清理操作(执

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 9:44:22

VMware macOS虚拟机解锁实用指南:Unlocker 3.0深度解析与完整教程

VMware macOS虚拟机解锁实用指南:Unlocker 3.0深度解析与完整教程 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker Unlocker 3.0是一款专为VMware Workstation和Player设计的开源跨平台解锁工…

作者头像 李华
网站建设 2026/5/13 9:43:48

分类记单词:哺乳动物

分类记单词:哺乳动物快来记单词,这里有好多哺乳动物哦一、宠物、家畜 pet 宠物cat 猫tom 公猫;汤姆dog 狗pup 小狗bitch 母狗;泼妇pig 猪sow 母猪;播种boar 未阉的公猪;野猪piglet 小猪livestock 牲口cattl…

作者头像 李华
网站建设 2026/5/13 9:41:16

【递归算法】黄金矿工

文章摘要: 本文介绍了LeetCode 1219题"黄金矿工"的解题思路。题目要求在给定的mn网格中,按照特定规则开采黄金,寻找收益最大的路径。文章详细解析了题目要求,通过示例展示了决策过程,并提出了基于深度优先搜…

作者头像 李华
网站建设 2026/5/13 9:39:07

内部类全解:成员、局部、静态、匿名

做Java开发的同学,肯定都见过内部类——不管是项目里的工具类、回调逻辑,还是面试题里的高频考点,内部类都无处不在。但很多人只停留在“会用”的层面,分不清四种内部类的区别、不知道什么时候该用哪种,甚至踩了很多隐…

作者头像 李华