当前位置: 首页 > ds >正文

Hive数据仓库工具

下面是对 Apache Hive 的全面介绍,适用于理解其原理、架构、使用场景和与其他大数据组件的协作关系。


一、Hive 是什么?

Apache Hive 是构建在 Hadoop 之上的一个数据仓库工具,用于将结构化数据转化为SQL风格的查询操作(HiveQL),然后将这些查询转换为 MapReduce、Tez 或 Spark 任务在集群上运行。

Hive 的核心目标是:让熟悉 SQL 的开发者能操作 Hadoop 上的海量数据。


二、Hive 的核心特点

特性描述
类 SQL 查询使用 HiveQL,类似于标准 SQL
数据仓库支持支持分区表、桶表、视图等数据仓库特性
可扩展性强后端可以运行在 MapReduce、Tez、Spark 上
支持 UDF/UDAF可以自定义函数处理复杂逻辑
支持存储格式多样支持 TextFile、ORC、Parquet、Avro、SequenceFile 等
与 Hadoop 紧密集成基于 HDFS 存储,和 YARN 协同运行
延迟高,适用于批处理不适用于低延迟查询或实时计算

三、Hive 的架构组件

  1. HiveQL

    • 类 SQL 的查询语言,支持大部分 DML、DDL 和查询操作。

  2. Driver(驱动器)

    • 接收用户的 HiveQL 语句,进行语法检查、逻辑计划生成和优化。

  3. Compiler(编译器)

    • 将 HiveQL 编译成执行计划,通常是 MapReduce 或 Spark 作业。

  4. Metastore(元数据存储)

    • 存储表结构、分区信息、列类型等元信息,通常使用 MySQL 或 Derby 存储。

  5. Execution Engine(执行引擎)

    • 负责提交作业并协调任务执行,可选择 MapReduce、Tez、Spark 等。

  6. HDFS(存储层)

    • Hive 本身不存储数据,数据存放在 HDFS 中。


四、Hive 的基本操作

1. 创建数据库和表

CREATE DATABASE mydb;CREATE TABLE users (id INT,name STRING,age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

2. 加载数据

LOAD DATA INPATH '/user/hadoop/users.csv' INTO TABLE users;

3. 查询数据

SELECT name, age FROM users WHERE age > 20;

4. 分区与桶

-- 分区表
CREATE TABLE logs (event STRING,event_date STRING
)
PARTITIONED BY (event_type STRING);-- 桶表
CREATE TABLE employees (id INT,name STRING
)
CLUSTERED BY (id) INTO 4 BUCKETS;

五、Hive 与其他大数据技术的比较

项目HiveImpala / Presto / TrinoSpark SQL
查询引擎MapReduce / Tez / Spark内存计算(无 MapReduce)内存 + 分布式 DAG
查询延迟高(分钟级)低(秒级)中等到低
使用场景批处理、ETL、大数据仓库实时查询、交互式分析批处理 + 实时分析 + 机器学习
是否支持 SQL是(HiveQL)是(ANSI SQL)是(Spark SQL)


六、Hive 的常见使用场景

  1. 离线数据分析

    • 使用 Hive 分析 Web 日志、用户行为、销售记录等。

  2. 数据仓库建模

    • 构建基于 HDFS 的数据仓库系统,分区、ETL 转换、聚合等。

  3. 企业报表生成

    • Hive 查询 + BI 工具对接(如 Superset、Tableau)

  4. 数据导入导出

    • Hive 可配合 Sqoop、Flume 等进行数据收集或入库。


七、Hive 的执行引擎演进

Hive 版本执行引擎特点
Hive 1.x 及以前MapReduce最早使用,执行慢
Hive 2.xTez更快的 DAG 引擎,Hortonworks 推出
Hive 3.xSpark 支持增强可直接用 Spark 运行 Hive 查询


八、Hive 的优缺点总结

优点:

  • SQL 接口友好,门槛低

  • 与 Hadoop 紧密集成

  • 支持复杂 ETL 和批处理

  • 扩展性强,适合大数据量场景

缺点:

  • 延迟较高,不适用于实时系统

  • 写入性能弱(数据不可更新)

  • 不适合小数据量查询


九、补充工具与生态

组件用途
HiveServer2JDBC/ODBC 接口服务
BeelineHive 的 CLI 客户端
Metastore元数据服务,通常用 MySQL
HCatalog为 Pig、MapReduce 提供统一元数据接口
Hive-on-SparkHive 查询转 Spark 执行引擎
Superset可视化 BI 工具对接 Hive
http://www.xdnf.cn/news/15828.html

相关文章:

  • 什么是高光谱相机,它与数码相机有什么区别?
  • 相机光学(五十)——Depth AF
  • RTKLIB读取星历文件,观测数据
  • 解决Flutter运行android提示Deprecated imperative apply of Flutter‘s Gradle plugins
  • 电解电容串联均衡电阻计算
  • 模板初阶和C++内存管理
  • 功能安全之BIST的基本原理
  • 第7天 | openGauss中一个数据库中可以创建多个模式
  • 6月零售数据超预期引发市场波动:基于AI多因子模型的黄金价格解析
  • Axios泛型参数解析与使用指南
  • 当系统盘快满时,可以删除哪些数据
  • 排序【各种题型+对应LeetCode习题练习】
  • 如何阅读Spring源码
  • 【LVGL】Linux LVGL程序几十分钟后UI卡死
  • effective python 条款11 学会对序列做切片
  • Onload 用户指南 (UG1586)-笔记
  • 【机器学习】安装Jupyter及基本操作
  • 内存泄漏系列专题分析之二十九:高通相机CamX--Android通用GPU内存分配和释放原理
  • 虚拟商品自动化实践:闲鱼订单防漏发与模板化管理的技术解析
  • JVM常用运行时参数说明
  • 【C# in .NET】17. 探秘类成员-构造函数与析构函数:对象生命周期管理
  • [3-02-01].第01章:框架概述 - Spring生态
  • 基于Spring Boot的农村农产品销售系统设计与实现
  • 【Python】DRF核心组件详解:Mixin与Generic视图
  • ARINC818航空总线机载视频处理系统设计
  • 第二篇 html5和css3开发基础与应用
  • 28、鸿蒙Harmony Next开发:不依赖UI组件的全局气泡提示 (openPopup)和不依赖UI组件的全局菜单 (openMenu)、Toast
  • 数据结构入门:像整理收纳一样简单!
  • Jmeter系列(6)-测试计划
  • 李超线段树模板