转换为 Delta Lake

CONVERT TO DELTA SQL 命令将 Parquet 和 Iceberg 表一次性转换为 Delta Lake 表。 有关将 Parquet 或 Iceberg 表增量转换为 Delta Lake 的信息,请参阅以增量方式将 Parquet 和 Iceberg 表克隆到 Delta Lake

Unity Catalog 支持针对存储在 Unity Catalog 管理的外部位置的 Parquet 和 Iceberg 表执行 CONVERT TO DELTA SQL 命令。

可以在 Unity Catalog 中将现有 Parquet 数据文件配置为外部表,然后将其转换为 Delta Lake,从而解锁 Databricks 湖屋的所有功能。

有关技术文档,请参阅转换为 Delta

将外部位置中的 Parquet 或 Iceberg 文件的目录转换为 Delta Lake

注意

  • 转换 Iceberg 表的功能目前为公共预览版
  • Databricks Runtime 10.4 和更高版本支持转换 Iceberg 表。
  • 不支持转换 Iceberg 元存储表。
  • 不支持转换经历过分区演变的 Iceberg 表。
  • 不支持转换经历过更新、删除或合并的 Iceberg 读取时合并表。
  • 以下是使用截断列上定义的分区转换 Iceberg 表的限制:
    • 在 Databricks Runtime 13.0 及更低版本中,唯一支持的截断列类型是 string
    • 在 Databricks Runtime 13.1 及更高版本中,可以使用 stringlongint 类型的截断列。
    • Azure Databricks 不支持使用 decimal 类型的截断列。

只要对存储位置具有写入权限,即可将 Parquet 数据文件的目录转换为 Delta Lake 表;有关使用 Unity Catalog 配置访问权限的信息,请参阅使用 Unity Catalog 连接到云对象存储

注意

Unity Catalog 需要 Azure Data Lake Storage Gen2。

CONVERT TO DELTA parquet.`abfss://container@storageAccount.dfs.core.chinacloudapi.cn/parquet-data`;

CONVERT TO DELTA iceberg.`abfss://container@storageAccount.dfs.core.chinacloudapi.cn/iceberg-data`;

若要将转换后的表作为外部表加载到 Unity Catalog,则需要具有外部位置的 CREATE TABLES 权限。

注意

对于 Databricks Runtime 11.2 及更高版本,CONVERT TO DELTA 会自动推断注册到元存储的表的分区信息,从而无需手动指定分区。

在 Unity Catalog 上将托管表和外部表转换为 Delta Lake

Unity Catalog 支持多种外部表格式,但仅支持 Delta Lake 格式的托管表。 若要将托管 Parquet 表直接转换为托管 Unity Catalog Delta Lake 表,请参阅将表升级到 Unity Catalog 托管表

若要将外部 Parquet 表升级到 Unity Catalog,请参阅将单个外部表升级到 Unity Catalog

将外部 Parquet 表注册到 Unity Catalog 后,即可将其转换为外部 Delta Lake 表。 请注意,如果已对 Parquet 表进行分区处理,则必须提供分区信息。

CONVERT TO DELTA catalog_name.database_name.table_name;

CONVERT TO DELTA catalog_name.database_name.table_name PARTITIONED BY (date_updated DATE);