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.
Cet article fournit une vue d’ensemble des protocoles Delta Lake, des fonctionnalités de table et de la compatibilité avec les clients Delta Lake pour les lectures et les écritures.
Le journal des transactions d’une table Delta contient des informations de contrôle de version de protocole. Consultez Examiner les détails des tables Delta Lake avec DESCRIBE DETAIL.
Comment le protocole de table spécifie-t-il la compatibilité de lecture et d’écriture ?
Chaque table Delta a une spécification de protocole qui indique l’ensemble des fonctionnalités requises pour lire et écrire dans la table. La spécification du protocole est utilisée par les applications qui lisent ou écrivent dans la table pour déterminer si elles peuvent gérer toutes les fonctionnalités prises en charge par la table. Si une application ne sait pas comment gérer une fonctionnalité répertoriée comme prise en charge dans le protocole d’une table, cette application ne peut pas lire ou écrire dans cette table.
La plupart des nouvelles fonctionnalités et fonctionnalités ajoutées à Delta Lake nécessitent la mise à niveau du protocole de table.
Le tableau suivant fournit une vue d’ensemble des termes clés utilisés pour décrire les protocoles Delta Lake :
Terme | Descriptif |
---|---|
Client Delta Lake | Tout système qui lit ou écrit dans une table Delta. |
Protocole de lecture | Spécifie la prise en charge requise pour qu’un client Delta Lake lise une table. |
Protocole d’écriture | Spécifie la prise en charge requise pour qu’un client Delta Lake écrive dans une table. |
minReaderVersion |
Composant du protocole lecteur. Les valeurs valides sont 1 , 2 ou 3 . |
minWriterVersion |
Composant du protocole d'écriture. Les valeurs valides sont des entiers de 2 à 7. |
Fonctionnalité de table | Une alternative granulaire aux versions de protocole. Les fonctionnalités de tableau correspondent à des fonctionnalités Delta Lake pouvant être activées de manière optionnelle. |
Fonctionnalité Writer | Fonctionnalité de table liée à un protocole d’écriture. |
Fonctionnalité lecteur | Fonctionnalité de table liée à un protocole de lecture. |
Les protocoles d’écriture et les fonctionnalités d’écriture affectent uniquement la compatibilité avec les clients de l'écriture, ce qui signifie que l’accès en lecture seule à la table à partir de charges de travail existantes est toujours pris en charge. Les protocoles de lecture et les fonctionnalités de lecture ont un impact à la fois sur la compatibilité de lecture et d’écriture.
Toutes les fonctionnalités Delta Lake ne sont pas compatibles les unes avec les autres.
Certaines fonctionnalités de table ne peuvent pas être supprimées une fois activées. Consultez Supprimer une fonctionnalité de table Delta Lake et passer à une version antérieure du protocole de table.
Fonctionnalités de table pour la compatibilité des protocoles
Dans Databricks Runtime 12.2 LTS et versions ultérieures, Databricks utilise des fonctionnalités de table pour indiquer la prise en charge des fonctionnalités et de la compatibilité avec les lecteurs et les enregistreurs. Les fonctionnalités de table utilisent des indicateurs granulaires pour spécifier les fonctionnalités prises en charge par une table donnée. Les fonctionnalités de table remplacent le schéma de contrôle de version de protocole hérité en introduisant de nouvelles fonctionnalités dans le protocole Delta Lake.
Les fonctionnalités de l’enregistreur de tables indiquent des fonctionnalités qui ont un impact sur la façon dont les données sont écrites. Les fonctionnalités de l’écrivain de tables nécessitent minWriterVersion
== 7. Les fonctionnalités implémentées en tant que fonctionnalités d'écriture ne bloquent pas les clients lecteur.
Les fonctionnalités du lecteur de tableau indiquent les fonctionnalités qui affectent la façon dont les données sont lues. Toutes les fonctionnalités du lecteur de table sont également des fonctionnalités de l'écrivain de table. Les fonctionnalités du lecteur de tableau nécessitent minReaderVersion
== 3 et minWriterVersion
== 7. Un client ne peut pas écrire dans une table qu’il ne peut pas lire.
Lorsque les fonctionnalités de table sont activées, toutes les fonctionnalités prises en charge par le protocole pour la table apparaissent dans les listes respectives sous readerFeatures
ou writerFeatures
. Lorsque vous supprimez des fonctionnalités d’une table, votre table peut supprimer ce comportement pour résoudre le protocole le plus bas possible. Consultez le protocole le plus bas possible.
Versions de protocole basées sur des entiers et compatibilité héritée
Toutes les tables incluent une version de protocole basée sur un entier représentée par minReaderVersion
et minWriterVersion
. La fonctionnalité implémentée à l’aide des fonctionnalités de table s’appuie sur ces versions de protocole, mais de nombreux clients de lecteur et d’enregistreur hérités continuent d’utiliser des versions de protocole pour gérer la compatibilité. Delta Lake tente d'adapter le protocole de table à la version la plus basse possible pour maintenir une compatibilité maximale avec les clients Delta modernes et anciens. Consultez le protocole le plus bas possible.
Dans le schéma de contrôle de version de protocole basé sur l’entier, chaque numéro de version regroupe plusieurs fonctionnalités et fonctionnalités entre les numéros de version sont cumulatives. Cela signifie que pour être conformes au protocole Delta, les clients doivent implémenter la prise en charge de toutes les fonctionnalités de lecteur ou d’enregistreur présentes dans une version donnée, y compris toutes les fonctionnalités précédemment publiées.
Remarque
Databricks inclut une prise en charge partielle sans rupture des fonctionnalités de table dans toutes les versions de Databricks Runtime prises en charge. Les clients DELTA OSS choisissent comment implémenter la prise en charge des fonctionnalités données.
Quand le protocole de table change-t-il ?
Le protocole d’une table change dans les conditions suivantes :
- Si une nouvelle fonctionnalité est activée, le protocole est mis à niveau.
- Si une fonctionnalité de table est supprimée, le protocole est rétrogradé.
La désactivation d’une fonctionnalité de table n’entraîne pas de rétrogradation du protocole. Vous devez retirer la fonctionnalité pour la supprimer entièrement du protocole de table. Toutes les fonctionnalités de table ne peuvent pas être supprimées. Consultez Supprimer une fonctionnalité de table Delta Lake et passer à une version antérieure du protocole de table.
Toutes les opérations de modification de protocole sont en conflit avec les écritures simultanées.
Les lectures en flux échouent lorsqu’elles rencontrent un commit qui modifie les métadonnées d’une table. Si vous souhaitez que le flux continue, vous devez le redémarrer. Pour plus d’informations, consultez Considérations relatives à la production pour les applications Structured Streaming.
Avertissement
La plupart des mises à niveau des versions de protocole sont irréversibles, et la mise à niveau d’une version de protocole peut arrêter les applications de lecture et/ou d’écriture de tables Delta Lake existantes. Databricks vous recommande de mettre à niveau des tables spécifiques uniquement en cas de besoin, par exemple pour adopter de nouvelles fonctionnalités de Delta Lake. Vous devez également vérifier que tous vos outils de production actuels et futurs prennent en charge les tables Delta Lake avec la nouvelle version de protocole.
Il est possible de passer à une version antérieure du protocole pour certaines fonctionnalités. Consultez Supprimer une fonctionnalité de table Delta Lake et passer à une version antérieure du protocole de table.
Quand le protocole de table est-il mis à niveau ?
Lorsque vous activez une fonctionnalité sur une table, le protocole de table est automatiquement mis à niveau. Certaines fonctionnalités sont activées automatiquement en fonction de la syntaxe utilisée dans CREATE
ou ALTER
des instructions de table, tandis que d’autres fonctionnalités nécessitent une activation explicite par le biais de la définition des propriétés de table. Parfois, vous devez activer explicitement plusieurs fonctionnalités de tables pour prendre en charge les fonctionnalités souhaitées. Dans d’autres cas, l’activation des fonctionnalités peut activer automatiquement d’autres fonctionnalités de table. Consultez la documentation Azure Databricks pour connaître les fonctionnalités et la syntaxe que vous utilisez pour déterminer quelles fonctionnalités de table sont requises.
Les fonctionnalités de lecture nécessitent la mise à niveau du protocole de lecture et du protocole d’écriture. Les fonctionnalités d’enregistreur nécessitent uniquement la mise à niveau du protocole d’écriture.
Par exemple, la prise en charge des CHECK
contraintes est une fonctionnalité d'écriture : seules les applications d'écriture doivent connaître les CHECK
contraintes et les appliquer.
En revanche, le mappage de colonnes nécessite la mise à niveau des protocoles de lecture et d’écriture. Étant donné que les données sont stockées différemment dans la table, les applications de lecture doivent comprendre le mappage de colonnes afin de pouvoir lire correctement les données.
Remarque
Databricks recommande de ne pas modifier les propriétés de table minReaderVersion
et minWriterVersion
. La modification de ces propriétés de table n’empêche pas la mise à niveau du protocole. Réduire ces valeurs n'entraîne aucune dégradation de la table. Consultez Supprimer une fonctionnalité de table Delta Lake et passer à une version antérieure du protocole de table.
Protocole possible le plus bas
Par défaut, Delta Lake tente d’utiliser le protocole le plus bas possible pour représenter toutes les fonctionnalités marquées comme prises en charge par la table.
Ce comportement ne peut entraîner que la réduction du protocole de table, ce qui signifie que le minReaderVersion
ou minWriterVersion
peut changer en valeurs inférieures pour une table.
Vous devez exécuter la DROP FEATURE
commande pour supprimer une fonctionnalité de table de la liste des fonctionnalités prises en charge dans le protocole de table. Les fonctionnalités de table ne sont jamais supprimées automatiquement.
Si toutes les fonctionnalités Delta Lake présentes dans une table sont entièrement prises en charge dans une version de protocole inférieure, la table peut revenir à une version de protocole qui n’utilise pas les fonctionnalités de table pour indiquer la compatibilité du lecteur et de l’enregistreur. Lorsque cette rétrogradation de protocole se produit, la table peut supprimer soit le readerFeatures
soit les deux readerFeatures
et writerFeatures
du protocole de table. Cela n’entraîne pas la désactivation des fonctionnalités Delta Lake et se produit uniquement lorsque les fonctionnalités de table ne sont pas requises dans le protocole table.
Toutes les modifications qui réduisent le protocole de table augmentent la compatibilité avec les clients lecteur et enregistreur. Cela est dû au fait que les clients lecteur et enregistreur doivent respecter les versions de protocole inférieures même s’ils prennent en charge les versions de protocole supérieures.
Les fonctionnalités de table changent-elles la façon dont les fonctionnalités de Delta Lake sont activées ?
Si vous interagissez uniquement avec des tables Delta via Azure Databricks, vous pouvez continuer à suivre la prise en charge des fonctionnalités de Delta Lake en utilisant les exigences minimales de Databricks Runtime. Azure Databricks prend en charge la lecture des tables Delta qui ont été mises à niveau vers les fonctionnalités de table dans toutes les versions de Databricks Runtime LTS, tant que toutes les fonctionnalités utilisées par la table sont prises en charge par cette version.
Si vous effectuez des opérations de lecture et d’écriture à partir de tables Delta à l’aide d’autres systèmes, vous devrez peut-être prendre en compte la façon dont les fonctionnalités de table ont un impact sur la compatibilité, car le système risque de ne pas comprendre les versions de protocole mises à niveau.
Important
Les fonctionnalités de table sont introduites au format Delta Lake pour la version 7 d’écriture et la version 3 de lecture. Azure Databricks a rétroporté le code vers toutes les versions Databricks Runtime LTS prises en charge pour ajouter la prise en charge des fonctionnalités de table, mais uniquement pour les fonctionnalités déjà prises en charge dans cette version de Databricks Runtime. Cela signifie que, bien que vous puissiez choisir d’utiliser des fonctionnalités de table pour activer les colonnes générées et continuer à utiliser ces tables dans Databricks Runtime 9.1 LTS, les tables avec des colonnes d’identité activées (ce qui nécessite Databricks Runtime 10.4 LTS) ne sont toujours pas prises en charge dans databricks Runtime.
Comment Azure Databricks gère-t-il la compatibilité des fonctionnalités Delta Lake ?
Databricks introduit la prise en charge des nouvelles fonctionnalités et optimisations de Delta Lake qui s’appuient sur Delta Lake dans les versions de Databricks Runtime. Les optimisations Azure Databricks qui tirent parti des fonctionnalités de Delta Lake respectent les protocoles utilisés dans l'OSS Delta Lake pour assurer la compatibilité. De nombreuses optimisations Azure Databricks nécessitent l’activation des fonctionnalités Delta Lake sur une table, et certains produits Azure Databricks tels que Les pipelines déclaratifs Lakeflow dépendent de nombreuses fonctionnalités de table.
- Toutes les tables écrites par les versions inférieures de Databricks Runtime ont une prise en charge complète de la lecture et de l’écriture dans les versions ultérieures de Databricks Runtime.
- Les tables écrites par des versions ultérieures de Databricks Runtime peuvent utiliser des fonctionnalités de table qui ne sont pas prises en charge dans les versions inférieures de Databricks Runtime.
- Certaines fonctionnalités peuvent autoriser les écritures à partir de versions databricks Runtime inférieures sans appliquer entièrement toutes les optimisations liées aux fonctionnalités de table activées.
Lorsque vous travaillez avec des fonctionnalités de table qui prennent en charge les versions antérieures de Databricks Runtime, certaines opérations qui s’exécutent sur une version donnée de Databricks Runtime peuvent ne pas s’exécuter sur la version delta du système d’exploitation correspondante. Si votre cycle de développement ou architecture de données inclut OSS Delta Lake, vous devez toujours tester la compatibilité dans les clients DELTA OSS avant d’activer les fonctionnalités de table sur les tables de production.
Fonctionnalités Delta Lake et versions de Databricks Runtime requises
Les fonctionnalités sont activées table par table. Le tableau suivant répertorie la version databricks Runtime la plus basse avec une prise en charge complète de la fonctionnalité indiquée. La prise en charge complète signifie que toutes les fonctionnalités généralement disponibles pour les lectures et les écritures sont prises en charge.
Fonction | Nécessite la version Databricks Runtime ou une version ultérieure. | Documentation |
---|---|---|
CHECK contraintes |
Toutes les versions de Databricks Runtime prises en charge |
Définir une contrainte de CHECK dans Azure Databricks |
Modifier le flux de données | Toutes les versions de Databricks Runtime prises en charge | Utiliser le flux des changements de données Delta Lake sur Azure Databricks |
Colonnes générées | Toutes les versions de Databricks Runtime prises en charge | Colonnes générées par Delta Lake |
Mappage de colonnes | Toutes les versions de Databricks Runtime prises en charge | Renommer et supprimer des colonnes avec le mappage de colonnes Delta Lake |
Colonnes d’identité | Toutes les versions de Databricks Runtime prises en charge | Utiliser des colonnes d’identité dans Delta Lake |
Fonctionnalités de table | Databricks Runtime 12.2 LTS | Fonctionnalités de table pour la compatibilité des protocoles |
Vecteurs de suppression | Databricks Runtime 12.2 LTS | Que sont les vecteurs de suppression ? |
HorodatageNTZ | Databricks Runtime 13.3 LTS |
Type TIMESTAMP_NTZ |
Uniforme | Databricks Runtime 13.3 LTS | Lire des tables Delta avec des clients Iceberg |
Clustering liquide | Databricks Runtime 13.3 LTS | Utiliser le clustering liquide pour les tables |
Suivi des lignes | Databricks Runtime 14.3 LTS | Utiliser le suivi des lignes pour les tables Delta |
Élargissement des types | Databricks Runtime 15.4 LTS | Élargissement des types |
Variante | Databricks Runtime 15.4 LTS | Prise en charge des variantes dans Delta Lake |
Classements | Databricks Runtime 16.1 | Prise en charge du classement pour Delta Lake |
Points de contrôle protégés | Databricks Runtime 16.3 | Supprimer une fonctionnalité de table Delta Lake et rétrograder le protocole de table |
Consultez Notes de publication, versions et compatibilité de Databricks Runtime.
Remarque
Lakeflow Declarative Pipelines et Databricks SQL améliorent automatiquement les environnements d'exécution avec des versions régulières pour prendre en charge de nouvelles fonctionnalités. Consultez les notes de publication des pipelines déclaratifs Lakeflow et le processus de mise à niveau des versions, ainsi que les notes de publication Databricks SQL.
Fonctionnalités par version de protocole
Le protocole OSS Delta Lake a normalisé les fonctionnalités de table, mais certains clients de lecture et d'écriture n’ont pas implémenté la prise en charge des fonctionnalités de table et continuent à utiliser des protocoles hérités.
Certains clients peuvent ne pas prendre en charge toutes les fonctionnalités Delta Lake, notamment les fonctionnalités qui utilisent le contrôle de version de protocole hérité. Consultez la documentation de votre client Delta Lake pour confirmer la prise en charge des fonctionnalités. Testez toujours la compatibilité avant d’activer de nouvelles fonctionnalités sur les tables de production.
Le tableau suivant présente les versions minimales du protocole lecteur et enregistreur requises pour les fonctionnalités Delta Lake, ainsi que l’indication si une fonctionnalité de table doit être respectée pour les écritures uniquement ou les lectures et les écritures.
Remarque
Si vous êtes uniquement concerné par la compatibilité de Databricks Runtime, consultez Comment Azure Databricks gère-t-il la compatibilité des fonctionnalités Delta Lake ?.
Fonction | minWriterVersion |
minReaderVersion |
Fonctionnalité de table |
---|---|---|---|
Fonctionnalités de base | 2 | 1 | Rédacteur |
CHECK Contraintes |
3 | 1 | Rédacteur |
Modifier le flux de données | 4 | 1 | Rédacteur |
Colonnes générées | 4 | 1 | Rédacteur |
Mappage de colonnes | 5 | 2 | Lecteur et écrivain |
Colonnes d’identité | 6 | 1 | Rédacteur |
Suivi des lignes | 7 | 1 | Rédacteur |
Vecteurs de suppression | 7 | 3 | Lecteur et écrivain |
TimestampNTZ | 7 | 3 | Lecteur et écrivain |
Agrégation liquide | 7 | 3 | Lecteur et écrivain |
Lecteurs Iceberg (UniForm) | 7 | 2 | Écrivain (1) |
Élargissement des types | 7 | 3 | Lecteur et écrivain |
Variante | 7 | 3 | Lecteur et écrivain |
Jeux de collations | 7 | 3 | Lecteur et écrivain |
Points de contrôle protégés | 7 | 1 | Rédacteur |
(1) : Le mappage de colonnes requis est activé.