Comment Azure Databricks gère-t-il la compatibilité des fonctionnalités Delta Lake ?

Delta Lake est un projet open source indépendant sous la gouvernance de la Fondation Linux. Databricks introduit la prise en charge des nouvelles fonctionnalités et optimisations 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 peuvent ne pas être open source, mais respectent les protocoles utilisés dans OSS Delta Lake aux fins de compatibilité.

De nombreuses optimisations Azure Databricks nécessitent l’activation des fonctionnalités Delta Lake sur une table. Les fonctionnalités Delta Lake sont toujours rétrocompatibles donc les tables écrites par une version Databricks Runtime inférieure peuvent toujours être lues et écrites par une version Databricks Runtime supérieure. L’activation de certaines fonctionnalités interrompt, avec des versions futures, la compatibilité avec les charges de travail exécutées dans une version Databricks Runtime inférieure. Pour les fonctionnalités qui interrompent la compatibilité, vous devez mettre à jour toutes les charges de travail qui référencent les tables actualisées afin d’utiliser une version conforme de Databricks Runtime.

Remarque

Vous pouvez supprimer deletionVectors et v2Checkpoint sur Azure Databricks. Consultez la section Supprimer des fonctionnalités de table Delta.

Important

Toutes les opérations de modification de protocole sont en conflit avec les écritures simultanées.

Les lectures de diffusion en continu échouent lorsqu’elles rencontrent une validation 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.

Quelles fonctionnalités de Delta Lake nécessitent des mises à niveau de Databricks Runtime ?

Les fonctionnalités de Delta Lake suivantes rompent la compatibilité ascendante. Les fonctionnalités sont activées table par table. Ce tableau répertorie la version la plus basse de Databricks Runtime toujours prise en charge par Azure Databricks.

Fonction Nécessite la version Databricks Runtime ou une version ultérieure. Documentation
CHECK constraints Databricks Runtime 9.1 LTS Définir une contrainte CHECK dans Azure Databricks
Flux des changements de données Databricks Runtime 9.1 LTS Utiliser le flux des changements de données Delta Lake sur Azure Databricks
Colonnes générées Databricks Runtime 9.1 LTS Colonnes générées par Delta Lake
Mappage de colonnes Databricks Runtime 10.4 LTS Renommage et suppression des colonnes avec le mappage de colonnes Delta Lake
Colonnes d’identité Databricks Runtime 10.4 LTS Utiliser des colonnes d’identité dans Delta Lake
Fonctionnalités de table Databricks Runtime 12.1 (non pris en charge) Que sont les fonctionnalités de table ?
Vecteurs de suppression Databricks Runtime 12.1 (non pris en charge) Que sont les vecteurs de suppression ?
TimestampNTZ Databricks Runtime 13.0 (non pris en charge) Type TIMESTAMP_NTZ
UniForm Databricks Runtime 13.2 (non pris en charge) Format universel (UniForm) pour la compatibilité d’Iceberg avec les tables Delta
Clustering liquide Databricks Runtime 13.3 LTS Utiliser des clustering liquides pour les tableaux Delta

Consultez Notes de publication, versions et compatibilité de Databricks Runtime.

Remarque

Delta Live Tables et Databricks SQL mettent automatiquement à niveau les environnements d’exécution avec des versions régulières afin d’assurer la prise en charge de nouvelles fonctionnalités. Consultez les articles Notes de version de Delta Live Tables et processus de mise à niveau des versions et Notes de version de Databricks SQL.

Qu’est-ce qu’une spécification de protocole de table ?

Chaque table Delta possède une spécification de protocole qui indique l’ensemble des fonctionnalités prises en charge par la table. La spécification de 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 spécification du protocole est séparée en deux composants : le protocole de lecture et le protocole d’écriture.

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. Voir Annuler des fonctionnalités de table Delta.

Protocole de lecture

Le protocole de lecture répertorie toutes les fonctionnalités prises en charge par une table et qu’une application doit comprendre pour lire la table correctement. La mise à niveau du protocole de lecture d’une table nécessite que toutes les applications de lecture prennent en charge les fonctionnalités ajoutées.

Important

Toutes les applications qui écrivent dans une table Delta doivent être en mesure de créer un instantané de la table. Par conséquent, les charges de travail qui écrivent dans des tables Delta doivent respecter les exigences du protocole de lecture et d’écriture.

Si vous rencontrez un protocole qui n’est pas pris en charge par une charge de travail sur Azure Databricks, vous devez effectuer une mise à niveau vers une version ultérieure de Databricks Runtime qui prend en charge ce protocole.

Protocole d’écriture

Le protocole d’écriture répertorie toutes les fonctionnalités prises en charge par une table et qu’une application doit comprendre pour lire la table correctement. La mise à niveau du protocole d’écriture d’une table nécessite que toutes les applications d’écriture prennent en charge les fonctionnalités ajoutées. Cela n’affecte pas les applications en lecture seule, sauf si le protocole de lecture est également mis à niveau.

Quels protocoles doivent être mis à niveau ?

