Tables managées du catalogue Unity dans Azure Databricks pour Delta Lake et Apache Iceberg

Cette page décrit les tables managées du catalogue Unity dans Delta Lake et Apache Iceberg, le type de table par défaut et recommandé dans Azure Databricks. Ces tables sont entièrement régies et optimisées par le catalogue Unity, offrant des performances, des avantages opérationnels et des coûts de stockage et de calcul inférieurs par rapport aux tables externes et étrangères, car les tables managées apprennent à partir de vos modèles de lecture et d’écriture. Unity Catalog gère toutes les responsabilités de lecture, d’écriture, de stockage et d’optimisation pour les tables managées. Consultez Convertir une table Delta externe en table de catalogue Unity managée.

Les fichiers de données pour les tables managées sont stockés dans le schéma ou le catalogue qui les contient. Consultez Spécifier un emplacement de stockage managé dans Unity Catalog.

Databricks recommande d’utiliser des tables managées pour tirer parti des points suivants :

  • Réduction des coûts de stockage et de calcul.
  • Performances des requêtes plus rapides sur tous les types de clients.
  • Maintenance et optimisation automatiques des tables.
  • Sécuriser l’accès pour les clients non Databricks via des API ouvertes.
  • Prise en charge des formats Delta Lake et Iceberg.
  • Mises à niveau automatiques vers les dernières fonctionnalités de la plateforme.

Les tables managées prennent en charge l’interopérabilité en autorisant l’accès à partir de clients Delta Lake et Iceberg. Grâce aux API ouvertes et à la distribution de justificatifs, Unity Catalog permet aux moteurs externes tels que Trino, DuckDB, Apache Spark, Daft et aux moteurs intégrés aux catalogues REST comme Iceberg et Dremio d'accéder aux tables managées. Pour les clients externes qui ne prennent pas en charge les API ouvertes, vous pouvez utiliser le mode de compatibilité pour lire des tables gérées à l’aide de n’importe quel client Delta Lake ou Iceberg. Le partage Delta, un protocole open source, permet un partage de données sécurisé et régi avec des partenaires externes et des plateformes.

Vous pouvez utiliser des tables managées dans tous les langages et produits pris en charge dans Azure Databricks. Vous avez besoin de certains privilèges pour créer, mettre à jour, supprimer ou interroger des tables gérées. Consultez Gérer les privilèges dans Unity Catalog.

Note

Cette page décrit uniquement les tables gérées par le catalogue Unity. Pour les tables managées dans le metastore Hive hérité, consultez Objets de base de données dans le metastore Hive hérité.

Pourquoi utiliser des tables managées du catalogue Unity ?

Les tables gérées par le catalogue Unity optimisent les coûts de stockage et les vitesses de requête, et permettent l’interopérabilité avec des outils tiers pour Delta Lake et Apache Iceberg. Pour simplifier la gestion et les performances des données, ces tables managées utilisent des technologies basées sur l’IA, telles que la compaction de taille de fichier et la collecte de statistiques intelligentes.

Les fonctionnalités suivantes sont uniques aux tables managées du catalogue Unity et ne sont pas disponibles pour les tables externes et les tables étrangères :

Feature Benefits Activée par défaut ? Paramétrable?
Commits du catalogue Active les transactions à plusieurs instructions sur plusieurs tables, une planification plus rapide des requêtes grâce à la fourniture directe de métadonnées depuis Unity Catalog, des modifications de schéma et de contraintes pouvant être appliquées, ainsi que des opérations d’écriture sécurisées à partir de moteurs externes. Non. Yes.
Définissez la propriété de table delta.feature.catalogManaged. Consultez Activer les validations de catalogue.
Optimisation prédictive L’optimisation prédictive optimise automatiquement la disposition et le calcul de vos données à l’aide de l’IA, sans nécessiter d’opérations de maintenance manuelles. Databricks recommande d’activer l’optimisation prédictive pour toutes les tables managées afin de réduire les coûts de stockage et de calcul.
L’optimisation prédictive s’exécute automatiquement :
Oui, pour tous les nouveaux comptes créés le ou après le 11 novembre 2024.
Pour les comptes actuels, Azure Databricks permet progressivement l’optimisation prédictive par défaut. Consultez Vérifier si l’optimisation prédictive est activée.
Yes. Consultez Activer l’optimisation prédictive.
Transactions multi-instruction Vous permet d’exécuter plusieurs instructions SQL sur une ou plusieurs tables en tant que validation atomique unique, avec des garanties ACID. Toutes les modifications réussissent ensemble ou se rétractent ensemble. Utiliser pour les procédures stockées et les scripts SQL dans les charges de travail d’entreposage critiques.
Les transactions qui écrivent dans des tables Delta Lake gérées sont disponibles en préversion publique.
Les transactions qui effectuent des écritures dans des tables Apache Iceberg gérées sont en préversion privée.
Non. Yes. Utiliser BEGIN ATOMIC ... END; pour les transactions non interactives ou BEGIN TRANSACTION; ... COMMIT; pour les transactions interactives. Consultez les modes de transaction.
Clustering automatique de liquides Pour les tables avec l’optimisation predictive, le clustering automatique de liquides permet Azure Databricks de sélectionner intelligemment des clés de clustering. À mesure que les modèles de requête changent, Azure Databricks met automatiquement à jour les clés de clustering pour améliorer les performances et réduire les coûts. Non. Yes. Consultez Activer le clustering liquide.
Mise en cache des métadonnées La mise en cache en mémoire des métadonnées de transaction améliore les performances des requêtes en minimisant les demandes adressées au journal des transactions stockés dans le cloud. Yes. Non. La mise en cache des métadonnées est toujours activée pour les tables managées.
Index de recherche en texte intégral Les index de recherche en texte intégral accélèrent les recherches de sous-chaînes et de mots-clés dans les colonnes de texte des tables gérées. Lorsqu'un index s'applique, Azure Databricks ignore les fichiers qui ne peuvent pas contenir de lignes correspondantes, ce qui réduit la quantité de données analysées.
Les index de recherche plein texte accélèrent les recherches de sous-chaînes et de mots à l’aide des fonctions search et isearch.
Les index de recherche en texte intégral sont en version bêta et nécessitent Databricks Runtime 18.2 et versions ultérieures.
Non. Yes. Créer avec CREATE INDEX (secondaire) ou CREATE SEARCH INDEX (texte intégral).
Suppression automatique de fichiers après une DROP TABLE commande Si vous DROP une table managée, Azure Databricks supprime les données dans le stockage cloud après 8 jours pour réduire vos coûts de stockage. Pour les tables externes, vous devez supprimer manuellement les fichiers de votre compartiment de stockage. Yes. Non. Pour les tables managées, les fichiers sont toujours supprimés automatiquement après 8 jours.

