数据目录

Apache Polaris(孵化中)

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

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

Polaris 集成状态

Polaris 集成自 Polaris 1.3.0 和 Hudi 1.1.1 起可用。

概述

Apache Hudi 通过将建表操作委托给 Polaris Spark 客户端,实现与 Apache Polaris(Incubating)catalog 的集成。借助该集成,通过 Spark SQL 创建的 Hudi 表会自动注册到 Polaris Catalog 中,从而在数据湖仓中实现统一的元数据管理。

该集成的工作方式是:检测 Spark 会话中是否配置了 Polaris catalog,并将 createTable 操作委托给 Polaris Spark catalog 实现,从而确保 Hudi 表的元数据在 Polaris 中得到正确注册。

工作原理

当配置了 Polaris catalog 时,Hudi 会自动检测到它,并将建表操作路由到 Polaris。这意味着:

  • 通过 Spark SQL 创建的 Hudi 表会自动注册到 Polaris catalog 中
  • 这些表仍然是功能完整的 Hudi 表,具备 Hudi 的全部特性(时间旅行、增量查询等)
  • 这些表可通过 Polaris catalog 接口被发现和查询

配置

要启用 Polaris catalog 集成,需要同时在 Spark 中配置 Polaris catalog,并在 Hudi 配置中指定该 catalog 的类名。

Spark Catalog 配置

首先,在 Spark 会话中配置 Polaris catalog:

set spark.sql.catalog.polaris_catalog=org.apache.polaris.spark.SparkCatalog

Hudi 配置

将 Hudi 配置为使用 Polaris catalog 类:

hoodie.spark.polaris.catalog.class=org.apache.polaris.spark.SparkCatalog

配置属性:

属性默认值说明
hoodie.spark.polaris.catalog.classorg.apache.polaris.spark.SparkCatalogPolaris Spark 客户端所使用的目录(catalog)的完全限定类名

该配置属性在 Hudi 1.1.0 中引入,并被标记为高级属性。其默认值与标准的 Polaris Spark 目录实现保持一致。

使用示例

使用 Polaris 目录创建 Hudi 表

配置好 Polaris 目录后,即可使用 Spark SQL 创建 Hudi 表。Hudi 会自动检测 Polaris 目录配置,并将表注册操作委托给 Polaris:

CREATE TABLE IF NOT EXISTS mydb.hudi_table (
  id INT,
  name STRING,
  ts BIGINT,
  dt STRING
) USING hudi
PARTITIONED BY (dt)
TBLPROPERTIES (
  primaryKey = 'id'
)

写入 Hudi 表数据

你可以使用 INSERT INTO SQL 语句向 Hudi 表写入数据:

INSERT INTO mydb.hudi_table
SELECT 1 AS id, 'John' AS name, 1695159649087 AS ts, '2024-01-01' AS dt;

-- Insert with dynamic partitioning
INSERT INTO mydb.hudi_table PARTITION(dt)
SELECT 2 AS id, 'Jane' AS name, 1695159649088 AS ts, '2024-01-02' AS dt;

查询 Hudi 表

像平常一样查询 Hudi 表即可,这些表可以通过已配置的 Catalog 访问:

SELECT * FROM mydb.hudi_table
WHERE dt = '2024-01-01'

评论

登录后参与评论

正在加载评论…