转换为 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 12.2 LTS 及以下版本中,唯一支持的截断列类型是
string
。 - 在 Databricks Runtime 13.3 LTS 及更高版本中,可以使用
string
、long
或int
类型的截断列。 - Azure Databricks 不支持使用
decimal
类型的截断列。
- 在 Databricks Runtime 12.2 LTS 及以下版本中,唯一支持的截断列类型是
只要对存储位置具有写入权限,即可将 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.3 LTS 及更高版本,CONVERT TO DELTA
会自动推断注册到元存储的表的分区信息,从而消除了手动指定分区的需求。
在 Unity Catalog 上将托管表和外部表转换为 Delta Lake
Unity Catalog 支持多种外部表格式,但仅支持 Delta Lake 格式的托管表。 若要将托管的 Parquet 表直接转换为托管的 Unity Catalog Delta Lake 表,请参阅使用 CLONE 将 Hive 托管表升级为 Unity Catalog 托管表。
若要将外部 Parquet 表升级为 Unity Catalog 外部表,请参阅使用升级向导将单个 Hive 表升级为 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);