Créer et gérer des catalogues

Cet article montre comment créer et gérer des catalogues dans Unity Catalog. Un catalogue contient des schémas (bases de données), et un schéma contient des tables, des vues, des volumes, des modèles et des fonctions.

Remarque

Dans les espaces de travail activés automatiquement pour le catalogue Unity, un catalogue d’espaces de travail a été créé par défaut. Tous les utilisateurs de votre espace de travail (et uniquement de votre espace de travail) y ont accès par défaut. Consultez étape 1 : vérifiez que votre espace de travail est activé pour le catalogue Unity.

Remarque

Pour savoir comment créer un catalogue étranger, un objet Unity Catalog qui reflète une base de données dans un système de données externe, consultez Créer un catalogue étranger. Voir aussi Gérer et utiliser des catalogues étrangers.

Spécifications

Pour créer un catalogue :

  • Vous devez être administrateur de metastore Azure Databricks ou disposer du privilège CREATE CATALOG sur le metastore.

  • Vous devez disposer d’un metastore Unity Catalog lié à l’espace de travail où vous effectuez la création du catalogue.

  • Le cluster que vous utilisez pour exécuter un notebook afin de créer un catalogue doit utiliser un mode d’accès conforme à Unity Catalog. Voir Modes d’accès aux fichiers.

    Les entrepôts SQL prennent toujours en charge Unity Catalog.

Créer un catalogue

Pour créer un catalogue, vous pouvez utiliser Catalog Explorer ou une commande SQL.

Catalog Explorer

  1. Connectez-vous à un espace de travail lié au metastore.

  2. Cliquez sur Icône CatalogueCatalogue.

  3. Cliquez sur le bouton Créer un catalogue.

  4. Sélectionnez le type de catalogue que vous souhaitez créer :

    • Catalogue standard : objet sécurisable qui organise les ressources de données gérées par Unity Catalog. Pour tous les cas d’usage à l’exception de Lakehouse Federation.
    • Catalogue étranger est un objet sécurisable dans le catalogue Unity qui reflète une base de données dans un système de données externe avec Lakehouse Federation. Consultez Vue d’ensemble de la configuration de Lakehouse Federation.
  5. (Facultatif mais fortement recommandé) Spécifiez un emplacement de stockage managé. Nécessite le privilège CREATE MANAGED STORAGE sur l’emplacement externe. Consultez Spécifier un emplacement de stockage managé dans Unity Catalog.

    Important

    Si votre espace de travail n’a pas d’emplacement de stockage au niveau du metastore, vous devez spécifier un emplacement de stockage managé lorsque vous créez un catalogue.

  6. Cliquez sur Créer.

  7. (Facultatif) Spécifiez l’espace de travail auquel le catalogue est lié.

    Par défaut, le catalogue est partagé avec tous les espaces de travail attachés au metastore actuel. Si le catalogue contient des données qui doivent être limitées à des espaces de travail spécifiques, accédez à l’onglet Espaces de travail et ajoutez ces espaces de travail.

    Pour plus d’informations, consultez (Facultatif) Affecter un catalogue à des espaces de travail spécifiques.

  8. Attribuez des autorisations pour votre catalogue. Consultez Privilèges Unity Catalog et objets sécurisables.