Accéder aux données Databricks à l’aide de systèmes externes

Les tables managées prennent en charge l’interopérabilité en autorisant l’accès à partir de clients Delta Lake et Iceberg. Grâce aux API ouvertes et à l'octroi d'informations d'identification, Unity Catalog permet aux moteurs externes tels que Trino, DuckDB, Apache Spark, Daft et aux moteurs intégrés au catalogue REST comme Iceberg, ainsi qu'à des moteurs tels que Dremio et Snowflake, d’accéder aux tables gérées. Consultez les intégrations pour obtenir la liste des moteurs externes pris en charge ou consultez la documentation de votre moteur si elle n’est pas incluse dans cette liste.

Les API ouvertes suivantes fournissent un accès aux systèmes externes aux tables gérées par le catalogue Unity :

  • API REST Unity : fournit l’accès en lecture, en écriture et en création pour les clients Delta à des tables Delta gérées.
  • Catalogue REST Iceberg (IRC) : fournit un accès en lecture, écriture et création pour les clients Iceberg à des tables Iceberg gérées et un accès en lecture seule aux tables Delta avec les lectures Iceberg activées (UniForm).

Les deux API prennent en charge la vente d’informations d’identification, qui fournit des informations d’identification temporaires et délimitées qui héritent des privilèges du principal Azure Databricks demandeur, en conservant les contrôles de gouvernance et de sécurité.

En outre, Delta Sharing est un protocole open source qui permet un accès sécurisé et régi aux données aux partenaires et plateformes externes. Vous pouvez utiliser le partage Delta pour accorder aux partenaires un accès temporaire en lecture seule.

Toutes les lectures et écritures dans les tables gérées doivent utiliser des noms de tables et des noms de catalogue et de schéma où elles existent. Par exemple : catalog_name.schema_name.table_name. L’accès basé sur le chemin d’accès aux tables managées du catalogue Unity n’est pas pris en charge (sauf en mode de compatibilité), car il contourne les contrôles d’accès du catalogue Unity et empêche les fonctionnalités de table managée de fonctionner correctement.

Créer une table managée

Pour créer une table managée, vous devez disposer des options suivantes :

  • USE SCHEMA sur le schéma parent de la table.
  • USE CATALOG sur le catalogue parent de la table.
  • CREATE TABLE sur le schéma parent de la table.

Utilisez la syntaxe SQL suivante pour créer une table managée vide à l’aide de SQL. Remplacez les valeurs d’espace réservé :

  • <catalog-name> : nom du catalogue qui contiendra la table.
  • <schema-name>: nom du schéma contenant la table.
  • <table-name> : nom de la table.
  • <column-specification>: nom et type de données de chaque colonne.
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

Pour maintenir les performances sur les lectures et les écritures, Azure Databricks exécute régulièrement des opérations pour optimiser les métadonnées de table Iceberg managées. Cette tâche est effectuée à l'aide du calcul serverless, qui dispose d'autorisations MODIFY sur la table Iceberg. Cette opération n'écrit que dans les métadonnées de la table, et le calcul ne conserve les autorisations sur la table que pendant la durée de la tâche.

Note

Pour créer une table Iceberg, spécifiez USING icebergexplicitement . Sinon, Azure Databricks crée une table Delta Lake par défaut.

Vous pouvez créer des tables gérées à partir de résultats de requête ou d’opérations d’écriture dataFrame. Les articles suivants illustrent certains des nombreux modèles que vous pouvez utiliser pour créer une table managée sur Azure Databricks :

Supprimer une table gérée

Pour supprimer une table managée, vous devez disposer des options suivantes :

  • MANAGE sur la table ou vous devez être le propriétaire de la table.
  • USE SCHEMA sur le schéma parent de la table.
  • USE CATALOG sur le catalogue parent de la table.

Pour supprimer une table managée, exécutez la commande SQL suivante :

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog prend en charge la UNDROP TABLE commande pour récupérer les tables managées supprimées pendant 8 jours. Au bout de 8 jours, Azure Databricks marque les données sous-jacentes à supprimer de votre locataire cloud et supprime les fichiers pendant la maintenance automatisée des tables. Voir UNDROP.