Certaines fonctionnalités nécessitent la mise à niveau du protocole de lecture et du protocole d’écriture. D’autres fonctionnalités nécessitent uniquement la mise à niveau du protocole d’écriture.

Par exemple, la prise en charge des contraintes de CHECK est une fonctionnalité de protocole d’écriture : seules les applications qui écrivent doivent connaître les contraintes de CHECK 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.

Versions minimales des applications de lecture et d’écriture

Remarque

Vous devez mettre à niveau explicitement la version du protocole de table lorsque vous activez le mappage des colonnes.

Quand vous activez les fonctionnalités Delta sur une table, le protocole de table est automatiquement mis à niveau. 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. La définition de ces valeurs sur une valeur inférieure ne permet pas de passer à une version antérieure de la table. Voir Annuler des fonctionnalités de table Delta.

Que sont les fonctionnalités de table ?

Dans Databricks Runtime 12.2 LTS (et les versions ultérieures), les fonctionnalités de table Delta Lake introduisent des indicateurs granulaires spécifiant les fonctionnalités prises en charge par une table donnée. Dans Databricks Runtime 11.3 LTS (et les versions antérieures), les fonctionnalités Delta Lake ont été activées dans des regroupements appelés versions du protocole. Les fonctionnalités de table sont le successeur des versions de protocole et sont conçues avec l’objectif d’améliorer la flexibilité pour les clients qui lisent et écrivent dans les fichiers Delta Lake. Consultez la section Qu’est-ce qu’une version de protocole ?

Remarque

Les fonctionnalités de table ont des exigences de version de protocole. Consultez la section Fonctionnalités par version de protocole.

Une fonctionnalité de table Delta est un marqueur qui indique que la table prend en charge une fonctionnalité particulière. Chaque fonctionnalité est une fonctionnalité de protocole d’écriture (ce qui signifie qu’elle met uniquement à niveau le protocole d’écriture) ou une fonctionnalité de protocole de lecture/écriture (ce qui signifie que les protocoles de lecture et d’écriture sont mis à niveau pour activer la fonctionnalité).

Pour en savoir plus sur les fonctionnalités de table prises en charge dans Delta Lake, consultez la section Protocole Delta Lake.

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 du code rétroporté 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.

Qu’est-ce qu’une version de protocole ?

Une version de protocole est un numéro de protocole qui indique un regroupement particulier de fonctionnalités de table. Dans Databricks Runtime 11.3 LTS (et les versions antérieures), vous ne pouvez pas activer individuellement les fonctionnalités de table. Les versions de protocole regroupent un groupe de fonctionnalités.

Les tables Delta spécifient une version de protocole distincte pour le protocole de lecture et le protocole d’écriture. Le journal des transactions d’une table Delta contient des informations de versioning des protocoles qui prennent en charge l’évolution de Delta Lake. Voir Examiner les détails de la table Delta Lake avec DESCRIBE DETAIL.

Les versions de protocole regroupent toutes les fonctionnalités des protocoles précédents. Consultez la section Fonctionnalités par version de protocole.

Remarque

À compter de la version 7 d’écriture et la version 3 de lecture, Delta Lake a introduit le concept de fonctionnalités de table. À l’aide des fonctionnalités de table, vous pouvez désormais choisir d’activer uniquement ces fonctionnalités prises en charge par d’autres clients de votre écosystème de données. Consultez la section Que sont les fonctionnalités de table ?.

Fonctionnalités par version de protocole

Le tableau suivant présente les versions minimales de protocole requises pour les fonctionnalités Delta Lake.

Remarque

Si vous êtes uniquement concerné par la compatibilité de Databricks Runtime, consultez la section Quelles fonctionnalités Delta Lake nécessitent des mises à niveau de Databricks Runtime ?. Le partage Delta prend uniquement en charge la lecture de tables avec des fonctionnalités qui nécessitent minReaderVersion = 1.

Fonction minWriterVersion minReaderVersion Documentation
Fonctionnalités de base 2 1 Qu’est-ce que Delta Lake ?
CHECK constraints 3 1 Définir une contrainte CHECK dans Azure Databricks
Flux des changements de données 4 1 Utiliser le flux des changements de données Delta Lake sur Azure Databricks
Colonnes générées 4 1 Colonnes générées par Delta Lake
Mappage de colonnes 5 2 Renommage et suppression des colonnes avec le mappage de colonnes Delta Lake
Colonnes d’identité 6 2 Utiliser des colonnes d’identité dans Delta Lake
Fonctionnalités de lecture de table 7 1 Que sont les fonctionnalités de table ?
Fonctionnalités d’écriture de table 7 3 Que sont les fonctionnalités de table ?
Vecteurs de suppression 7 3 Que sont les vecteurs de suppression ?
TimestampNTZ 7 3 Type TIMESTAMP_NTZ
Clustering liquide 7 3 Utiliser des clustering liquides pour les tableaux Delta
UniForm 7 2 Format universel (UniForm) pour la compatibilité d’Iceberg avec les tables Delta