Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Les vecteurs de suppression accélèrent DELETE, UPDATEet MERGE les opérations sur les tables Delta Lake et Apache Iceberg. Sans vecteurs de suppression, la modification d’une seule ligne nécessite la réécriture du fichier Parquet entier contenant cet enregistrement. Les vecteurs de suppression marquent plutôt les lignes comme modifiées dans les métadonnées, et les opérations de lecture appliquent les entrées des vecteurs de suppression lors de l’exécution de la requête pour déterminer l’état actuel de la table.
Note
Pour les mises à jour d’E/S prédictives, Photon utilise des vecteurs de suppression pour accélérer DELETE, MERGEet UPDATE les opérations. Consultez Utiliser des E/S prédictives pour accélérer les mises à jour.
Prerequisites
Toutes les tables Apache Iceberg v3 incluent des vecteurs de suppression par défaut. Consultez Utiliser les fonctionnalités Apache Iceberg v3. Pour les tables Delta Lake, vous devez activer explicitement les vecteurs de suppression.
Pour écrire des tables avec des vecteurs de suppression à l’aide de toutes les optimisations, utilisez Databricks Runtime 14.3 LTS et versions ultérieures. Pour les lire, utilisez Databricks Runtime 12.2 LTS et versions ultérieures.
Dans Azure Databricks Runtime 14.2 et versions ultérieures, les tables avec vecteurs de suppression prennent en charge la concurrence au niveau des lignes. Consultez la concurrence au niveau des lignes.
Compatibilité du client
Azure Databricks utilise des vecteurs de suppression pour alimenter les E/S prédictives pour les mises à jour sur le calcul compatible Photon. Consultez Utiliser des E/S prédictives pour accélérer les mises à jour.
La prise en charge de l’utilisation de vecteurs de suppression pour les lectures et les écritures varie selon le client.
Le tableau suivant répertorie les versions clientes requises pour lire et écrire des tables vectorielles de suppression :
| Client | Vecteurs de suppression d’écriture | Vecteurs de suppression de lecture |
|---|---|---|
| Databricks Runtime avec Photon | Prend en charge MERGE, UPDATE et DELETE en utilisant Databricks Runtime 12.2 LTS et versions ultérieures. |
Nécessite Databricks Runtime 12.2 LTS ou version ultérieure. |
| Databricks Runtime sans Photon | Prend en charge DELETE en utilisant Databricks Runtime 12.2 LTS et versions ultérieures. Prend en charge UPDATE en utilisant Databricks Runtime 14.1 et versions supérieures. Prend en charge MERGE en utilisant Databricks Runtime 14.3 LTS et des versions ultérieures. |
Nécessite Databricks Runtime 12.2 LTS ou version ultérieure. |
| OSS Apache Spark avec OSS Delta Lake | Prend en charge DELETE en utilisant OSS Delta 2.4.0 et versions supérieures. Prend en charge UPDATE en utilisant OSS Delta 3.0.0 et versions supérieures. |
Nécessite OSS Delta 2.3.0 ou version supérieure. |
| Destinataires OpenSharing | Les opérations d’écriture ne sont pas prises en charge dans les tables OpenSharing. | Azure Databricks nécessite Databricks Runtime 14.1 ou version ultérieure. Apache Spark open source nécessite delta-sharing-spark la version 3.1 ou ultérieure. |
Pour obtenir de l'assistance pour les autres clients, consultez la documentation des intégrations OSS Delta Lake.
Activer les vecteurs de suppression
Dans les paramètres de l’espace de travail, vous pouvez activer les vecteurs de suppression sur de nouvelles tables lorsque vous utilisez un entrepôt SQL ou Databricks Runtime 14.3 LTS ou version ultérieure. Les paramètres par défaut varient selon la région, consultez les vecteurs de suppression à activation automatique.
Les vecteurs de suppression ne sont pas activés par défaut pour les vues matérialisées et les tables de diffusion en continu stockées dans le metastore Hive.
Pour activer ou supprimer manuellement des vecteurs de suppression sur n’importe quelle table ou vue, utilisez la enableDeletionVectors propriété table.
Pour activer les vecteurs de suppression sur une table lorsque vous créez ou modifiez une table :
Delta Lake
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Table Iceberg
CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
Vous ne pouvez pas utiliser d’instruction ALTER pour activer ou supprimer des vecteurs de suppression sur une vue matérialisée ou une table de diffusion en continu. Vous devez utiliser une CREATE TABLE instruction.
Avertissement
Lorsque vous activez les vecteurs de suppression, Databricks met à niveau le protocole de table. Après la mise à niveau, les clients sans prise en charge du vecteur de suppression ne peuvent pas lire la table. Consultez les protocoles et la compatibilité des fonctionnalités Delta Lake.
Dans Databricks Runtime 14.1 et versions ultérieures, vous pouvez supprimer la fonctionnalité de table de vecteurs de suppression pour permettre la compatibilité avec d’autres clients. Consultez Supprimer une fonctionnalité de table Delta Lake et passer à une version antérieure du protocole de table.
Appliquer des suppressions réversibles aux fichiers de données
Les vecteurs de suppression signalent les modifications apportées aux lignes sous forme de suppressions réversibles qui modifient logiquement les fichiers de données Parquet existants de la table. Pour réécrire physiquement les fichiers de données Parquet, effectuez l’une des opérations suivantes :
- Exécutez
OPTIMIZEsur la table. - Exécutez
REORG TABLE ... APPLY (PURGE)sur la table. Cette commande réécrit tous les fichiers de données contenant des enregistrements avec des modifications de vecteur de suppression. Voir REORG TABLE. - Exécutez une écriture avec compactage automatique, ce qui déclenche une réécriture d’un fichier de données avec un vecteur de suppression.
Les événements de compactage de fichiers n’ont pas de garanties strictes pour la résolution des modifications enregistrées dans les vecteurs de suppression. Certaines modifications enregistrées dans les vecteurs de suppression peuvent ne pas être appliquées physiquement si les fichiers de données cibles ne sont pas candidats à un compactage de fichiers.
Supprimer physiquement les anciennes données
Les données modifiées peuvent toujours exister dans les anciens fichiers de données d’une table après une opération de vidage. Vous souhaiterez peut-être supprimer physiquement les données, par exemple pour réduire les coûts de stockage avec votre fournisseur de cloud ou pour vous conformer aux demandes RGPD.
Pour supprimer physiquement les anciennes données :
- Exécutez
REORG TABLE ... APPLY (PURGE) - Exécutez
VACUUMavec le seuil de rétention défini sur l’horodatage de fin de purge afin de supprimer physiquement les fichiers des versions précédentes de la table. Consultez Supprimer uniquement les métadonnées pour forcer la réécriture des données.
Améliorer les performances des tables volumineuses
Pour améliorer les performances des purges sur des tables de grande taille, définissez spark.databricks.delta.reorg.purgeMode sur rows.
Par exemple, définissez cette configuration lorsque vous videz manuellement les données avec REORG TABLE ... APPLY (PURGE) ou lorsque vous supprimez des vecteurs de suppression avec ALTER TABLE DROP FEATURE deletionVectors.
Par défaut, spark.databricks.delta.reorg.purgeMode est défini sur all. Sur les tables volumineuses, cette opération peut être lente, car les opérations de purge doivent analyser tous les pieds de page des fichiers Parquet pour rechercher les données des colonnes supprimées et les lignes supprimées de manière réversible.
La valeur rows limite l’opération pour gérer uniquement les fichiers avec des lignes supprimées de manière réversible. Sur les tables volumineuses, cela peut améliorer les performances si de nombreux fichiers ne contiennent pas de lignes supprimées de manière réversible et que la table n’a pas de colonnes supprimées.
Limitations
- UniForm Iceberg v2 ne prend pas en charge les vecteurs de suppression. Apache Iceberg v3 prend en charge les vecteurs de suppression sur les tables avec UniForm activé. Consultez Utiliser les fonctionnalités Apache Iceberg v3.
- Vous ne pouvez pas utiliser une instruction GENERATE pour générer un fichier manifeste pour une table contenant des fichiers utilisant des vecteurs de suppression. Pour générer un manifeste, exécutez d’abord une instruction REORG TABLE … APPLY (PURGE), puis exécutez l’instruction
GENERATE. Vous devez vérifier qu’aucune opération d’écriture simultanée n’est en cours d’exécution lorsque vous envoyez l’instructionREORG.- Vous ne pouvez pas générer de manière incrémentielle des fichiers manifestes pour une table avec des vecteurs de suppression activés (par exemple, en définissant la propriété de table
delta.compatibility.symlinkFormatManifest.enabled=true).
- Vous ne pouvez pas générer de manière incrémentielle des fichiers manifestes pour une table avec des vecteurs de suppression activés (par exemple, en définissant la propriété de table
- Si vous activez les vecteurs de suppression sur une vue matérialisée ou une table streaming et supprimez par la suite des vecteurs de suppression, les vecteurs de suppression ne s’appliquent pas aux écritures futures dans la vue ou la table, mais les vecteurs de suppression existants restent.
- Vous ne pouvez pas rétrograder le protocole de table après avoir activé les vecteurs de suppression sur une vue matérialisée ou une table streaming, même si vous désactivez par la suite les vecteurs de suppression.