SQL

  1. Exécutez la commande SQL suivante dans un notebook ou dans l’éditeur Databricks SQL. Les éléments entre crochets sont optionnels. Remplacez les valeurs d’espace réservé :

    • <catalog-name> : Nom du catalogue.

    • <location-path>: facultatif mais fortement recommandé. Fournissez un chemin d’accès d’emplacement de stockage si vous souhaitez que les tables managées de ce catalogue soient stockées à un emplacement différent du stockage racine par défaut configuré pour le metastore.

      Important

      Si votre espace de travail n’a pas d’emplacement de stockage au niveau du metastore, vous devez spécifier un emplacement de stockage managé lorsque vous créez un catalogue.

      Ce chemin doit être défini dans une configuration d’emplacement externe et vous devez disposer du privilège CREATE MANAGED STORAGE sur la configuration d’emplacement externe. Vous pouvez utiliser le chemin défini dans la configuration de l’emplacement externe ou un sous-chemin (en d’autres termes, 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' ou 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance/product'). Nécessite Databricks Runtime 11.3 ou version ultérieure.

    • <comment> : description facultative ou autre commentaire.

    Remarque

    Si vous créez un catalogue étranger (objet sécurisable dans le catalogue Unity qui met en miroir une base de données dans un système de données externe, utilisé pour la fédération Lakehouse), la commande SQL est CREATE FOREIGN CATALOG et les options sont différentes. Voir Créer un catalogue étranger.

    CREATE CATALOG [ IF NOT EXISTS ] <catalog-name>
       [ MANAGED LOCATION '<location-path>' ]
       [ COMMENT <comment> ];
    

    Par exemple, pour créer un catalogue nommé example :

    CREATE CATALOG IF NOT EXISTS example;
    

    Si vous souhaitez limiter l’accès au catalogue à des espaces de travail spécifiques dans votre compte (liaison espace de travail-catalogue), consultez la section Lier un catalogue à un ou plusieurs espaces de travail.

    Pour obtenir les descriptions des paramètres, consultez CREATE CATALOG.

  2. Attribuez des privilèges au catalogue. Consultez Privilèges Unity Catalog et objets sécurisables.

Quand vous créez un catalogue, deux schémas (bases de données) sont créés automatiquement : default et information_schema.

Vous pouvez également créer un schéma à l’aide du fournisseur Databricks Terraform et databricks_schema. Vous pouvez récupérer des informations sur les catalogues à l’aide de databricks_catalogs.

(Facultatif) Affecter un catalogue à des espaces de travail spécifiques

Si vous utilisez des espaces de travail pour isoler l’accès aux données utilisateur, vous pouvez limiter l’accès au catalogue à des espaces de travail spécifiques dans votre compte, également appelés liaison espace de travail-catalogue. La valeur par défaut consiste à partager le catalogue avec tous les espaces de travail attachés au metastore actuel.

Vous pouvez soit autoriser l’accès en lecture et en écriture au catalogue à partir d’un espace de travail (par défaut), soit spécifier un accès en lecture seule. Si vous spécifiez un accès en lecture seule, toutes les opérations d’écriture sont bloquées de l’espace de travail vers le catalogue.

Les cas d’usage classiques pour lier un catalogue à des espaces de travail spécifiques sont les suivants :

  • S’assurer que les utilisateurs peuvent accéder uniquement aux données de production à partir d’un environnement d’espace de travail de production.
  • S’assurer que les utilisateurs peuvent traiter uniquement les données sensibles à partir d’un espace de travail dédié.
  • Permettre aux utilisateurs d’accéder en lecture seule aux données de production à partir d’un espace de travail « développeur » pour effectuer des tâches de développement et des tests.

Remarque

Vous pouvez également lier des emplacements externes et des informations d’identification de stockage à des espaces de travail spécifiques, limitant ainsi la capacité à accéder aux données dans des emplacements externes aux utilisateurs privilégiés de ces espaces de travail. Voir (Facultatif) Affecter un emplacement externe à des espaces de travail spécifiques et (Facultatif) Affecter des informations d’identification de stockage à des espaces de travail spécifiques.

Exemple de liaison espace de travail-catalogue

Prenons l’exemple de l’isolation de la production et du développement. Si vous spécifiez que vos catalogues de données de production ne sont accessibles qu’à partir d’espaces de travail de production, cela remplace les subventions individuelles accordées aux utilisateurs.

Diagramme de liaison catalogue-espace de travail

Dans ce diagramme, prod_catalog est lié à deux espaces de travail de production. Supposons qu’un utilisateur a obtenu l’accès à une table dans prod_catalog appelée my_table (à l’aide de GRANT SELECT ON my_table TO <user>). Si l’utilisateur tente d’accéder my_table dans l’espace de travail Dev, il reçoit un message d’erreur. L’utilisateur peut accéder uniquement à my_table partir des espaces de travail Prod ETL et Prod Analytics.

