CONVERTIR A DELTA

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí 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

  • table_name

    Un identificador de tabla calificado o una ruta a un directorio de archivos parquet o iceberg. 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.

  • PARTITIONED BY

    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 el table_name es un identificador de tabla calificado, la cláusula PARTITIONED 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ón PARTITIONED 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.

Reversión de la conversión

Si ha realizado operaciones de Delta Lake como DELETE o OPTIMIZE que pueden cambiar los archivos de datos:

  1. Ejecute el comando siguiente para la recolección de elementos no utilizados:
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
  1. Elimine el directorio <path-to-table>/_delta_log.