Mettre à niveau un workspace Databricks vers Unity Catalog
Cette page donne un aperçu de la façon de mettre à niveau un workspace sans Unity Catalog vers Unity Catalog. Il donne également des instructions pour la migration à partir de l'ancien Hive metastore, de DBFS et des versions de Databricks Runtime non prises en charge.
Présentation des étapes de mise à niveau
Pour effectuer une mise à niveau vers Unity Catalog, vous devez :
- Provisionnez des identités (utilisateurs, groupes et Service Principals) directement dans votre compte Databricks, si ce n'est pas déjà fait. Désactivez tout provisionnement d'identité au niveau du Workspace.
- Convertissez tous les groupes locaux de workspace en groupes au niveau du compte. Unity Catalog centralise la gestion des identités au niveau du compte.
- Associez le Workspace à un métastore Unity Catalog. Si aucun métastore n'existe pour la région de votre Workspace, un administrateur de compte doit en créer un.
- Mettre à niveau les tables et les vues gérées dans le Hive metastore vers Unity Catalog.
- Accordez aux utilisateurs, groupes ou Service Principals au niveau du compte l'accès aux tables mises à niveau.
- Mettez à jour les query et les Job pour référencer les nouvelles tables Unity Catalog au lieu des anciennes tables de Hive metastore.
- Migrez les fichiers, les Notebooks et les scripts depuis DBFS.
- Mettez à niveau les Ressources de compute actives vers les versions de Databricks Runtime prises en charge.
- Désactivez l'accès aux fonctionnalités héritées dans vos workspaces. Consultez Désactiver l'accès aux fonctionnalités héritées dans vos workspaces.
UCX, un projet Databricks Labs, fournit des outils qui vous aident à mettre à niveau votre workspace non-Unity Catalog vers Unity Catalog. UCX est un bon choix pour les migrations à plus grande échelle. Voir Utiliser les infrastructures publiques UCX pour mettre à niveau votre Workspace vers Unity Catalog.
Avant de commencer
Avant de commencer, vous devriez vous familiariser avec les concepts de base du Unity Catalog, y compris les métastores et le stockage géré. Voir Qu'est-ce que Unity Catalog ?
Vous devez également confirmer que vous répondez aux exigences suivantes :
- Pour la plupart des étapes de configuration, vous devez être administrateur de compte Databricks. Pour toute tâche ultérieure nécessitant d’autres exigences en matière d’autorisations, celles-ci sont répertoriées dans la documentation spécifique à la tâche.
Mettre à niveau vers les démos Unity Catalog
Regardez les démonstrations guidées courtes suivantes pour voir les tâches de mise à niveau clés en action. Chaque démo couvre une étape spécifique et renvoie à une documentation détaillée le cas échéant.
-
Convertir les groupes locaux de workspace en groupes au niveau du compte
-
Mettez à niveau les tables de votre Hive metastore vers les tables Unity Catalog
-
Mettez à jour le compute pour Unity Catalog.
-
Mettre à jour les requêtes et les Jobs pour qu'ils fonctionnent avec vos tables mises à jour
Vous pouvez également suivre la démo Utiliser UCX pour mettre à niveau vers Unity Catalog.
Provisionner des utilisateurs, des groupes et des Service Principals à votre compte
Unity Catalog référence les identités au niveau du compte. Avant d'attacher un metastore à votre workspace, vous devez faire ce qui suit :
-
Si vous utilisez SCIM pour provisionner les utilisateurs, les groupes et les Service Principals de votre IdP vers votre Workspace, désactivez-le et configurez plutôt le provisionnement vers votre compte Databricks. Consultez Synchroniser les identités de votre fournisseur d'identité et Identités.
-
Mettez à jour toute automatisation configurée pour gérer les utilisateurs, les groupes et les Service Principals, telle que les connecteurs de provisionnement SCIM et l'automatisation Terraform, afin qu'elle fasse référence aux endpoints de compte au lieu des endpoints d'espace de travail. Consultez Provisionnement SCIM au niveau du compte et du Workspace.
Convertir les groupes locaux de workspace en groupes au niveau du compte
Consultez Migrer des groupes locaux de workspace vers des groupes de comptes.
Attachez votre Workspace à un métastore
Si votre Workspace n'est pas activé pour Unity Catalog (attaché à un métastore), l'étape suivante dépend du fait que vous ayez déjà ou non un métastore Unity Catalog défini pour la région de votre Workspace :
- Si votre compte dispose déjà d'un métastore Unity Catalog défini pour la région de votre workspace, vous pouvez simplement attacher votre workspace au métastore existant. Accédez à Activer un workspace pour Unity Catalog.
- S'il n'y a pas de métastore Unity Catalog défini pour la région de votre Workspace, vous devez créer un métastore, puis attacher le Workspace. Accédez à Créer un métastore Unity Catalog.
Mettre à niveau les tables de votre Hive metastore vers les tables Unity Catalog
Si votre Workspace était en service avant d'être activé pour Unity Catalog, il contient un Hive metastore qui contient probablement des données que vous souhaitez continuer à utiliser. Databricks vous recommande de mettre à niveau les tables gérées par le Hive metastore vers le Unity Catalog metastore.
Option 1 : Fédérer, puis mettre à niveau les tables externes
L'approche recommandée consiste à d'abord fédérer votre Hive metastore ou votre catalogue AWS Glue en tant que catalogue externe, puis à mettre à niveau les tables externes sur place. Ce processus en deux étapes vous permet de migrer des tables sans déplacement de données tout en préservant l'historique des tables, la configuration, les autorisations et les vues.
D'abord, fédérez votre Hive metastore ou catalogue AWS Glue en tant que catalogue étranger dans Unity Catalog. Cela vous permet d'accéder à vos tables existantes via Unity Catalog et les prépare à la mise à niveau.
Pour obtenir des instructions sur la fédération de votre Hive metastore, consultez Fédération du Hive metastore : activer Unity Catalog pour gouverner les tables enregistrées dans un Hive metastore.
Si vous choisissez de ne pas mettre à niveau vos tables et souhaitez continuer à travailler avec le catalogue fédéré de manière permanente, vous pouvez le faire. Cependant, Databricks recommande de terminer la mise à niveau pour profiter pleinement des fonctionnalités de Unity Catalog.
Après avoir fédéré votre Hive metastore ou votre catalogue AWS Glue, vous pouvez mettre à niveau les tables externes vers des tables Unity Catalog sans aucun déplacement de données. Ce workflow met à niveau les tables sur place, en conservant l'historique des tables, la configuration, les autorisations et les vues.
Pour mettre à niveau une table externe vers une table gérée par Unity Catalog, exécutez la commande suivante :
ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET MANAGED;
Databricks recommande la mise à niveau vers une table gérée pour débloquer l'optimisation prédictive de Unity Catalog, qui inclut la maintenance automatique (compactage, clustering, vacuum) et des améliorations de performances. Pour mettre à niveau une table étrangère vers une table externe Unity Catalog à la place, exécutez la commande suivante :
ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET EXTERNAL;
Une fois vos tables migrées et que vous ne dépendez plus de la fédération vers votre catalogue externe, vous pouvez supprimer la connexion :
ALTER CATALOG <foreign_catalog> DROP CONNECTION;
Pour plus de détails sur ce workflow, veuillez consulter Tables externes à l'aide de SQL.
Option 2 : Mettre à jour les tables directement
Si vous choisissez de ne pas utiliser le workflow de mise à niveau basé sur la fédération, vous pouvez mettre à niveau les tables directement à l'aide de SYNC ou CREATE TABLE AS SELECT. Consultez Mettre à niveau les tables et les vues Hive vers Unity Catalog.
Accorder l'accès aux tables mises à niveau ou fédérées
Accordez aux utilisateurs, groupes ou Service Principal au niveau du compte l'accès aux nouvelles tables. Consultez Gérer les privilèges dans Unity Catalog.
Mettez à jour les requêtes et les jobs pour qu'ils fonctionnent avec vos tables mises à niveau et vos chemins d'accès aux données
Pendant la transition du métastore Hive local au workspace vers Unity Catalog, vous pouvez continuer à utiliser les queries et les Jobs qui référencent les données enregistrées dans le métastore Hive, en utilisant la fédération du métastore Hive (recommandé) ou la syntaxe décrite dans Utiliser le métastore Hive hérité avec Unity Catalog. Cependant, vous devez à terme mettre à jour toutes les queries et les Jobs pour utiliser les tables et la syntaxe Unity Catalog.
De même, mettez à jour les queries et les Jobs qui utilisent l'accès basé sur le chemin d'accès aux fichiers pour utiliser les volumes Unity Catalog à la place.
Pour des recommandations détaillées, consultez Mettre à jour les Jobs lors de la mise à niveau des workspaces hérités vers Unity Catalog.
Désactiver l'accès à DBFS
Dans le cadre de la migration vers Unity Catalog, Databricks recommande de désactiver l'accès à DBFS dans vos Workspaces. Cela garantit que toutes les données et tous les workflows sont régis par Unity Catalog, et que vous tirez pleinement parti des fonctionnalités de Unity Catalog.
Vous pouvez utiliser les scripts d'analyse DBFS de Databricks Labs pour analyser votre utilisation actuelle de DBFS et décider pour chacun s'il faut enregistrer l'asset sur place (à l'aide d'un emplacement externe), migrer vers Unity Catalog ou l'archiver si vous n'en avez plus besoin. Databricks Labs est un dépôt GitHub public qui n'est pas directement pris en charge par Databricks.
Les sections suivantes décrivent comment migrer différents assets de DBFS vers Unity Catalog.
Migrer les fichiers stockés dans DBFS
Si vous avez des fichiers bruts tels que Parquet, CSV, JSON ou des images stockés dans la racine DBFS (par exemple, sous /FileStore ou d'autres répertoires racines DBFS) ou dans un stockage cloud monté sur DBFS (sous /mnt/...), migrez-les à l'aide des volumes Unity Catalog et accédez-y à l'aide d'emplacements externes.
Les étapes suivantes décrivent comment migrer des fichiers de DBFS vers les volumes Unity Catalog. Pour plus d'information sur l'utilisation des volumes par rapport aux fichiers de l'Workspace, consultez Recommandations pour les fichiers dans les volumes et les fichiers d'Workspace.
Étape 1 : Configurez un emplacement externe
Pour enregistrer les assets dans Unity Catalog, configurez un emplacement externe Unity Catalog pour le conteneur de stockage cloud ou le chemin où résident actuellement les fichiers. Vous pouvez le faire à l'aide de Catalog Explorer, de commandes SQL, de Terraform ou de l'interface CLI Databricks.
Pour des instructions détaillées, consultez Se connecter au stockage d'objets cloud à l'aide de Unity Catalog.
Étape 2 : Créer un volume
Les volumes Unity Catalog offrent un moyen régi d'organiser les fichiers. Databricks recommande d'utiliser des volumes pour régir toutes les données non tabulaires. Vous pouvez créer un volume externe dans un schéma qui fait référence à un sous-chemin de votre emplacement externe. Par exemple :
USE CATALOG main;
USE SCHEMA data;
CREATE VOLUME IF NOT EXISTS raw_files
LOCATION 'my_data_loc/csv-files/';
Tous les fichiers sous ce chemin d'accès sont désormais accessibles via l'emplacement externe et régis par les autorisations Unity Catalog.
Pour plus d'informations, consultez Que sont les volumes Unity Catalog ?.
Étape 3 : Copier des fichiers depuis la racine DBFS.
Si vos fichiers étaient précédemment stockés dans la racine DBFS, copiez-les vers le chemin de stockage cloud. Par exemple, dans un notebook :
dbutils.fs.cp(
"dbfs:/FileStore/tables/data.csv",
"/Volumes/main/data/raw_files/data.csv"
)
Si vous avez un grand nombre de fichiers ou des fichiers de plus de quelques Go, envisagez d'utiliser la CLI Databricks ou une copie distribuée en utilisant Apache Spark pour paralléliser le déplacement. La commande Databricks CLI fs cp peut copier des répertoires de manière récursive.
Étape 4 : Vérifier les fichiers migrés
Après la migration, listez et lisez les fichiers des volumes en utilisant les commandes standard :
# List files in the volume
dbutils.fs.ls("/Volumes/main/data/raw_files/")
# Read a CSV file into a DataFrame
df = spark.read.option("header", True).csv(
"/Volumes/main/data/raw_files/2024-01-01-data.csv"
)
Ce code nécessite des autorisations Unity Catalog appropriées sur le volume ou l'emplacement externe et une ressource de compute qui prend en charge Unity Catalog. Unity Catalog veille à ce que le principal qui lit le fichier dispose de l'autorisation READ sur le volume ou l'emplacement externe.
Étape 5 : Nettoyer les montages DBFS
Après avoir vérifié que les fichiers dans le nouvel emplacement sont accessibles, démontez les anciens points de montage DBFS afin d’éviter toute confusion ou utilisation accidentelle :
dbutils.fs.unmount("/mnt/oldpath")
Envisagez de verrouiller ou de supprimer les données dans la racine DBFS si elles ont été déplacées, car laisser des copies peut entraîner des mises à jour incohérentes ou des risques de sécurité.
Migrer les assets du Workspace depuis DBFS
Certains Workspace ont des Notebooks, des fichiers de code ou des scripts de référence stockés sur DBFS. Ceux-ci pourraient inclure :
- Notebooks enregistrés en tant que fichiers HTML ou DBC dans
/FileStorepour le partage - Scripts Python ou fichiers JAR utilisés dans les jobs Databricks
- Scripts d'initialisation au niveau du compute (par exemple,
dbfs:/databricks/init/...)
Les Notebooks et le code doivent être stockés sous forme de fichiers Workspace ou dans des dossiers Git, et non sur DBFS. DBFS ne fournit pas de contrôle d'accès par fichier et ne doit pas être utilisé pour le code source ou les Notebooks.
- Notebooks : si vous avez des notebooks sous forme de fichiers sur DBFS, importez-les dans le Workspace Databricks. Vous pouvez le faire manuellement à l'aide de la fonction d'importation de l'interface utilisateur ou de la CLI. Assurez-vous que les autorisations de Notebook dans le Workspace sont définies de manière appropriée pour l'accès de l'équipe. À l'avenir, stockez les Notebook sous forme d'objets Workspace ou dans des dossiers Git, et utilisez Git pour le contrôle de version.
- Scripts de Job : si des Jobs sont configurés pour exécuter un script Python à partir de DBFS (par exemple, un Job avec un type de tâche "script Python" faisant référence à
dbfs:/mnt/scripts/my_etl.py), déplacez ces scripts vers les fichiers du Workspace. Gérez-les dans un dossier Git pour le contrôle de version et le suivi des modifications. - Créer des artefacts et des bibliothèques : Les assets comme les fichiers JAR et les Python Wheels doivent être stockés dans les volumes de Unity Catalog.
- Scripts d’initialisation de compute : Les scripts d’initialisation de compute doivent être stockés dans des volumes Unity Catalog. Consultez Que sont les scripts d’initialisation ?.
Localisez et migrez le compute vers des versions de Databricks Runtime et des modes d'accès pris en charge
Cette section comprend des queries qui accèdent à la table system.compute.clusters. Pour accéder à cette table système, vous devez être un administrateur de compte Databricks ou avoir reçu les autorisations USE et SELECT sur le schéma système compute. Consultez Autoriser l'accès aux tables système.
Dans le cadre de la migration vers Unity Catalog, Databricks recommande de mettre à niveau toutes les ressources de compute et les Jobs vers Databricks Runtime 13.3 LTS ou version supérieure et d'utiliser les modes d'accès Unity Catalog.
Pour examiner manuellement le compute dans votre workspace, accédez à la page Compute du workspace. Dans la section Compute tout usage , examinez la version de Databricks Runtime de chaque compute. Triez ou filtrez par version pour identifier les clusters exécutant des versions antérieures à 13.3 LTS. Répétez l'opération pour la section Job compute , car les Jobs peuvent également être configurés pour utiliser une version spécifique de Databricks Runtime.
Pour trouver programmatiquement le compute exécutant des versions antérieures à 13.3 LTS, interrogez la table system.compute.clusters. Par exemple :
SELECT
workspace_id,
cluster_id,
dbr_version
FROM system.compute.clusters
WHERE
TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) < 13
OR (
TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) = 13
AND TRY_CAST(SPLIT(dbr_version, '\\.')[1] AS INT) < 3
);
Ceci renverra une liste de ressources de calcul multifonction et de Jobs compute exécutant des versions inférieures à 13.3 LTS.
Mettre à niveau le compute vers les modes d'accès pris en charge
Si vous avez toujours du compute exécuté en mode d'accès partagé sans isolement, vous pouvez le mettre à niveau vers les modes d'accès pris en charge. Voir Modes d'accès. Pour interroger le compute exécuté en mode d'accès partagé sans isolation, interrogez la table system.compute.clusters. Par exemple :
SELECT
workspace_id,
cluster_id,
dbr_version,
data_security_mode
FROM system.compute.clusters
WHERE data_security_mode IN ('NONE','NO_ISOLATION')
LIMIT 100;
Désactiver l'accès aux fonctionnalités héritées dans vos workspaces
Une fois les étapes de migration ci-dessus terminées, vous pouvez désactiver l'accès aux anciennes fonctionnalités dans vos Workspaces.
- Désactiver la racine et les montages DBFS : une fois que vous avez migré toutes les données et tous les workflows qui dépendent de la racine ou des montages DBFS, et mis à niveau tous les Jobs et clusters vers Databricks Runtime 13.3 LTS ou version supérieure, les administrateurs de Workspace peuvent désactiver DBFS dans les workspaces existants. Consultez Désactiver l'accès à la racine et aux montages DBFS dans votre espace de travail Databricks existant.
- Désactiver le Hive metastore : une fois que vous avez terminé votre migration vers Unity Catalog ou fédéré votre Hive metastore en tant que catalogue externe régi par Unity Catalog, les administrateurs de Workspace peuvent empêcher les utilisateurs de contourner Unity Catalog et d'accéder aux tables enregistrées dans le Hive metastore. Voir Désactiver l’accès au Hive metastore utilisé par votre Databricks workspace.
- Désactiver les ressources de compute partagées sans isolation : Pour empêcher les utilisateurs de créer de nouvelles ressources de compute partagées sans isolation, les administrateurs de workspace peuvent désactiver les ressources de compute partagées sans isolation dans leurs workspaces. Consultez Activer la protection de l'administrateur pour les clusters partagés sans isolation dans votre compte.