Les liaisons de catalogue d’espace de travail sont respectées dans toutes les zones de la plateforme. Par exemple, si vous interrogez le schéma d’informations, vous voyez uniquement les catalogues accessibles dans l’espace de travail où vous émettez la requête. La traçabilité des données et les interfaces utilisateur de recherche affichent également uniquement les catalogues affectés à l’espace de travail (que ce soit à l’aide de liaisons ou par défaut).

Lier un catalogue à un ou plusieurs espaces de travail

Pour affecter un catalogue à des espaces de travail spécifiques, vous pouvez utiliser Catalog Explorer ou l’API REST Unity Catalog.

Autorisations requises : administrateur de metastore ou propriétaire des objets partage.

Remarque

Les administrateurs de metastore peuvent voir tous les catalogues d’un metastore à l’aide de Catalog Explorer, et les propriétaires de catalogues peuvent voir tous les catalogues qu’ils possèdent dans un metastore, que le catalogue soit ou non affecté à l’espace de travail actuel. Les catalogues qui ne sont pas affectés à l’espace de travail apparaissent grisés, et aucun objet enfant n’est visible ou interrogeable.

Explorateur de catalogues

  1. Connectez-vous à un espace de travail lié au metastore.

  2. Cliquez sur Icône CatalogueCatalogue.

  3. Dans le volet Catalogue, à gauche, cliquez sur le nom du catalogue.

    Le volet principal de Catalog Explorer est défini par défaut sur la liste Catalogs. Vous pouvez également sélectionner le catalogue.

  4. Sous l’onglet Espaces de travail , désactivez la case à cocher Tous les espaces de travail ont accès .

    Si votre catalogue est déjà lié à un ou plusieurs espaces de travail, cette case à cocher est déjà désactivée.

  5. Cliquez sur Affecter à des espaces de travail, puis entrez ou recherchez les espaces de travail que vous souhaitez attribuer.

  6. (Facultatif) Spécifiez un accès en lecture seule à l’espace de travail.

    Dans le menu Gérer le niveau d’accès, sélectionnez Changer l’accès en lecture seule.

    Vous pouvez annuler cette sélection à tout moment en modifiant le catalogue et en sélectionnant Modifier l’accès en lecture et en écriture.

Pour révoquer l’accès, accédez à l’onglet Espaces de travail, sélectionnez l’espace de travail, puis cliquez sur Révoquer.

API

Il existe deux API et deux étapes requises pour affecter un catalogue à un espace de travail. Dans les exemples suivants, remplacez par <workspace-url> le nom instance de votre espace de travail. Pour savoir comment obtenir le nom de l’instance et l’ID de l’espace de travail, consultez Obtenir des identificateurs pour les objets de l’espace de travail. Pour en savoir plus sur l’obtention de jetons d’accès, consultez Authentification pour l’automatisation Azure Databricks : vue d’ensemble.

  1. Utilisez catalogsl’API pour définir le catalogue de isolation modeà ISOLATED:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/catalogs/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATED"
     }'
    

    La valeur par défaut isolation mode concerne OPEN tous les espaces de travail attachés au metastore.

  2. Utilisez l’API bindings de mise à jour pour affecter les espaces de travail au catalogue :

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...],
      "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...]
    }'
    

    Utilisez les propriétés "add" et "remove" pour ajouter ou supprimer des liaisons d’espace de travail. <binding-type> peut avoir la valeur “BINDING_TYPE_READ_WRITE” (par défaut) ou “BINDING_TYPE_READ_ONLY”.

Pour répertorier toutes les affectations d’espace de travail pour un catalogue, utilisez l’API bindings de liste :

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
   -H 'Authorization: Bearer <my-token> \

Dissocier un catalogue d’un espace de travail

Les instructions pour révoquer l’accès à un espace de travail à un catalogue à l’aide de Catalog Explorer ou de l’API bindings sont fournies dans Lier un catalogue à un ou plusieurs espaces de travail.

Important

