Concepts relatifs aux tables Azure Databricks

Azure Databricks prend en charge trois types de tables principaux (gérés, externes et étrangers) et deux formats de stockage ouverts (Delta Lake et Apache Iceberg). Le choix de la combinaison appropriée détermine la façon dont les données sont stockées, régies et optimisées.

Une table Azure Databricks réside dans un schéma et contient des lignes de données. Le type de table par défaut créé dans Azure Databricks est une table gérée par le catalogue Unity.

Formats de stockage

Les formats de stockage définissent la façon dont les données sont physiquement structurées et suivies dans le stockage d’objets.

Azure Databricks prend en charge deux formats de stockage de table ouverts principaux :

  • Delta Lake est le format de stockage par défaut pour les tables managées et externes dans Azure Databricks. Delta est également pris en charge pour les tables étrangères.
  • Apache Iceberg est pris en charge pour les tables gérées et étrangères dans Azure Databricks. Ce format est utile lorsque vous intégrez l’écosystème Iceberg.

Les deux formats ajoutent une couche de stockage transactionnelle qui assure le suivi des métadonnées et garantit la conformité aux propriétés ACID (atomicité, cohérence, isolation et durabilité), le voyage dans le temps et d’autres fonctionnalités.

Types de tables

Les types de tables dans Azure Databricks définissent la façon dont les données sont détenues et consultées.

Azure Databricks prend en charge trois types de tables principaux. Les types de tables sont déterminés par le catalogue propriétaire et gère les fichiers de données sous-jacents, comme décrit dans le tableau suivant :

Type de table Gestion du catalogue Prise en charge de la lecture/écriture Optimisation des performances Optimisation des coûts de stockage
Géré Unity Catalog Oui Oui Oui
Temporaire Aucun (table managée avec étendue de session) Oui Oui Oui
Externe Aucun (fichiers uniquement) Oui Manuel uniquement Manuel uniquement
Étranger Un système externe ou un service catalogue Lecture seule Non Non

Pour plus d’informations sur la façon de sélectionner le type de tableau approprié pour votre cas d’usage, consultez Sélectionner un type de tableau.

Tables managées

Pour les tables gérées, Unity Catalog gère les fichiers de données et les métadonnées de table. Les fichiers de données sont stockés dans l’emplacement de stockage managé de Unity Catalog dans le stockage cloud. Les tables gérées par le catalogue Unity sont les tables par défaut lorsque vous créez des tables dans Azure Databricks.

Databricks vous recommande d’utiliser des tables managées chaque fois que vous créez une table. Les tables managées implémentent automatiquement des améliorations des performances, réduisent les coûts de stockage et de calcul, et permettent l’accès aux systèmes externes, tels que Trino. Consultez les tables managées.

L’exemple suivant montre une table managée nommée prod.people_ops_employees qui contient des données sur cinq employés :

Exemple de table contenant des données d’employé

Tables externes

Tables externes, parfois appelées tables non managées, données de référence stockées dans un système de stockage externe tel que le stockage d’objets cloud. Azure Databricks inscrit les métadonnées de la table, mais ne gère pas les fichiers de données sous-jacents. Unity Catalog prend en charge les tables externes dans plusieurs formats, notamment Delta Lake, qui vous permet de les lire avec des systèmes externes. Consultez les tables externes.

Tables étrangères

Les tables étrangères représentent les données stockées dans des systèmes externes connectés à Azure Databricks via Lakehouse Federation. Les tables étrangères sont en lecture seule sur Azure Databricks. Consultez les tables externes.

Tables temporaires

Les tables temporaires sont des tables délimitées à la session qui stockent les données pendant la durée d’une session Azure Databricks. Ils sont utiles pour matérialiser les résultats intermédiaires sans créer de tables permanentes dans votre catalogue. Azure Databricks supprime automatiquement les tables temporaires lorsque la session se termine, et vous n’avez pas besoin de privilèges de catalogue ou de schéma pour les créer. Consultez les tables temporaires dans Databricks SQL et Databricks Runtime.

Sélectionner un type de tableau

Utilisez des tables managées pour la plupart des nouvelles tables. Azure Databricks automatise l’optimisation, la gestion du cycle de vie du stockage et l’accès externe.

Utilisez des tables externes quand :

  • Vous devez inscrire des données existantes dans le stockage cloud sans les déplacer.
  • Vous avez besoin d’un accès direct par chemin depuis des clients autres qu’Azure Databricks.
  • Vous utilisez des formats de fichiers non pris en charge par des tables managées, telles que CSV ou JSON.
  • La suppression de la table ne doit pas supprimer les fichiers de données sous-jacents.

Utilisez des tables étrangères lorsque vous avez besoin d’un accès en lecture seule aux données d’un système externe connecté via Lakehouse Federation, tel qu’un metastore Hive ou un catalogue AWS Glue.

Pour le format de stockage, Delta Lake est la valeur par défaut et recommandée pour la plupart des charges de travail. Utilisez Apache Iceberg lors de l’intégration à des systèmes externes qui nécessitent le format Iceberg.

Tables dans le catalogue Unity

Dans le catalogue Unity, les tables existent dans le troisième niveau de l’espace de noms à trois niveaux (catalog.schema.table), comme illustré dans le diagramme suivant :

Diagramme du modèle d’objet de Unity Catalog, centré sur la table

Autorisations de table de base

La plupart des opérations sur les tables nécessitent les autorisations USE CATALOG et USE SCHEMA sur le catalogue et le schéma auxquels appartient la table.

Le tableau suivant récapitule les autorisations supplémentaires nécessaires pour les opérations de table courantes dans le catalogue Unity :

Opération Permissions
Créer une table CREATE TABLE sur le schéma conteneur
Interroger une table SELECT sur la table
Mettre à jour, supprimer, fusionner ou insérer des données dans une table SELECT et MODIFY sur la table
Supprimer une table MANAGE sur la table
Remplacer une table MANAGE sur la table, CREATE TABLE sur le schéma conteneur

Pour obtenir des informations de référence sur la syntaxe SQL pour ces opérations, consultez :

Pour plus d’informations sur les autorisations du catalogue Unity, consultez Gérer les privilèges dans le catalogue Unity.