Meilleures pratiques pour le catalogue DBFS et Unity
Unity Catalog introduit un certain nombre de nouvelles configurations et concepts qui approchent entièrement de la gouvernance des données différemment de DBFS. Cet article décrit plusieurs bonnes pratiques relatives à l’utilisation des emplacements externes du catalogue Unity et DBFS.
Databricks déconseille d'utiliser DBFS et le stockage d'objets cloud monté pour la plupart des cas d'utilisation dans les espaces de travail Azure Databricks avec Unity Catalog. Cet article décrit quelques scénarios dans lesquels vous devez utiliser le stockage d’objets cloud monté. Notez que Databricks ne recommande pas d’utiliser la racine DBFS conjointement avec Unity Catalog, sauf si vous devez migrer des fichiers ou des données stockés dans le catalogue Unity.
Comment DBFS est-il utilisé dans les espaces de travail avec catalogue Unity ?
Les actions effectuées sur des tables du hive_metastore
utilisent des modèles d’accès aux données hérités, qui peuvent inclure des données et des informations d’identification de stockage gérées par DBFS. Les tables managées dans le hive_metastore
étendu à l’espace de travail sont stockées sur la racine DBFS.
Comment DBFS fonctionne-t-il en mode d’accès utilisateur unique ?
Les clusters configurés avec le mode d’accès utilisateur unique ont un accès complet à DBFS, y compris tous les fichiers de la racine DBFS et des données montées.
Comment fonctionne DBFS en mode d’accès partagé ?
Le mode d’accès partagé combine la gouvernance des données Unity Catalog avec les listes de contrôle d’accès héritées d’Azure Databricks. L’accès aux données dans le hive_metastore
est disponible uniquement aux utilisateurs disposant d’autorisations explicitement accordées.
Pour interagir avec des fichiers directement à l’aide de DBFS, vous devez disposer d’autorisations ANY FILE
accordées. Étant donné que ANY FILE
permet aux utilisateurs de contourner les listes de contrôle d’accès des tables héritées dans le hive_metastore
et d’accéder à toutes les données gérées par DBFS, Databricks recommande de se méfier lors de l’octroi de ce privilège.
N’utilisez pas DBFS avec des emplacements externes du catalogue Unity
Unity Catalog sécurise l’accès aux données dans des emplacements externes à l’aide de chemins d’URI cloud complets pour identifier les octrois sur les répertoires de stockage d’objets managés. Les montages DBFS utilisent un modèle d’accès aux données entièrement différent qui contourne entièrement unity Catalog. Databricks recommande de ne pas réutiliser les volumes de stockage d’objets cloud entre les montages DBFS et les volumes externes UC, notamment lors du partage de données entre des espaces de travail ou des comptes.
Sécuriser votre stockage géré par le catalogue Unity
Catalogue Unity utilisant des emplacements de stockage managés pour stocker des fichiers de données pour les tables et volumes managés.
Databricks recommande ce qui suit pour les emplacements de stockage géré :
- Utilisez de nouveaux comptes de stockage ou buckets.
- Définissez une stratégie d’identité personnalisée pour le catalogue Unity.
- Limitez tout accès à Azure Databricks géré par Unity Catalog.
- Limitez tout l’accès aux stratégies d’accès aux identités créées pour Unity Catalog.
Ajouter des données existantes à des emplacements externes
Il est possible de charger des comptes de stockage existants dans le catalogue Unity à l’aide d’emplacements externes. Pour une sécurité optimale, Databricks recommande uniquement de charger des comptes de stockage vers des emplacements externes après avoir révoqué toutes les autres informations d’identification de stockage et modèles d’accès.
Vous ne devez jamais charger un compte de stockage utilisé comme racine DBFS en tant qu'emplacement externe dans Unity Catalog.
Les configurations de cluster sont ignorées par l’accès au système de fichiers du catalogue Unity
Le catalogue Unity ne respecte pas les configurations de cluster pour les paramètres du système de fichiers. Cela signifie que les paramètres du système de fichiers Hadoop pour la configuration du comportement personnalisé avec le stockage d’objets cloud ne fonctionnent pas lors de l’accès aux données à l’aide du catalogue Unity.
Limitation autour de l’accès à plusieurs chemins
Bien que vous puissiez généralement utiliser unity Catalog et DBFS ensemble, les chemins d’accès qui sont égaux ou partagent une relation parent/enfant ne peuvent pas être référencés dans la même cellule de commande ou de bloc-notes à l’aide de différentes méthodes d’accès.
Par exemple, si une table externe foo
est définie dans le hive_metastore
à l’emplacement a/b/c
et qu’un emplacement externe est défini dans le catalogue Unity sur a/b/
, le code suivant génère une erreur :
spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")
Cette erreur ne se produit pas si cette logique est divisée en deux cellules :
df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")