Si votre espace de travail a été activé automatiquement pour le catalogue Unity et que vous disposez automatiquement d’un catalogue d’espaces de travail, les administrateurs de l’espace de travail possèdent ce catalogue et disposent de toutes les autorisations sur ce catalogue dans l’espace de travail uniquement. Si vous dissociez ce catalogue ou le liez à d’autres catalogues, vous devez accorder manuellement les autorisations requises aux membres du groupe d’administrateurs d’espace de travail en tant qu’utilisateurs individuels ou à l’aide de groupes au niveau du compte, car le groupe d’administrateurs d’espace de travail est un groupe local d’espace de travail. Pour plus d’informations sur les groupes de comptes et les groupes locaux à l’espace de travail, consultez la section Différence entre les groupes de comptes et les groupes locaux d’espace de travail.

Ajouter des schémas à votre catalogue

Pour savoir comment ajouter des schémas (bases de données) à votre catalogue, consultez l’article Créer et gérer des schémas (bases de données).

Consulter les détails du catalogue

Pour consulter les informations sur un catalogue, vous pouvez utiliser Catalog Explorer ou une commande SQL.

Catalog Explorer

  1. Connectez-vous à un espace de travail lié au metastore.

  2. Cliquez sur Icône CatalogueCatalogue.

  3. Dans le volet Catalogue, recherchez le catalogue et cliquez sur son nom.

    Certains détails sont répertoriés en haut de la page. D’autres peuvent être affichés sous les ongletsSchémas, Détails, Autorisations et Espaces de travail.

SQL

Exécutez la commande SQL suivante dans un notebook ou dans l’éditeur Databricks SQL. Les éléments entre crochets sont optionnels. Remplacez l’espace réservé <catalog-name>.

Pour plus de détails, consultez DÉCRIRE LE CATALOGUE.

DESCRIBE CATALOG <catalog-name>;

Utilisez CATALOG EXTENDED pour obtenir tous les détails.

Supprimer un catalogue

Pour supprimer un catalogue, vous pouvez utiliser Catalog Explorer ou une commande SQL. Pour supprimer un catalogue, vous devez en être le propriétaire.

Explorateur de catalogues

Vous devez supprimer tous les schémas du catalogue, sauf information_schema, avant de pouvoir supprimer un catalogue. Ceci inclut le schéma default créé automatiquement.

  1. Connectez-vous à un espace de travail lié au metastore.
  2. Cliquez sur Icône CatalogueCatalogue.
  3. Dans le volet Catalogue, à gauche, cliquez sur le catalogue à supprimer.
  4. Dans le volet des détails, cliquez sur le menu à trois points à gauche du bouton Créer une base de données, puis sélectionnez Supprimer.
  5. Dans la boîte de dialogue Supprimer le catalogue, cliquez sur Supprimer.

SQL

Exécutez la commande SQL suivante dans un notebook ou dans l’éditeur Databricks SQL. Les éléments entre crochets sont optionnels. Remplacez l’espace réservé <catalog-name>.

Pour obtenir les descriptions des paramètres, consultez DROP CATALOG.

Si vous utilisez DROP CATALOG sans l’option CASCADE, vous devez supprimer tous les schémas du catalogue, sauf information_schema, avant de pouvoir supprimer le catalogue. Ceci inclut le schéma default créé automatiquement.

DROP CATALOG [ IF EXISTS ] <catalog-name> [ RESTRICT | CASCADE ]

Par exemple, pour supprimer un catalogue nommé vaccine et ses schémas :

DROP CATALOG vaccine CASCADE

Gérer le catalogue par défaut

Un catalogue par défaut est configuré dans chaque espace de travail dans lequel Unity Catalog est activé. Le catalogue par défaut vous permet d’effectuer des opérations de données sans spécifier de catalogue. Si vous omettez le nom du catalogue de premier niveau quand vous effectuez des opérations de données, le catalogue par défaut est utilisé.

Un administrateur d’espace de travail peut afficher ou changer le catalogue par défaut à l’aide de l’interface utilisateur des paramètres d’administration. Vous pouvez également définir le catalogue par défaut d’un cluster à l’aide d’une configuration Spark.

