Partager via


Utiliser des tables externes

Dans le catalogue Unity, une table externe stocke ses fichiers de données dans le stockage d’objets cloud au sein de votre tenant cloud. Unity Catalog continue de gérer les métadonnées de la table, ce qui garantit une gouvernance complète des données sur toutes les requêtes. Toutefois, elle ne gère pas le cycle de vie, l’optimisation, l’emplacement de stockage ou la disposition des données.

Lorsque vous définissez une table externe du catalogue Unity, vous devez spécifier un emplacement de stockage. Cet emplacement est un emplacement externe inscrit dans le catalogue Unity. Lorsque vous supprimez une table externe, Unity Catalog supprime les métadonnées de la table, mais ne supprime pas les fichiers de données sous-jacents.

Cet article se concentre sur les tables externes du catalogue Unity. Les tables externes dans le metastore Hive hérité ont des comportements différents. Consultez Objets de base de données dans le metastore Hive hérité.

Quand utiliser des tables externes

Databricks recommande d’utiliser des tables externes pour les cas d’usage suivants :

  • Vous devez inscrire une table sauvegardée par des données existantes qui ne sont pas compatibles avec les tables gérées par le catalogue Unity.
  • Vous avez également besoin d’un accès direct aux données provenant de clients non Databricks qui ne prennent pas en charge d’autres modèles d’accès externes. Les privilèges du catalogue Unity ne sont pas appliqués lorsque les utilisateurs accèdent aux fichiers de données à partir de systèmes externes. Consultez Accéder aux données de Databricks à l’aide de systèmes externes.

Dans la plupart des cas, Databricks recommande d’utiliser des tables gérées par le catalogue Unity pour tirer parti de l’optimisation automatique des tables, des performances de requête plus rapides et des coûts réduits. Pour migrer des tables externes vers des tables managées, consultez Convertir une table externe en table de catalogue Unity managée.

Important

Si vous mettez à jour les métadonnées de table externe à l’aide d’un client non Databricks ou que vous utilisez l’accès basé sur le chemin d’accès à partir de Databricks, ces métadonnées ne synchronisent pas automatiquement l’état avec le catalogue Unity. Databricks recommande de ne pas effectuer de telles mises à jour de métadonnées, mais si vous en réalisez une, vous devez exécuter MSCK REPAIR TABLE <table-name> SYNC METADATA pour mettre à jour le schéma dans le catalogue Unity. Voir REPAIR TABLE.

Formats de fichiers pour les tables externes

Les tables externes peuvent utiliser les formats de fichiers suivants :

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARQUET
  • Orc
  • Texte

Créer une table externe

Vous pouvez créer des tables externes à l’aide de commandes SQL ou d’opérations d’écriture dataFrame.

Avant de commencer

Avant de créer une table externe, vous devez d’abord configurer un emplacement externe qui accorde l’accès à votre stockage cloud.

Pour plus d’informations sur la configuration des emplacements externes, consultez Créer un emplacement externe pour connecter le stockage cloud à Azure Databricks.

Pour créer une table externe, vous devez respecter les exigences d’autorisation suivantes :

  • Le privilège CREATE EXTERNAL TABLE sur un emplacement externe qui accorde l’accès au LOCATION accessible par la table externe.
  • Autorisation USE CATALOG sur le catalogue parent de la table.
  • Autorisation USE SCHEMA sur le schéma parent de la table.
  • Autorisation CREATE TABLE sur le schéma parent de la table.

Remarque

Lorsqu’un emplacement externe S3 est associé à plusieurs metastores, évitez d’accorder l’accès en écriture aux tables qui utilisent cet emplacement S3, car les écritures provenant de différents metastores dans la même table externe peuvent entraîner des problèmes de cohérence. Toutefois, la lecture depuis le même emplacement externe Amazon S3 à travers plusieurs metastores est sécurisée.

Exemples de commandes SQL

Utilisez l’un des exemples de commandes suivants dans un notebook ou l’éditeur de requête SQL pour créer une table externe.

Dans les exemples suivants, remplacez les valeurs d’espace réservé :

  • <catalog>: Nom du catalogue qui contiendra la table.
  • <schema>: Nom du schéma qui contient la table.
  • <table-name>: Nom pour la table.
  • <column-specification>: Le nom et le type de données de chaque colonne.
  • <bucket-path> : Chemin d’accès à l’espace de stockage cloud dans lequel la table sera créée.
  • <table-directory>: Répertoire dans lequel la table sera créée. Utilisez un répertoire unique pour chaque table.

ADLS

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

S3

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';

Pour plus d’informations sur les paramètres de création de table, consultez CREATE TABLE.

Opérations d’écriture de trame de données

Vous pouvez également créer des tables externes à partir de résultats de requête ou d’opérations d’écriture dataFrame. Utilisez la LOCATION clause pour spécifier le chemin d’accès de stockage externe lors de la création de tables avec des DataFrames.

Les options de syntaxe SQL suivantes fonctionnent avec les opérations DataFrame :

Supprimer une table externe

Pour supprimer une table, vous devez en être le propriétaire ou disposer du droit MANAGE sur celle-ci. Pour exclure une table externe, exécutez la commande SQL suivante :

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Le catalogue Unity ne supprime pas les données sous-jacentes dans le stockage cloud lorsque vous excluez une table externe. Vous devez supprimer directement les fichiers de données sous-jacents si vous devez supprimer les données associées à la table.

Exemple de notebook : créer des tables externes

Vous pouvez utiliser l’exemple de notebook suivant pour créer un catalogue, un schéma et une table externe, ainsi que gérer les autorisations sur ceux-ci.

Créer et gérer une table externe dans un notebook Unity Catalog

Obtenir le notebook