Hive集成使用
更新时间 2026-10-12 11:42:27
最近更新时间: 2026-10-12 11:42:27
本章节介绍Hive集成使用。
Hive 查询 Hudi 表
Hudi 表的元数据已由平台同步至 Hive Metastore,用户通过 Beeline 等 Hive 客户端即可按普通表方式查询,表数据的写入统一由 Spark/Flink 完成,Hive 侧只做读取。
平台同步的Hive 表 InputFormat 按表类型自动设置:
| 查询方式 | InputFormat | 说明 |
|---|---|---|
| COW 表 / MOR 读优化查询 | org.apache.hudi.hadoop.HoodieParquetInputFormat | 读取基础文件(Parquet) |
| MOR 表快照查询 | org.apache.hudi.hadoop.realtime.HoodieParquetRealtimeInputFormat | 读时合并基础文件与日志文件 |
查询COW 表与 Spark 引擎一致;针对 MOR 表,Hive 中通过表名后缀区分两种查询视图:
-- 仅查询数据文件(基础文件)中的数据(读优化视图,_ro 后缀)
select id, name, date_time from hudi_db.orders_mor_ro;
-- 查询数据文件 + 日志文件中的最新数据(实时视图,_rt 后缀)
select id, name, date_time from hudi_db.orders_mor_rt;_ro 表未包含未压缩日志中的最新更新数据,_rt 表可查询到最新数据。若 Hive 中仅存在 _ro 表(读优化同步),需读取最新数据时改用 Spark 快照查询,或等待/触发压缩后再查。
注意
MOR 表在 Hive 中查询时,若表 InputFormat 为 HoodieParquetInputFormat 则仅读取已压缩的基础文件(读优化查询),未压缩日志中的最新数据不含在结果内。
Hive 增量查询
Hive 中对 Hudi 表做增量查询,先设置 InputFormat 与增量属性,再按表属性指定的时刻拉取增量数据:
SET hive.input.format=org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormat;增量属性通过建表时的表参数(TBLPROPERTIES)指定:hoodie.datasource.query.type=incremental 与 hoodie.datasource.read.begin.instanttime,查询语法与普通 SELECT 相同。
注意
Hive 侧增量查询功能与性能均有限,不推荐生产环境使用;生产环境的增量消费优先使用 Spark 增量查询或 Flink 流式读取。