CONVERT TO DELTA

S’applique à :case marquée oui Databricks SQL case marquée oui Databricks Runtime

Convertit une table Parquet existante en une table Delta sur place. Cette commande répertorie tous les fichiers du répertoire, crée un journal des transactions Delta Lake qui effectue le suivi de ces fichiers et déduit automatiquement le schéma de données en lisant les pieds de page de tous les fichiers Parquet. Le processus de conversion collecte les statistiques pour améliorer les performances des requêtes dans la table Delta convertie. Si vous fournissez un nom de table, le metastore est également mis à jour pour indiquer que la table est maintenant une table Delta.

Cette commande prend en charge la conversion de tables Iceberg dont le format de fichier sous-jacent est Parquet. Dans ce cas, le convertisseur génère le journal des transactions Delta Lake basé sur le schéma, les informations de partitionnement et le manifeste de fichier natif de la table Iceberg.

Syntaxe

CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]

Paramètres

  • table_name

    Soit un identificateur de table qualifié au choix, soit un chemin à un répertoire de fichier parquet ou iceberg. Le nom ne doit pas inclure une spécification temporelle. Pour les tables Iceberg, vous ne pouvez utiliser que des chemins, car la conversion de tables Iceberg managées n’est pas prise en charge.

  • NO STATISTICS

    Contournez les collections de statistiques pendant le processus de conversion et accélérez la conversion. Une fois la table convertie en Delta Lake, vous pouvez utiliser OPTIMIZE ZORDER BY pour réorganiser la disposition des données et générer des statistiques.

  • PARTITIONNÉ PAR

    Partitionnez la table créée par les colonnes spécifiées. Quand table_name est un chemin, PARTITIONED BY est obligatoire pour les données partitionnées. Quand table_name est un identificateur de table qualifié, la clause PARTITIONED BY est facultative et la spécification de la partition est chargée à partir du metastore. Quelle que soit l’approche, le processus de conversion s’interrompt et lève une exception si la structure du répertoire n’est pas conforme à la spécification PARTITIONED BY fournie ou chargée.

    Notes

    Dans Databricks Runtime 11.1 et antérieur, PARTITIONED BY est un argument obligatoire pour toutes les données partitionnées.

Exemples

Notes

Vous n’avez pas besoin de fournir des informations de partitionnement pour les tables Icebergs ou les tables inscrites dans le 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

Mises en garde

Tout fichier non suivi par Delta Lake est invisible et peut être supprimé lorsque vous exécutez VACUUM. Vous devez éviter de mettre à jour ou d’ajouter des fichiers de données pendant le processus de conversion. Une fois la table convertie, assurez-vous que toutes les écritures transitent par Delta Lake.

Il est possible que plusieurs tables externes partagent le même répertoire Parquet sous-jacent. Dans ce cas, si vous exécutez CONVERT sur l'une des tables externes, vous ne pourrez pas accéder aux autres tables externes car leur répertoire sous-jacent a été converti de Parquet vers Delta Lake. Pour interroger ou écrire à nouveau dans ces tables externes, vous devez également exécuter CONVERT sur ces tables.

CONVERT fournit les informations du catalogue, notamment les propriétés des schémas et des tables, dans le journal des transactions Delta Lake. Si le répertoire sous-jacent a déjà été converti en Delta Lake et que ses métadonnées sont différentes de celles du catalogue, une exception convertMetastoreMetadataMismatchException est levée.

Si vous souhaitez que Databricks Runtime remplace CONVERT par les métadonnées existantes dans le journal des transactions Delta Lake, définissez la configuration SQL spark.databricks.delta.convert.metadataCheck.enabled sur « faux ».

Annuler la conversion

Si vous avez effectué des opérations Delta Lake telles que DELETE ou OPTIMIZE qui peuvent modifier les fichiers de données :

  1. Exécutez la commande suivante pour l’opération garbage collection :
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
  1. Supprimer le répertoire <path-to-table>/_delta_log.