Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 TABLEsur un emplacement externe qui accorde l’accès auLOCATIONaccessible par la table externe. - Autorisation
USE CATALOGsur le catalogue parent de la table. - Autorisation
USE SCHEMAsur le schéma parent de la table. - Autorisation
CREATE TABLEsur 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.