Utiliser des tables externes

Les tables externes stockent des données dans un annuaire dans le stockage d’objets cloud de votre client cloud. Vous devez spécifier un emplacement de stockage lorsque vous définissez une table externe.

Databricks recommande d’utiliser des tables externes uniquement lorsque vous avez besoin d’un accès direct aux données sans utiliser de calcul sur Azure Databricks. 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.

Remarque

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é.

Utiliser des tables externes

Azure Databricks gère uniquement les métadonnées des tables externes et n’utilise pas l’emplacement de stockage de gestion associé au schéma conteneur. L’inscription de table dans Le catalogue Unity est simplement un pointeur vers les fichiers de données. La suppression d’une table externe ne supprime pas les fichiers de données.

Lorsque vous créez une table externe, vous pouvez inscrire un annuaire existant de fichiers de données comme table ou fournir un chemin d’accès pour créer de nouveaux fichiers de données.

Les tables externes peuvent utiliser les formats de fichiers suivants :

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARQUET
  • ORC
  • TEXT

Créer une table externe

Pour créer une table externe, vous pouvez utiliser des commandes SQL ou des opérations d’écriture de DataFrame.

Avant de commencer

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 SCHEMA sur le schéma parent de la table.
  • Autorisation USE CATALOG sur le catalogue parent de la table.
  • Autorisation CREATE TABLE sur le schéma parent de la table.

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

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

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

Opérations d’écriture de DataFrame

De nombreux utilisateurs créent des tables externes à partir de résultats de requête ou d’opérations d’écriture de DataFrame. Les articles suivants illustrent certains des nombreux modèles que vous pouvez utiliser pour créer une table externe sur Azure Databricks :

Exclure une table externe

Vous devez être le propriétaire d’une table pour la supprimer. 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