Hive 简介
Hive 概念
- Hive 由 Facebook 实现并开源
- 是基于 Hadoop 的一个数据仓库工具
- 可以将结构化的数据映射为一张数据库表
- 并提供 HQL(Hive SQL)查询功能
- 底层数据是存储在 HDFS 上
- Hive 的本质是将 SQL 语句转换为 MapReduce/Spark 任务运行
- 使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算
Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce/Spark 执行,所以说 Hive 是基于 Hadoop 的一个数据仓库工具(离线),实质就是一款基于 HDFS 的 MapReduce/Spark 计算框架,对存储在 HDFS 中的数据进行分析和管理
Hive 特性
- 支持通过 SQL 轻松访问数据的工具,从而支持数据仓库任务,如提取/转换/加载(ETL)、报告和数据分析。
- 支持多种数据格式(Parquet、OCR等)
- 访问直接存储在 HDFS 或其他数据存储系统( 如 Apache HBase )中的文件
- 通过 Apache Tez、Apache Spark 或 MapReduce 执行查询
Hive 架构
- 元数据信息(MetaStore):HIVE 将用户定义的库、表结构等元数据信息存储在本地 derby 数据库或远程 MySQL 数据库中
- SQL 解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误
-
编译器(Physical Plan):将 AST 编译生成逻辑执行计划
-
优化器(Query Optimizer):对逻辑执行计划进行优化
- 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说,就是 MapReduce 或 Spark
HIVE 用途
直接使用 MapReduce 程序所面临的问题:
1、人员学习成本太高
2、项目周期要求太短
3、MapReduce实现复杂查询逻辑开发难度太大
为什么要使用 Hive:
1、更友好的接口:操作接口采用类 SQL 的语法,提供快速开发的能力
2、更低的学习成本:避免了写 MapReduce,减少开发人员的学习成本
3、更好的扩展性:可自由扩展集群规模而无需重启服务,还支持用户自定义函数
解放大数据分析程序员,不用自己写大量的 mr 程序来分析数据,只需要写 sql 脚本即可构建大数据体系下的数据仓库
Hive 特点
优点:
1、可扩展性:Hive 可以自由的扩展集群的规模,一般情况下不需要重启服务
2、延展性:Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数
3、容错性:可以保障即使有节点出现问题,SQL 语句仍可完成执行
缺点:
1、Hive 不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结果导入到文件中
2、Hive 的查询延时很严重,因为 MapReduce Job 的启动过程消耗很长时间,所以不能用在交互查询系统中。
3、Hive 不支持事务(因为没有增删改,所以主要用来做 OLAP(联机分析处理),而不是 OLTP(联机事务处理),这就是数据处理的两大级别)。
总结
Hive 具有 SQL 数据库的外表,但应用场景完全不同,Hive 只适合用来做海量离线数据统计分析,也就是数据仓库。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现