Supprimer les fonctionnalités de table Delta (hérité)
Cette documentation a été retirée et pourrait ne pas être mise à jour. Les produits, services ou technologies mentionnés dans ce contenu ne sont plus pris en charge. Voir Abandonner une fonctionnalité de table Delta Lake et rétrograder le protocole de table.
Cet article documente le comportement de l'Aperçu public pour la suppression des fonctionnalités de table Delta Lake disponibles à partir de Databricks Runtime 14.3 LTS. Databricks recommande d'utiliser la fonctionnalité généralement disponible dans Databricks Runtime 16.3 et versions ultérieures, qui remplace le comportement hérité. Voir Supprimer une fonctionnalité de table Delta Lake et déclasser le protocole de table.
Databricks offre un support limité pour la suppression des fonctionnalités de table. La suppression d'une fonctionnalité de table implique les étapes suivantes :
- Désactivez les propriétés de table qui utilisent la fonctionnalité de table.
- Supprimez toutes les traces de la fonctionnalité de table des fichiers de données qui soutiennent la table.
- Supprimez les entrées de transaction qui utilisent la fonctionnalité de table du log des transactions.
- Rétrogradez le protocole de la table.
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. Si vous souhaitez que le Stream continue, vous devez le redémarrer. Pour les méthodes recommandées, consultez Considérations de production pour Structured Streaming.
Comment puis-je supprimer une fonctionnalité de table Delta ?
Pour supprimer une fonctionnalité de table Delta, vous exécutez une commande ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]. See ALTER TABLE.
Vous devez utiliser Databricks Runtime 14.3 LTS ou une version supérieure et disposer de MODIFY privilèges sur la table Delta cible.
Quelles fonctionnalités de table Delta peuvent être supprimées ?
Vous pouvez supprimer les fonctionnalités de table Delta suivantes :
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-preview. Consultez l'élargissement de type.v2Checkpoint. Consultez la compatibilité des tables avec le clustering liquide.
Vous ne pouvez pas supprimer d'autres fonctionnalités de table Delta.
Certaines fonctionnalités de Delta Lake permettent plusieurs fonctionnalités de table. Certaines fonctionnalités de table dépendent d'autres fonctionnalités de table et pourraient empêcher la suppression de fonctionnalités de table dépendantes. Parce que certaines fonctionnalités de table ne peuvent pas être supprimées, cela signifie que l'activation de certaines fonctionnalités de Delta Lake ne peut pas être annulée.
Databricks recommande de toujours tester les charges de travail et les systèmes dépendants pour vérifier leur compatibilité avec les nouvelles fonctionnalités avant d'activer une fonctionnalité qui met à niveau les protocoles de lecture ou d'écriture pour les données de production.
Activez les fonctionnalités de table pour supprimer les fonctionnalités héritées
Cette section décrit un modèle qui n'est requis que dans Databricks Runtime 16.0 et versions antérieures.
La commande DROP FEATURE requiert des versions de protocole qui prennent en charge la lecture et l'écriture des fonctionnalités de table. Les fonctionnalités Delta comme columnMapping et checkConstraints étaient prises en charge dans les versions antérieures du protocole. Selon les autres fonctionnalités activées sur la table, vous devrez peut-être mettre à niveau les versions de protocole avant de pouvoir supprimer ces fonctionnalités.
Vous pouvez utiliser la commande suivante pour mettre à niveau les versions du lecteur et de l'enregistreur de table, ce qui vous permet de supprimer le mappage de colonnes et de rétrograder le protocole :
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '3',
'delta.minWriterVersion' = '7'
)
Comment les fonctionnalités des tables Delta sont-elles supprimées ?
Étant donné que les fonctionnalités de table Delta affectent la manière dont une table est lue/écrite, elles doivent être complètement absentes du log de transactions pour une suppression complète. Les spécificités de la suppression de fonctionnalités varient selon la fonctionnalité, mais la section suivante fournit un aperçu général.
La suppression d'une fonctionnalité s'effectue en deux étapes et nécessite un certain temps avant d'être terminée.
Étape 1 : Préparer la suppression d'une fonctionnalité de table
Lors de la première étape, vous devez vous préparer à supprimer la fonctionnalité de table. Ce qui suit décrit ce qui se passe durant cette étape :
- Exécutez la commande
DROP FEATURE. - Les propriétés de table qui activent spécifiquement une fonctionnalité de table ont des valeurs définies pour désactiver la fonctionnalité.
- Les propriétés de table qui contrôlent les comportements associés à la fonctionnalité abandonnée ont des options définies sur des valeurs par default avant l'introduction de la fonctionnalité.
- Si nécessaire, les fichiers de données et de métadonnées sont réécrits, en respectant les propriétés de table mises à jour.
- La commande termine son exécution et renvoie un message d'erreur vous informant que vous devez attendre 24 heures pour procéder à la suppression de la fonctionnalité.
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 la table, mais le protocole prend toujours en charge la fonctionnalité de la 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 comprennent pas la fonctionnalité de la table.
Étape 2 : Rétrograder le protocole et supprimer une fonctionnalité de table
À la deuxième étape, vous tronquez et supprimez tout l'historique des transactions associé à la fonctionnalité. Cela vous permet de supprimer la fonctionnalité de table et de rétrograder le protocole.
- Après qu'au moins 24 heures se soient écoulées, vous exécutez à nouveau la commande
DROP FEATUREavec la clauseTRUNCATE HISTORY. - Le client confirme qu'aucune transaction du threshold de rétention spécifié n'utilise la fonctionnalité de table, puis tronque l'historique de la table à ce threshold.
- Le protocole est déclassé, abandonnant la fonctionnalité de table.
- Si les fonctionnalités de la table qui sont présentes peuvent être représentées par une version de protocole héritée, les
minReaderVersionetminWriterVersionde la table sont rétrogradés vers la version la plus basse qui prend en charge exactement toutes les fonctionnalités restantes utilisées par la table Delta.
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 supprimé une fonctionnalité de table Delta, vous n’avez pas accès à l’historique de la table ou au time travel.
Consultez la compatibilité des fonctionnalités et les protocoles de Delta Lake.