Hive
外观
Developer(s) | Apache软件基金会 |
---|---|
Initial release | October 2010 |
Repository |
|
Written in | Java |
Engine | |
Operating system | 跨平台 |
Type | 数据仓库 |
License | Apache许可证2.0 |
Website | hive |
Apache Hive是一个建立在Hadoop之上的开源数据仓库工具,由Facebook开发并贡献给Apache软件基金会。它提供了类似SQL的查询语言(称为HiveQL),使得熟悉SQL的用户能够轻松地对存储在Hadoop分布式文件系统(HDFS)中的大规模数据集进行查询和分析。
概述[编辑 | 编辑源代码]
Hive最初由Facebook开发,用于处理其快速增长的数据分析需求。它于2008年开源,2010年成为Apache顶级项目。Hive的主要特点包括:
架构[编辑 | 编辑源代码]
Hive的架构主要由以下组件组成:
主要组件[编辑 | 编辑源代码]
- 用户接口:包括CLI、JDBC/ODBC驱动和Web UI
- Hive服务器:提供Thrift接口,允许远程客户端提交请求
- 元数据存储:通常使用关系型数据库(如MySQL)存储表结构等元数据
- 执行引擎:将HiveQL转换为底层计算框架任务
- HDFS:存储实际数据
HiveQL[编辑 | 编辑源代码]
HiveQL是Hive的查询语言,与SQL-92标准高度兼容但有一些扩展和限制。以下是一个基本示例:
-- 创建表
CREATE TABLE IF NOT EXISTS employees (
id INT,
name STRING,
salary FLOAT,
department STRING
)
COMMENT '员工信息表'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
-- 加载数据
LOAD DATA LOCAL INPATH '/path/to/employees.csv'
OVERWRITE INTO TABLE employees;
-- 查询示例
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING avg_salary > 5000;
数据模型[编辑 | 编辑源代码]
Hive支持多种数据模型:
表类型[编辑 | 编辑源代码]
- 托管表:数据由Hive管理,删除表时数据也会被删除
- 外部表:数据存储在外部位置,删除表仅删除元数据
存储格式[编辑 | 编辑源代码]
Hive支持多种存储格式:
性能优化[编辑 | 编辑源代码]
Hive提供了多种优化技术:
- 分区:按列值将表数据物理分割
- 分桶:基于哈希值将数据分散到固定数量的桶中
- 索引:加速数据查找
- 向量化查询:一次处理一批记录而非单条记录
- CBO(基于成本的优化器):优化查询执行计划
与其他技术的集成[编辑 | 编辑源代码]
Hive可以与多种大数据技术集成:
应用场景[编辑 | 编辑源代码]
Hive广泛应用于:
- 数据仓库构建
- 商业智能分析
- 日志处理
- 数据挖掘
- ETL(提取、转换、加载)流程
版本历史[编辑 | 编辑源代码]
Hive的主要版本发布历史:
- 0.1.0 (2009) - 初始版本
- 0.7.0 (2011) - 添加索引支持
- 0.13.0 (2014) - 引入基于成本的优化器
- 1.0.0 (2015) - 首个稳定版本
- 2.0.0 (2016) - LLAP(Live Long and Process)功能
- 3.0.0 (2018) - 重大性能改进
- 4.0.0 (2022) - 支持JDK 11,改进ACID功能
限制[编辑 | 编辑源代码]
尽管功能强大,Hive也有一些限制:
- 不适合低延迟查询(通常秒级响应)
- 不支持事务(完整ACID支持在较新版本中有限实现)
- 更新和删除操作效率较低
- 子查询支持有限