用途:介绍在 Databricks 上使用 Apache Iceberg 的多种方式,包括原生托管 Iceberg 表、Delta 转 Iceberg 的 UniForm 互操作,以及供外部引擎访问的 Iceberg REST Catalog(IRC)。
主要能力:托管 Iceberg 表用 USING ICEBERG 创建,Databricks 与外部 Iceberg 引擎均可读写;UniForm 让 Delta 表自动生成 Iceberg 元数据,外部按 Iceberg 读、内部按 Delta 写;兼容模式面向 SDP 流水线中的流式表与物化视图;IRC 是 Unity Catalog 内置的 REST 端点,供 Spark、PyIceberg、Snowflake 等访问;Iceberg v3 为 Beta(DBR 17.3+),含删除向量、VARIANT 类型、行血缘。
必要用法:所有 Iceberg 功能需启用 Unity Catalog 的工作区;不要在 DBR 中安装 Iceberg 库,DBR 已内置,否则版本冲突;不要设置 write.metadata.path 或 write.metadata.previous-versions-max。建表示例:CREATE TABLE my_catalog.my_schema.events USING ICEBERG AS SELECT * FROM raw_events; 跨平台推荐 PARTITIONED BY,仅支持普通列引用,不支持 bucket()、years() 等表达式变换。Iceberg v2 上用 CLUSTER BY 需手动设 'delta.enableDeletionVectors' = false 与 'delta.enableRowTracking' = false;v3 无需。为已有 Delta 表启用 UniForm:ALTER TABLE ... SET TBLPROPERTIES ('delta.columnMapping.mode'='name','delta.enableIcebergCompatV2'='true','delta.universalFormat.enabledFormats'='iceberg')。
适用场景:新建 Iceberg 表、让已有 Delta 表或流式表/物化视图可被 Iceberg 读取、通过 REST 暴露给外部引擎、与 Snowflake 双向集成、连接 PyIceberg/OSS Spark/EMR/Flink/Kafka。
限制:托管 Iceberg 表不支持变更数据馈送(CDF),需要 CDF 应改用 Delta + UniForm;UniForm 元数据异步生成,外部读取可能有延迟;默认 zstd 压缩,旧读取器可能不兼容;Snowflake 集成仅见最近 1000 次提交;UniForm 要求禁用删除向量;Iceberg 表不支持 SHALLOW CLONE;外部引擎需匹配格式版本的 Iceberg 库,v3 需 1.9.0+。