CONVERT TO DELTA
命令功能
CONVERT TO DELTA 命令将现有的 Parquet 表就地转换为 Delta 表。 此命令会列出目录中的所有文件,创建 Delta Lake 事务日志来跟踪这些文件,并通过读取所有 Parquet 文件的页脚来自动推断数据架构。 转换过程会收集统计信息,以提升转换后的 Delta 表的查询性能。 如果提供表名,则元存储也将更新,以反映该表现在是 Delta 表。
注意事项
分区表转换需要设置参数spark.sql.forcePartitionPredicatesOnPartitionedTable.enabled为false。
命令格式
CONVERT TO DELTA [database_name.]table_name [NO STATISTICS]
参数描述
参数 |
描述 |
---|---|
database_name |
Database名称,由字母、数字和下划线(_)组成。 |
table_name |
Database中的表名,由字母、数字和下划线(_)组成。 |
NO STATISTICS |
表示在转换过程中绕过统计信息收集,以更快的速度完成转换。 |
所需权限
- SQL权限
权限描述 |
---|
表所在数据库的CREATE_TABLE权限 |
表的ALTER权限 |
表的INSERT_INTO_TABLE权限 |
表的DROP_TABLE权限 |
- 细粒度权限:dli:database:createTable, dli:table:alter, dli:table:insertIntoTable, dli:table:dropTable。
- 由LakeFormation提供的元数据服务,权限配置详见LakeFormation文档。
示例
create table if not exists parquet_table0 (id int,name string,price double) using parquet location 'obs://bucket_name0/db0/parquet_table0'; convert to delta parquet_table0;
系统响应
执行成功。