Meilleures pratiques pour DBFS et Unity Catalog
La racine et les montages DBFS sont tous deux obsolètes et non recommandés par Databricks. Les nouveaux comptes sont provisionnés sans accès à ces fonctionnalités. Databricks recommande d’utiliser les volumes, les emplacements externes ou les fichiers de workspace de Unity Catalog à la place.
Unity Catalog introduit un certain nombre de nouvelles configurations et de concepts qui abordent la gouvernance des données de manière entièrement différente de DBFS. Cet article présente plusieurs bonnes pratiques concernant l'utilisation des emplacements externes Unity Catalog et de DBFS.
Databricks déconseille l'utilisation de DBFS et du stockage d'objets cloud monté pour la plupart des cas d'utilisation dans les workspaces Databricks compatibles Unity Catalog. Cet article décrit quelques scénarios dans lesquels vous devriez utiliser le stockage d'objets cloud monté. Notez que Databricks ne recommande pas d'utiliser la racine DBFS en conjonction avec Unity Catalog, à moins que vous ne deviez migrer les fichiers ou les données qui y sont stockés vers Unity Catalog.
Comment DBFS est-il utilisé dans les Unity Catalog-enabled Workspace ?
Les actions effectuées sur les tables dans le hive_metastore utilisent des modèles d'accès aux données hérités, qui peuvent inclure des données et des identifiants de stockage gérés par DBFS. Les tables gérées dans le hive_metastore délimité par le Workspace sont stockées sur la racine DBFS.
Comment fonctionne DBFS en mode d'accès dédié (anciennement mode d'accès utilisateur unique) ?
Les ressources de compute configurées avec le mode d'accès dédié ont un accès complet à DBFS, y compris tous les fichiers de la racine DBFS et les données montées.
Comment fonctionne DBFS en mode d'accès standard (anciennement mode d'accès partagé) ?
Le mode d'accès standard combine la gouvernance des données Unity Catalog avec les ACL de table héritées de Databricks. L'accès aux données dans le hive_metastore est uniquement disponible pour les utilisateurs auxquels des autorisations ont été explicitement accordées.
Pour interagir directement avec les fichiers à l'aide de DBFS, vous devez disposer des autorisations ANY FILE. Étant donné que ANY FILE permet aux utilisateurs de contourner les ACL des tables héritées dans le hive_metastore et d'accéder à toutes les données gérées par DBFS, Databricks recommande la prudence lors de l'octroi de ce privilège.
N'utilisez pas DBFS avec les emplacements externes Unity Catalog
Unity Catalog sécurise l'accès aux données dans les emplacements externes en utilisant les chemins URI cloud complets pour identifier les autorisations sur les répertoires de stockage d'objets géré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 vous recommande de ne pas réutiliser les volumes de stockage d'objets cloud entre les montages DBFS et les volumes externes Unity Catalog, y compris lors du partage de données entre les Workspace ou les comptes.
Sécurisez votre stockage géré par Unity Catalog
Unity Catalog utilisant des emplacements de stockage gérés pour stocker des fichiers de données pour les tables et les volumes gérés.
Databricks recommande ce qui suit pour les emplacements de stockage gérés :
- Utilisez de nouveaux comptes de stockage ou compartiments.
- Définissez une politique d'identité personnalisée pour Unity Catalog.
- Restreindre tout accès à Databricks géré par Unity Catalog.
- Restreignez tout accès aux politiques d’accès d’identité créées pour Unity Catalog.
Ajouter des données existantes à des emplacements externes
Il est possible de charger des comptes de stockage existants dans Unity Catalog à l'aide d'emplacements externes. Pour une sécurité optimale, Databricks recommande de ne charger les comptes de stockage vers des emplacements externes qu'après avoir révoqué tous les autres identifiants de stockage et modèles d'accès.
Vous ne devriez 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 Unity Catalog
Unity Catalog 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 d'un comportement personnalisé avec le stockage d'objets cloud ne fonctionnent pas lors de l'accès aux données à l'aide d'Unity Catalog.
Limitation concernant 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 commande ou cellule de notebook en utilisant 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 Unity Catalog sur a/b/, le code suivant produirait une erreur :
spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")
Cette erreur ne se produirait pas si cette logique était divisée en deux cellules :
df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")