Apache Polaris(孵化中)
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.SparkCatalogHudi 配置
将 Hudi 配置为使用 Polaris catalog 类:
hoodie.spark.polaris.catalog.class=org.apache.polaris.spark.SparkCatalog配置属性:
| 属性 | 默认值 | 说明 |
|---|---|---|
hoodie.spark.polaris.catalog.class | org.apache.polaris.spark.SparkCatalog | Polaris 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'评论
登录后参与评论
KnowForge