Supprimer une fonctionnalité de table Delta Lake et rétrograder le protocole de table
Dans Databricks Runtime 16.4 LTS et les versions supérieures, DROP FEATURE supprime une fonctionnalité de table Delta Lake et rétrograde le protocole de table à la version la plus basse qui prend en charge les fonctionnalités restantes. Utilisez ceci uniquement pour rétablir la compatibilité avec les versions antérieures de Databricks Runtime, OpenSharing ou les clients Delta Lake externes.
Toutes les fonctionnalités ne peuvent pas être supprimées. Voir les fonctionnalités de table prises en charge.
La prise en charge héritée de DROP FEATURE est disponible à partir de Databricks Runtime 14.3 LTS. Databricks recommande d’utiliser Databricks Runtime 16.3 et les versions ultérieures pour toutes les commandes DROP FEATURE, ce qui remplace le comportement hérité. Pour la documentation sur la fonctionnalité héritée, consultez Suppression des fonctionnalités de la table Delta (héritées).
Supprimer une fonctionnalité Delta Lake
Toutes les DROP FEATURE opérations sont en conflit avec toutes les écritures concurrentes.
Les lectures en streaming échouent lorsqu'elles rencontrent un commit qui modifie les métadonnées de la table. Vous devez redémarrer les Streams affectés. Pour les méthodes recommandées, consultez Considérations de production pour Structured Streaming.
Vous devez utiliser Databricks Runtime 16.3 ou version supérieure et disposer de privilèges MODIFY sur la table Delta Lake cible. Vous ne pouvez supprimer qu'une seule fonctionnalité de table avec chaque commande DROP FEATURE.
Pour supprimer une fonctionnalité de table, utilisez la syntaxe suivante :
ALTER TABLE <table-name> DROP FEATURE <feature-name>
Voir ALTER TABLE pour plus de détails.
Comportement
Lorsque vous supprimez une fonctionnalité de table, Delta Lake effectue un commit atomique des modifications suivantes dans la table :
- Désactivez les propriétés de table qui utilisent la fonctionnalité de table.
- Réécrivez les fichiers de données sous-jacents si nécessaire afin de supprimer toutes les traces de la fonctionnalité de table de la version actuelle de la table.
- Créez un ensemble de points de contrôle protégés qui permettent aux clients lecteurs de lire correctement l'historique de la table.
- Ajoutez la fonctionnalité de table d'écriture
checkpointProtectionau protocole de table. - Rétrograder le protocole de la table vers les versions de lecteur et d'écriture les plus basses qui prennent en charge toutes les fonctionnalités de table restantes. Consultez Protocole le plus bas possible.
La fonctionnalité de table checkpointProtection
Lorsque vous supprimez une fonctionnalité, Delta Lake réécrit les données et les métadonnées dans l'historique de la table sous forme de points de contrôle protégés afin de respecter la dégradation du protocole.
Après la rétrogradation, la table n’exige plus des clients qu’ils prennent en charge la fonctionnalité supprimée. Les points de contrôle protégés et la fonctionnalité checkpointProtection accomplissent les opérations suivantes :
- Les clients lecteurs qui prennent en charge la fonctionnalité de table supprimée peuvent lire toutes les versions d'historique de table disponibles.
- Les clients lecteurs qui ne prennent pas en charge la fonctionnalité supprimée peuvent lire les versions de l'historique des tables à partir de la version de rétrogradation du protocole.
- Les clients rédacteurs ne modifient pas les points de contrôle créés avant le rétrogradage du protocole.
checkpointProtectionmarque les points de contrôle de dégradation du protocole comme protégés, et les opérations de maintenance de table respectent ces marqueurs.
Bien que vous ne puissiez supprimer qu'une seule fonctionnalité de table avec chaque commande DROP FEATURE, une table peut avoir plusieurs points de contrôle protégés et des fonctionnalités supprimées dans son historique de table.
Toutes les versions de Databricks Runtime prennent en charge la fonctionnalité de table checkpointProtection, ce qui signifie que cette fonctionnalité de table ne bloque pas les lectures ou les écritures sur Databricks.
checkpointProtection ne bloque pas l'accès en lecture seule des clients Delta Lake OSS. Pour rétrograder entièrement la table et supprimer la fonctionnalité de table checkpointProtection, vous devez utiliser TRUNCATE HISTORY. Databricks recommande d'utiliser ce modèle uniquement si vous devez écrire dans des tables avec des clients Delta externes qui ne prennent pas en charge checkpointProtection. Consultez Rétrograder entièrement les protocoles de table pour les clients hérités.
Fonctionnalités de table prises en charge
Vous pouvez supprimer les fonctionnalités de table Delta Lake suivantes :
catalogManaged. Voir les commits du catalogue.checkConstraints. Consultez les contraintes sur Databricks.collations-preview. Consultez la prise en charge du classement pour Delta Lake.columnMappingVoir Renommer et supprimer des colonnes avec le mappage de colonnes Delta Lake.deletionVectors. Voir les vecteurs de suppression dans Databricks.typeWidening. Consultez l'élargissement de type.v2Checkpoint. Consultez Passer à la version classique.checkpointProtection. Consulter la fonctionnalité de tablecheckpointProtection.
Vous ne pouvez pas supprimer d'autres fonctionnalités de table Delta Lake.
Databricks vous recommande de toujours tester la compatibilité des charges de travail et des systèmes dépendants avec les nouvelles fonctionnalités avant d’activer des fonctionnalités qui mettent à niveau les protocoles de lecteur ou d’écriture pour les données de production.
Considérons les éléments suivants :
- La suppression du mappage de colonnes d'une table ne supprime pas les préfixes aléatoires utilisés dans les noms de répertoires pour les tables partitionnées. Voir Compatibilité de partitionnement Delta Lake et Parquet.
- Certaines fonctionnalités de Delta Lake activent plusieurs fonctionnalités de table qui dépendent les unes des autres, ce qui pourrait vous empêcher de supprimer les fonctionnalités dépendantes. Vous ne pouvez pas restaurer des fonctionnalités qui ne peuvent pas être supprimées.
Déclasser entièrement les protocoles de table pour les clients hérités
Si vous utilisez des clients Delta Lake externes avec des écritures qui ne prennent pas en charge la fonctionnalité de table checkpointProtection, vous devez utiliser TRUNCATE HISTORY pour entièrement rétrograder le protocole de table et supprimer toutes les traces des fonctionnalités de table supprimées. L'exécution de TRUNCATE HISTORY supprime tout l'historique de la table de plus de 24 heures.
Databricks recommande de tester le default comportement pour DROP FEATURE avant d'exécuter TRUNCATE HISTORY.
La rétrogradation complète nécessite deux étapes, espacées d’au moins 24 heures.
Étape 1 : Préparer la suppression d'une fonctionnalité de table
Exécutez la commande ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY. La commande applique les éléments suivants :
- Met à jour les propriétés de la table pour désactiver la fonctionnalité.
- Resets les propriétés de table associées pour la fonctionnalité à leurs paramètres par default.
- Réécrit les fichiers de données et de métadonnées selon les besoins pour refléter les propriétés mises à jour.
- Retourne un message vous demandant d'attendre au moins 24 heures avant de l'exécuter à nouveau pour terminer la rétrogradation du protocole.
Après avoir désactivé une fonctionnalité, vous pouvez continuer à écrire dans la table cible avant de terminer la rétrogradation du protocole, mais vous ne pouvez pas utiliser la fonctionnalité de table que vous supprimez.
Si vous laissez la table dans cet état, les Opérations sur la table n'utilisent pas la fonctionnalité de table, mais le protocole prend toujours en charge la fonctionnalité de table. Tant que vous n'avez pas terminé la dernière étape de rétrogradation, la table n'est pas lisible par les clients Delta qui ne prennent pas en charge la fonctionnalité de table.
Étape 2 : Rétrograder le protocole et supprimer une fonctionnalité de table
Après au moins 24 heures, exécutez la commande ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY à nouveau. La commande applique les éléments suivants :
- Tronque l'historique de la table au threshold de rétention.
- Confirme qu'aucune transaction restante n'utilise la fonctionnalité.
- Supprime la fonctionnalité et rétrograde le protocole de table à la version la plus basse qui prend en charge les fonctionnalités restantes.
L’exécution de ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY supprime toutes les données de log de transaction datant de plus de 24 heures. Après avoir utilisé cette commande pour rétrograder le protocole de la table, vous ne pouvez plus accéder à l'historique de la table ou au time travel.
Consultez la compatibilité des fonctionnalités et les protocoles de Delta Lake.