发布时间:2025-11-04 19:20:34 来源:技术快报 作者:应用开发
Apache Hive 是基于一个基于 Apache Hadoop 构建的开源分布式数据仓库系统,支持使用 SQL 执行 PB 级大规模数据分析与查询。布式

Apache Hive 提供的数据主要功能如下。
HiveServer2HiveServer2 服务用于支持接收客户端连接和查询请求。仓库
HiveServer2 支持多客户端并发和身份验证,基于基于 Thrift RPC 实现,布式允许客户端使用 JDBC、数据ODBC 等连接方式。仓库以下是基于一个使用 Beeline 客户端工具连接 Apache Hive 的示例:
复制beeline -u "jdbc:hive2://host:10001/default" Connected to: Apache Hive jdbc:hive2://host:10001/>select count(*) from test_t1;1.2.3.4.HiveServer2 服务同时还包含了一个基于 Jetty 的网站服务,用于提供 Web 浏览器访问方式。布式
Hive MetastoreHive Metastore(HMS)提供了一个管理元数据的数据集中式资料库,并且通过 API 服务提供客户端查询。仓库

Hive Metastore 已经成为了构建数据湖的基于核心基础模块,亿华云这些数据湖充分融合了包括 Apache Spark 和 Presto 在内的布式多样化开源生态系统。
ACID对于 Apache ORC 格式的数据数据表,Apache Hive 提供了完整的 ACID 事务支持;对其他所有数据格式,仅支持追加(Insert-Only)操作。
数据压缩Apache Hive 的数据压缩(Data Compaction)是针对支持 ACID 事务的表(通常是 ORC 格式表)的优化机制,用于提高查询性能并减少存储开销。例如:
复制jdbc:hive2://> alter table test_t1 compact "MAJOR"; Done! jdbc:hive2://> alter table test_t1 compact "MINOR"; Done! jdbc:hive2://> show compactions;1.2.3.4.5.6.7. Iceberg集成Apache Hive 提供了 Apache Iceberg 数据表的原生支持,用户可以直接通过 Hive 的 SQL 接口创建、管理和查询 Iceberg 表,而无需依赖外部工具或复杂配置。香港云服务器
低延迟分析处理Apache Hive 通过低延迟分析处理(LLAP,Low Latency Analytical Processing)实现交互式与亚秒级 SQL 查询。

Apache Hive LLAP 通过持久化服务与智能缓存填补了传统 Hive 在实时分析场景的短板,使其能够兼顾高吞吐批处理与低延迟交互查询。
查询优化Apache Hive 利用 Apache Calcite 框架提供的基于成本优化(CBO)方式实现 SQL 查询的性能优化。

以下是一个使用 EXPLAIN 命令获取执行计划的示例:
复制jdbc:hive2://> explain cbo select ss.ss_net_profit, sr.sr_net_loss from store_sales ss join store_returns sr on (ss.ss_item_sk=sr.sr_item_sk) limit 5; +---------------------------------------------+ Explain +---------------------------------------------+ CBO PLAN: HiveSortLimit(fetch=[5]) HiveProject(ss_net_profit=[$1], sr_net_loss=[$3]) HiveJoin(condition=[=($0, $2)], joinType=[inner]) HiveProject(ss_item_sk=[$2], ss_net_profit=[$22]) HiveFilter(condition=[IS NOT NULL($2)]) HiveTableScan(table=[[tpcds_text_10, store_sales]], table:alias=[ss]) HiveProject(sr_item_sk=[$2], sr_net_loss=[$19]) HiveFilter(condition=[IS NOT NULL($2)]) HiveTableScan(table=[[tpcds_text_10, store_returns]], table:alias=[sr]) +---------------------------------------------+1.2.3.4.5.6.7.8.9.10.11.12.13.14.15. 数据复制Apache Hive 的引导式复制(Bootstrap Replication)和增量复制(Incremental Replication)实现了高效数据备份与恢复。
复制jdbc:hive2://> repl dump src with ( .. .>hive.repl.dump.version=2, .. .>hive.repl.rootdir=hdfs://<host>:<port>/user/replDir/d1 .. .>); Done! jdbc:hive2://> repl load src into tgt with ( .. .>hive.repl.rootdir=hdfs://<host>:<port>/user/replDir/d1 .. .>); Done!1.2.3.4.5.6.7.8.9.10.接下来我们使用 Docker 快速体验 Apache Hive。
首先,获取最新的镜像:
复制docker pull apache/hive:4.0.11.然后设置版本变量:
复制export HIVE_VERSION=4.0.11.启动 HiveServer2 服务,使用嵌入式 Derby 数据库作为元数据存储:
复制docker run -d -p 10000:10000 -p 10002:10002 --env SERVICE_NAME=hiveserver2 --name hive4 apache/hive:${HIVE_VERSION}1.注意,这种方式在服务关闭时会丢弃所有的数据;如果想要持久存储数据表,可以使用外部数据库和存储。b2b供应网
接下来利用 Beeline 客户端连接数据库:
复制docker exec -it hive4 beeline -u jdbc:hive2://localhost:10000/1.或者也可以通过浏览器进行访问:http://localhost:10002/
在 Beeline 客户端中执行以下 SQL 语句:
复制show tables; createtable hive_example(a string, b int) partitioned by(c int); altertable hive_example addpartition(c=1); insertinto hive_example partition(c=1)values(a,1),(a,2),(b,3); selectcount(distinct a)from hive_example; selectsum(b)from hive_example;1.2.3.4.5.6.随便看看