Comment fonctionnent les chemins pour les données gérées par Unity Catalog ?
Cet article explique les restrictions relatives aux chevauchements de chemins dans Unity Catalog, détaille les modèles d’accès basés sur le chemin pour les fichiers de données dans les objets Unity Catalog et décrit comment Unity Catalog gère les chemins des tables et des volumes.
Remarque
Les volumes sont uniquement pris en charge dans Databricks Runtime 13.3 LTS et versions ultérieures. Dans Databricks Runtime 12.2 LTS et ci-dessous, les opérations sur /Volumes
les chemins peuvent réussir, mais elles ne peuvent écrire que des données sur des disques de stockage éphémères attachés à des clusters de calcul plutôt que de conserver des données dans des volumes de catalogue Unity comme prévu.
Les chemins pour les objets Unity Catalog ne peuvent pas se chevaucher
Unity Catalog applique une gouvernance des données en empêchant les répertoires managés des données de se chevaucher. Unity Catalog applique les règles suivantes :
- Les emplacements externes ne peuvent pas chevaucher d’autres emplacements externes.
- Les tables et les volumes stockent des fichiers de données dans des emplacements externes ou dans l’emplacement racine du metastore.
- Les volumes ne peuvent pas chevaucher d’autres volumes.
- Les tables ne peuvent pas chevaucher d’autres tables.
- Les tables et les volumes ne peuvent pas se chevaucher.
- Les emplacements de stockage managé ne peuvent pas se chevaucher. Consultez Spécifier un emplacement de stockage managé dans Unity Catalog.
- Les volumes externes ne peuvent pas chevaucher les emplacements de stockage managé.
- Les tables externes ne peuvent pas chevaucher les emplacements de stockage managé.
Ces règles signifient que les restrictions suivantes existent dans Unity Catalog :
- Vous ne pouvez pas définir un emplacement externe dans un autre emplacement externe.
- Vous ne pouvez pas définir un volume dans un autre volume.
- Vous ne pouvez pas définir une table dans une autre table.
- Vous ne pouvez pas définir de table sur des fichiers de données ou des répertoires au sein d’un volume.
- Vous ne pouvez pas définir un volume sur un répertoire dans une table.
Remarque
Vous pouvez toujours utiliser l’accès basé sur le chemin pour écrire ou lire des fichiers de données à partir de volumes, notamment Delta Lake. Vous ne pouvez pas inscrire ces fichiers de données en tant que tables dans le metastore Unity Catalog.
Les chemins pour les tables managées et les volumes managés sont complètement managés par Unity Catalog
Lorsque vous créez une table managée ou un volume managé, Unity Catalog crée un répertoire dans l’emplacement de stockage configuré par Unity Catalog associé au schéma contenant. Le nom de ce répertoire est généré de manière aléatoire pour éviter tout conflit potentiel avec d’autres répertoires déjà présents.
Ce comportement diffère de la façon dont le metastore Hive crée des tables managées. Databricks recommande de toujours interagir avec les tables managées Unity Catalog à l’aide de noms de tables et de volumes managés par Unity Catalog avec des chemins de volume.
Les chemins pour les tables externes et les volumes externes sont régis par Unity Catalog
Lorsque vous créez une table externe ou un volume externe, vous spécifiez un chemin dans un emplacement externe régi par Unity Catalog.
Important
Databricks recommande de ne jamais créer de volume externe ou de table externe à la racine d’un emplacement externe. Créez plutôt des volumes externes et des tables externes dans des sous-répertoires au sein d’un emplacement externe. Ces recommandations doivent vous aider à éviter les chevauchements accidentels de chemins. Consultez Les chemins pour les objets Unity Catalog ne peuvent pas se chevaucher.
Pour une utilisation plus facile, Databricks recommande d’interagir avec des tables externes Unity Catalog à l’aide de noms de tables et de volumes externes Unity Catalog avec des chemins de volume.
Par ailleurs, les utilisateurs disposant de privilèges suffisants sur l’objet Unity Catalog correspondant peuvent accéder aux données d’une table ou d’un volume externe à l’aide du chemin d’accès complet pour le stockage de l’objet cloud.
Important
Unity Catalog gère tous les privilèges d’accès avec des URI cloud pour les données associées à des tables externes ou à des volumes externes. Ces privilèges remplacent tous les privilèges associés à des emplacements externes. Consultez Privilèges Unity Catalog et objets sécurisables.
Comment accéder aux données dans Unity Catalog ?
Les objets Unity Catalog fournissent un accès aux données par le biais d’identificateurs d’objets, de chemins de volume ou d’URI cloud. Vous pouvez utiliser ces valeurs pour accéder aux données associées à des volumes et des tables.
Les tables Unity Catalog sont accessibles à l’aide d’un identificateur à trois niveaux avec le modèle suivant :
<catalog_name>.<schema_name>.<table_name>
Que sont les chemins d’accès de fichier de volume dans Unity Catalog ?
Les volumes fournissent un chemin pour accéder aux fichiers de données avec le modèle suivant :
/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>
Les URI cloud exigent que les utilisateurs fournissent le pilote, l’identificateur de conteneur de stockage et le chemin complet des fichiers cibles, comme dans l’exemple suivant :
abfss://<container_name>@<storage_account>.dfs.core.windows.net/<path>
Le tableau suivant montre les méthodes d’accès autorisées pour les objets Unity Catalog :
Object | Identificateur d'objet | Chemin de fichier | URI cloud |
---|---|---|---|
Emplacement externe | non | non | Oui |
Table managée | Oui | non | non |
Table externe | Oui | non | Oui |
Volume managé | non | Oui | non |
Volume externe | non | oui | Oui |
Remarque
Les volumes Unity Catalog utilisent des identificateurs d’objets à trois niveaux avec le modèle suivant pour les commandes de gestion (telles que CREATE VOLUME
et DROP VOLUME
) :
<catalog_name>.<schema_name>.<volume_name>
Pour utiliser des fichiers dans des volumes, vous devez en fait utiliser un accès basé sur le chemin.