Loading...
Loading...
Compare original and translation side by side
write.metadata.pathwrite.metadata.previous-versions-maxPARTITIONED BYCLUSTER BYPARTITIONED BYCLUSTER BYPARTITIONED BYCLUSTER BYbucket()years()months()days()hours()PARTITIONED BYCLUSTER BY'delta.enableDeletionVectors' = false'delta.enableRowTracking' = falsePARTITIONED BYwrite.metadata.pathwrite.metadata.previous-versions-maxPARTITIONED BYCLUSTER BYPARTITIONED BYCLUSTER BYPARTITIONED BYCLUSTER BYPARTITIONED BYbucket()years()months()days()hours()CLUSTER BY'delta.enableDeletionVectors' = false'delta.enableRowTracking' = falsePARTITIONED BY| Concept | Summary |
|---|---|
| Managed Iceberg Table | Native Iceberg table created with |
| External Iceberg Reads (Uniform) | Delta table that auto-generates Iceberg metadata — read as Iceberg externally, write as Delta internally |
| Compatibility Mode | UniForm variant for streaming tables and materialized views in SDP pipelines |
| Iceberg REST Catalog (IRC) | Unity Catalog's built-in REST endpoint implementing the Iceberg REST Catalog spec — lets external engines (Spark, PyIceberg, Snowflake) access UC-managed Iceberg data |
| Iceberg v3 | Next-gen format (Beta, DBR 17.3+) — deletion vectors, VARIANT type, row lineage |
| 概念 | 概述 |
|---|---|
| 托管 Iceberg 表 | 使用 |
| 外部 Iceberg 读取(Uniform) | 自动生成 Iceberg 元数据的 Delta 表——外部可作为 Iceberg 读取,内部作为 Delta 写入 |
| 兼容模式 | 适用于 SDP 流水线中流表和物化视图的 UniForm 变体 |
| Iceberg REST Catalog(IRC) | Unity Catalog 内置的 REST 端点,实现了 Iceberg REST Catalog 规范——允许外部引擎(Spark、PyIceberg、Snowflake)访问 UC 托管的 Iceberg 数据 |
| Iceberg v3 | 下一代格式(Beta 版,DBR 17.3+)——支持删除向量、VARIANT 类型、行谱系 |
-- No clustering
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
AS SELECT * FROM raw_events;
-- PARTITIONED BY (recommended for cross-platform): standard Iceberg syntax, works on EMR/OSS Spark/Trino/Flink
-- auto-disables DVs and row tracking — no TBLPROPERTIES needed on v2 or v3
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
PARTITIONED BY (event_date)
AS SELECT * FROM raw_events;
-- CLUSTER BY on Iceberg v2 (DBR-only syntax): must manually disable DVs and row tracking
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
TBLPROPERTIES (
'delta.enableDeletionVectors' = false,
'delta.enableRowTracking' = false
)
CLUSTER BY (event_date)
AS SELECT * FROM raw_events;
-- CLUSTER BY on Iceberg v3 (DBR-only syntax): no TBLPROPERTIES needed
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
TBLPROPERTIES ('format-version' = '3')
CLUSTER BY (event_date)
AS SELECT * FROM raw_events;-- No clustering
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
AS SELECT * FROM raw_events;
-- PARTITIONED BY (recommended for cross-platform): standard Iceberg syntax, works on EMR/OSS Spark/Trino/Flink
-- auto-disables DVs and row tracking — no TBLPROPERTIES needed on v2 or v3
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
PARTITIONED BY (event_date)
AS SELECT * FROM raw_events;
-- CLUSTER BY on Iceberg v2 (DBR-only syntax): must manually disable DVs and row tracking
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
TBLPROPERTIES (
'delta.enableDeletionVectors' = false,
'delta.enableRowTracking' = false
)
CLUSTER BY (event_date)
AS SELECT * FROM raw_events;
-- CLUSTER BY on Iceberg v3 (DBR-only syntax): no TBLPROPERTIES needed
CREATE TABLE my_catalog.my_schema.events
USING ICEBERG
TBLPROPERTIES ('format-version' = '3')
CLUSTER BY (event_date)
AS SELECT * FROM raw_events;ALTER TABLE my_catalog.my_schema.customers
SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);ALTER TABLE my_catalog.my_schema.customers
SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);| Table Type | Databricks Read | Databricks Write | External IRC Read | External IRC Write |
|---|---|---|---|---|
Managed Iceberg ( | Yes | Yes | Yes | Yes |
| Delta + UniForm | Yes (as Delta) | Yes (as Delta) | Yes (as Iceberg) | No |
| Delta + Compatibility Mode | Yes (as Delta) | Yes | Yes (as Iceberg) | No |
| 表类型 | Databricks 读取 | Databricks 写入 | 外部 IRC 读取 | 外部 IRC 写入 |
|---|---|---|---|---|
托管 Iceberg( | 是 | 是 | 是 | 是 |
| Delta + UniForm | 是(作为 Delta) | 是(作为 Delta) | 是(作为 Iceberg) | 否 |
| Delta + 兼容模式 | 是(作为 Delta) | 是 | 是(作为 Iceberg) | 否 |
| File | Summary | Keywords |
|---|---|---|
| references/1-managed-iceberg-tables.md | Creating and managing native Iceberg tables — DDL, DML, Liquid Clustering, Predictive Optimization, Iceberg v3, limitations | CREATE TABLE USING ICEBERG, CTAS, MERGE, time travel, deletion vectors, VARIANT |
| references/2-uniform-and-compatibility.md | Making Delta tables readable as Iceberg — UniForm for regular tables, Compatibility Mode for streaming tables and MVs | UniForm, universalFormat, Compatibility Mode, streaming tables, materialized views, SDP |
| references/3-iceberg-rest-catalog.md | Exposing Databricks tables to external engines via the IRC endpoint — auth, credential vending, IP access lists | IRC, REST Catalog, credential vending, EXTERNAL USE SCHEMA, PAT, OAuth |
| references/4-snowflake-interop.md | Bidirectional Snowflake-Databricks integration — catalog integration, foreign catalogs, vended credentials | Snowflake, catalog integration, external volume, vended credentials, REFRESH_INTERVAL_SECONDS |
| references/5-external-engine-interop.md | Connecting PyIceberg, OSS Spark, AWS EMR, Apache Flink, and Kafka Connect via IRC | PyIceberg, OSS Spark, EMR, Flink, Kafka Connect, pyiceberg.yaml |
| 文档 | 概述 | 关键词 |
|---|---|---|
| references/1-managed-iceberg-tables.md | 创建和管理原生 Iceberg 表——DDL、DML、液态聚类、预测优化、Iceberg v3、限制 | CREATE TABLE USING ICEBERG、CTAS、MERGE、时间旅行、删除向量、VARIANT |
| references/2-uniform-and-compatibility.md | 将 Delta 表转换为可作为 Iceberg 读取的表——针对普通表的 UniForm、针对流表和物化视图的兼容模式 | UniForm、universalFormat、兼容模式、流表、物化视图、SDP |
| references/3-iceberg-rest-catalog.md | 通过 IRC 端点向外部引擎暴露 Databricks 表——认证、凭证分发、IP 访问列表 | IRC、REST Catalog、凭证分发、EXTERNAL USE SCHEMA、PAT、OAuth |
| references/4-snowflake-interop.md | Snowflake 与 Databricks 的双向集成——目录集成、外部目录、凭证分发 | Snowflake、目录集成、外部卷、凭证分发、REFRESH_INTERVAL_SECONDS |
| references/5-external-engine-interop.md | 通过 IRC 连接 PyIceberg、OSS Spark、AWS EMR、Apache Flink 和 Kafka Connect | PyIceberg、OSS Spark、EMR、Flink、Kafka Connect、pyiceberg.yaml |
| Issue | Solution |
|---|---|
| No Change Data Feed (CDF) | CDF is not supported on managed Iceberg tables. Use Delta + UniForm if you need CDF. |
| UniForm async delay | Iceberg metadata generation is asynchronous. After a write, there may be a brief delay before external engines see the latest data. Check status with |
| Compression codec change | Managed Iceberg tables use |
| Snowflake 1000-commit limit | Snowflake's Iceberg catalog integration can only see the last 1000 Iceberg commits. High-frequency writers must compact metadata or Snowflake will lose visibility of older data. |
| Deletion vectors with UniForm | UniForm requires deletion vectors to be disabled ( |
| No shallow clone for Iceberg | |
| Version mismatch with external engines | Ensure external engines use an Iceberg library version compatible with the format version of your tables. Iceberg v3 tables require Iceberg library 1.9.0+. |
| 问题 | 解决方案 |
|---|---|
| 无变更数据捕获(CDF) | 托管 Iceberg 表不支持 CDF。如果需要 CDF,请使用 Delta + UniForm。 |
| UniForm 异步延迟 | Iceberg 元数据生成是异步的。写入后,外部引擎可能需要短暂延迟才能看到最新数据。使用 |
| 压缩编解码器变更 | 托管 Iceberg 表默认使用 |
| Snowflake 1000 次提交限制 | Snowflake 的 Iceberg 目录集成只能查看最近 1000 次 Iceberg 提交。高频写入者必须压缩元数据,否则 Snowflake 会丢失旧数据的可见性。 |
| UniForm 与删除向量冲突 | UniForm 要求禁用删除向量( |
| Iceberg 不支持浅克隆 | Iceberg 表不支持 |
| 与外部引擎版本不匹配 | 确保外部引擎使用的 Iceberg 库版本与表的格式版本兼容。Iceberg v3 表需要 Iceberg 库 1.9.0+。 |