Hive SQL 查询引擎连接器

Iceberg

师成师成· 更新于 2026-09-29· 阅读 4 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Apache Iceberg 是面向大规模分析型数据集的开放表格式。Iceberg 通过高性能的表格式为 Spark、Trino、PrestoDB、Flink、Hive 和 Impala 等计算引擎添加表支持,其使用方式与 SQL 表完全一致。

提示

本文假定你已经掌握了 Iceberg 的基础知识与操作。对于本文未涉及的 Iceberg 相关知识,可以查阅其官方文档。

通过使用 Kyuubi,我们可以直接以 SQL 查询的方式访问 Iceberg,这比直接使用 Hive 操作 Iceberg 更加便捷、易懂,也更易于扩展。

Iceberg 集成

要启用 Kyuubi Hive SQL 引擎与 Iceberg 的集成,你需要:

  • 引入 Iceberg 的依赖
  • 设置 Hive 扩展与 catalog 的配置

依赖

支持 Iceberg 的 Kyuubi Hive SQL 引擎的 classpath 由以下部分组成:

  1. kyuubi-hive-sql-engine-1.9.1_2.12.jar,随 Kyuubi 发行版部署的引擎 jar 包
  2. 一份 Hive 发行版
  3. iceberg-hive-runtime-<hive.version>_<scala.version>-<iceberg.version>.jar(例如:iceberg-hive-runtime-3.2_2.12-0.14.0.jar),可以从 Maven Central 获取

为了让 Iceberg 包对引擎的运行时 classpath 可见,可以采用以下方式:

  1. 在 Kyuubi 中执行 ADD JAR 语句,将依赖添加到 Hive 的辅助 classpath 中。例如:
ADD JAR /path/to/iceberg-hive-runtime.jar;

警告

请注意不同 Iceberg 与 Hive 版本之间的兼容性,可在 Iceberg 多引擎支持 页面确认。

配置

要启用 Iceberg 功能,可以设置以下配置:在 Hadoop 配置中设置 iceberg.engine.hive.enabled=true。例如,在 hive-site.xml 中进行该设置

Iceberg 操作

以 CREATE TABLE 为例,

CREATE TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler';
CREATE EXTERNAL TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler';

以 SELECT 为例,

SELECT * FROM foo;

以 INSERT 为例,

INSERT INTO foo VALUES (1, 'a'), (2, 'b'), (3, 'c');
INSERT OVERWRITE TABLE target SELECT * FROM source;

以 ALTER 为例,

ALTER TABLE t SET TBLPROPERTIES('...'='...');

评论

登录后参与评论

正在加载评论…