CONVERTIR A DELTA
Se aplica a: Databricks SQL Databricks Runtime
Convierte una tabla de Parquet existente en una tabla de Delta local. Este comando enumera todos los archivos del directorio, crea un registro de transacciones de Delta Lake que realiza el seguimiento de estos archivos y deduce automáticamente el esquema de datos leyendo los pies de página de todos los archivos Parquet. El proceso de conversión recopila estadísticas para mejorar el rendimiento de las consultas en la tabla de Delta convertida. Si proporciona un nombre de tabla, el metastore también se actualiza para reflejar que la tabla es ahora una tabla de Delta.
Este comando admite la conversión de tablas de Iceberg cuyo formato de archivo subyacente es Parquet. En este caso, el convertidor genera un registro de transacciones de Delta Lake basado en el manifiesto de archivo nativo, el esquema y la información de creación de particiones de la tabla Iceberg.
Sintaxis
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parámetros
-
Un identificador de tabla calificado o una ruta a un directorio de archivos
parquet
oiceberg
. El nombre no debe incluir una especificación temporal. En el caso de las tablas de Iceberg, solo se pueden usar rutas de acceso, ya que no se admite la conversión de tablas de Iceberg administradas. NO STATISTICS
Omita la recopilación de estadísticas durante el proceso de conversión y finalice la conversión con mayor rapidez. Después de convertir la tabla a Delta Lake, puede usar
OPTIMIZE ZORDER BY
para reorganizar la distribución de datos y generar estadísticas.-
Realice particiones de la tabla que haya creado por las columnas especificadas. Cuando
table_name
es una ruta de acceso,PARTITIONED BY
es necesario para los datos con particiones. Cuando eltable_name
es un identificador de tabla calificado, la cláusulaPARTITIONED BY
es opcional y la especificación de partición se carga desde el metastore. En cualquiera de los dos enfoques, el proceso de conversión aborta y lanza una excepción si la estructura del directorio no se ajusta a la especificaciónPARTITIONED BY
proporcionada o cargada.Nota:
En Databricks Runtime 11.1 y versiones posteriores,
PARTITIONED BY
es un argumento necesario para todos los datos con particiones.
Ejemplos
Nota:
No es necesario proporcionar información sobre la creación de particiones para las tablas de Iceberg o las registradas en el metastore.
CONVERT TO DELTA database_name.table_name; -- only for Parquet tables
CONVERT TO DELTA parquet.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`
PARTITIONED BY (date DATE); -- if the table is partitioned
CONVERT TO DELTA iceberg.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`; -- uses Iceberg manifest for metadata
Advertencias
Los archivos que quedan fuera del seguimiento de Delta Lake son invisibles y se pueden eliminar al ejecutar VACUUM
. Debe evitar actualizar o anexar archivos de datos durante el proceso de conversión. Una vez que se convierta la tabla, asegúrese de que todas las operaciones de escritura pasan por Delta Lake.
Es posible que varias tablas externas compartan el mismo directorio de Parquet subyacente. En este caso, si se ejecuta CONVERT
en una de las tablas externas, no podrá acceder a las otras tablas externas, porque su directorio subyacente se ha convertido de Parquet a Delta Lake. Para consultar o escribir de nuevo en estas tablas externas, también debe ejecutar CONVERT
en ellas.
CONVERT
rellena la información del catálogo, como las propiedades de esquema y tabla, en el registro de transacciones de Delta Lake. Si el directorio subyacente ya se ha convertido a Delta Lake y sus metadatos son diferentes de los del catálogo, se inicia una excepción convertMetastoreMetadataMismatchException
.
Al usar Databricks Runtime, si quiere que CONVERT
sobrescriba los metadatos existentes en el registro de transacciones de Delta Lake, establezca la configuración SQL spark.databricks.delta.convert.metadataCheck.enabled
en false.