Les commandes qui ne spécifient pas le catalogue (par exemple, GRANT CREATE TABLE ON SCHEMA myschema TO mygroup) sont évaluées pour le catalogue dans l’ordre suivant :

  1. Le catalogue est-il défini pour la session à l’aide d’une instruction USE CATALOG ou d’un paramètre JDBC ?
  2. La configuration Spark spark.databricks.sql.initial.catalog.namespace est-elle définie sur le cluster ?
  3. Existe-t-il un catalogue par défaut d’espace de travail défini pour le cluster ?

Configuration du catalogue par défaut quand Unity Catalog est activé

Le catalogue par défaut initialement configuré dans votre espace de travail dépend de la façon dont votre espace de travail a été activé pour Unity Catalog :

  • Pour certains espaces de travail activés automatiquement pour le catalogue Unity, le catalogue d’espaces de travail a été défini comme catalogue par défaut. Consultez Activation automatique de Unity Catalog.
  • Pour tous les autres espaces de travail, le catalogue hive_metastore a été défini comme catalogue par défaut.

Si vous passez du metastore Hive à Unity Catalog au sein d’un espace de travail existant, il est généralement judicieux d’utiliser hive_metastore comme catalogue par défaut pour éviter d’impacter le code existant qui fait référence au metastore Hive.

Modifier le catalogue par défaut

Un administrateur d’espace de travail peut modifier le catalogue par défaut pour l’espace de travail. Toute personne autorisée à créer ou à modifier un cluster peut définir un autre catalogue par défaut pour le cluster.

Avertissement

La modification du catalogue par défaut peut interrompre les opérations de données existantes qui en dépendent.

Pour configurer un autre catalogue par défaut pour un espace de travail :

  1. Connectez-vous à votre espace de travail en tant qu’administrateur d’espace de travail.
  2. Cliquez sur votre nom d’utilisateur dans la barre supérieure de l’espace de travail, puis sélectionnez Paramètres dans la liste déroulante.
  3. Cliquez sur l’onglet Avancé.
  4. Dans la ligne Catalogue par défaut de l’espace de travail, entrez le nom du catalogue, puis cliquez sur Enregistrer.

Redémarrez vos entrepôts et clusters SQL pour que la modification apportée prenne effet. Tous les entrepôts et clusters SQL, après création ou redémarrage, utilisent ce catalogue comme espace de travail par défaut.

Vous pouvez également remplacer le catalogue par défaut d’un cluster spécifique en définissant la configuration Spark suivante sur le cluster. Cette approche n’est pas disponible pour les entrepôts SQL :

spark.databricks.sql.initial.catalog.name

Pour obtenir des instructions, consultez Configuration de Spark.

Consulter le catalogue par défaut actuel

Pour obtenir le catalogue par défaut actuel pour votre espace de travail, vous pouvez utiliser une instruction SQL dans un notebook ou une requête de l’éditeur SQL. Un administrateur d’espace de travail peut obtenir le catalogue par défaut à l’aide de l’interface utilisateur des paramètres d’administration.

Paramètres d’administration

  1. Connectez-vous à votre espace de travail en tant qu’administrateur d’espace de travail.
  2. Cliquez sur votre nom d’utilisateur dans la barre supérieure de l’espace de travail, puis sélectionnez Paramètres dans la liste déroulante.
  3. Cliquez sur l’onglet Avancé.
  4. Dans la ligne Catalogue par défaut de l’espace de travail, consultez le nom du catalogue.

Sql

Exécutez la commande suivante dans un notebook ou une requête de l’éditeur SQL qui s’exécute sur un entrepôt SQL ou un cluster conforme à Unity Catalog. Le catalogue par défaut de l’espace de travail est retourné si aucune instruction USE CATALOG ou aucun paramètre JDBC n’a été défini sur la session, et si aucune configuration spark.databricks.sql.initial.catalog.namespace n’est définie pour le cluster.

SELECT current_catalog();