Exécuter des requêtes fédérées sur un autre espace de travail Databricks

Cet article décrit comment configurer Lakehouse Federation pour exécuter des requêtes fédérées sur les données Databricks dans un autre espace de travail Databricks. Pour en savoir plus sur Lakehouse Federation, consultez Se connecter aux bases de données et catalogues externes.

Important

Databricks-to-Databricks Lakehouse Federation est un outil efficace pour exécuter des requêtes sur des données gérées par le metastore Hive ou AWS Glue d'un autre espace de travail Databricks. Pour la plupart des autres scénarios, d’autres workflows Azure Databricks sont plus efficaces :

  • Si les espaces de travail Azure Databricks partagent le même métastore Unity Catalog, vous pouvez gérer les requêtes entre espaces de travail à l’aide de requêtes Unity Catalog standard et d’outils de gouvernance des données.
  • Si vous souhaitez accéder en lecture seule aux données d’un espace de travail Databricks attaché à un autre metastore Du catalogue Unity, que ce soit dans votre compte Azure Databricks ou non, OpenSharing est un meilleur choix.

Il n’est pas nécessaire de créer la Lakehouse Federation dans aucun de ces scénarios.

Pour vous connecter à un catalogue Databricks dans un autre espace de travail à l’aide de Lakehouse Federation, vous devez créer les éléments suivants dans votre métastore Azure Databricks Unity Catalog :

  • Un cluster ou un entrepôt SQL dans un espace de travail Databricks.
  • Une connexion au cluster ou à l'entrepôt de données SQL.
  • Un catalogue étranger dans votre métastore Unity Catalog qui reflète l'autre catalogue Databricks accessible à partir du cluster ou de l'entrepôt SQL afin que vous puissiez utiliser la syntaxe de requête Unity Catalog et les outils de gouvernance des données pour gérer l'accès des utilisateurs Azure Databricks aux données.

Avant de commencer

Conditions requises pour l’espace de travail :

  • Espace de travail activé pour Unity Catalog. Les espaces de travail créés après le 9 novembre 2023 sont activés automatiquement pour unity Catalog, y compris le provisionnement automatique du metastore. Vous n’avez pas besoin de créer manuellement un metastore, sauf si votre espace de travail précède l’activation automatique et n’a pas été activé pour le catalogue Unity. Consultez Bien démarrer avec Unity Catalog.

Voici les exigences de calcul à respecter :

  • Connectivité réseau de votre ressource de calcul aux systèmes de base de données cibles. Consultez l’article Recommandations de mise en réseau pour Lakehouse Federation.
  • Le calcul Azure Databricks doit utiliser Databricks Runtime 13.3 LTS ou ultérieur et le mode d’accès Standard ou Dédié .
  • Les entrepôts SQL doivent être pro ou serverless et doivent utiliser la version 2023.40 ou ultérieure.

Autorisations requises :

  • Pour créer une connexion, vous devez être un administrateur de metastore ou un utilisateur disposant du privilège CREATE CONNECTION sur le metastore Unity Catalog attaché à l’espace de travail. Dans les espaces de travail activés automatiquement pour le catalogue Unity, les administrateurs de l’espace de travail ont le CREATE CONNECTION privilège par défaut.
  • Pour créer un catalogue étranger, vous devez disposer de l’autorisation CREATE CATALOG sur le metastore et être le propriétaire de la connexion ou disposer du privilège CREATE FOREIGN CATALOG sur la connexion. Dans les espaces de travail activés automatiquement pour le catalogue Unity, les administrateurs de l’espace de travail ont le CREATE CATALOG privilège par défaut.

Des exigences d’autorisation supplémentaires sont spécifiées dans chaque section basée sur les tâches qui suit.

Vous devez également disposer d’un cluster actif ou d’un entrepôt SQL dans l’espace de travail Azure Databricks que vous utilisez pour configurer la connexion.

Créer une connexion

Une connexion spécifie un chemin d’accès et des informations d’identification pour accéder à un système de base de données externe. Pour créer une connexion, vous pouvez utiliser l’Explorateur de catalogues ou la commande SQL CREATE CONNECTION dans un notebook Azure Databricks ou l’éditeur de requête SQL Databricks.

Remarque

Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer une connexion. Consultez POST /api/2.1/unity-catalog/connections et Commandes Unity Catalog.

Autorisations requises : administrateur de metastore ou utilisateur disposant du privilège CREATE CONNECTION.

Explorateur de catalogues

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône Données.Catalogue.
  2. En haut du volet Catalogue, cliquez sur l’icône Ajouter ou ajouter, puis sélectionnez Créer une connexion dans le menu.
  3. Dans la page de Informations de base de connexion de l’assistant Configurer la connexion, entrez un Nom de connexion convivial.
  4. Sélectionnez un type de connexionDatabricks.
  5. (Facultatif) Ajoutez un commentaire.
  6. Cliquez sur Suivant.
  7. Dans la page Authentification , entrez les propriétés de connexion suivantes pour l’autre instance Databricks :
    • Hôte : nom de l'instance d'espace de travail. Pour savoir comment obtenir le nom de l'instance d'espace de travail, consultez Obtenir les identifiants des objets de l'espace de travail.
    • Jeton d'accès personnel : un jeton d'accès personnel Azure Databricks qui permet d'accéder à l'espace de travail cible. Pour savoir comment obtenir un jeton, consultez Authentification avec des jetons d’accès personnels Azure Databricks (hérités). Pour les connexions, Databricks recommande d'utiliser un jeton d'accès personnel pour un principal de service.
    • Chemin HTTP : Le chemin HTTP de votre entrepôt SQL. Pour obtenir le chemin, allez à > dans la barre latérale, sélectionnez le SQL warehouse, allez à l'onglet Détails de la connexion et copiez la valeur du chemin HTTP.
  8. Cliquez sur Create connection (Créer la connexion).
  9. Dans la page Principes de base du catalogue, entrez le nom du catalogue dans l’autre espace de travail Azure Databricks qui peut être mappé à un objet catalogue dans ce metastore.
  10. (Facultatif) Cliquez sur Tester la connexion pour vérifier qu’elle fonctionne.
  11. Cliquez sur Créer un catalogue.
  12. Dans la page Access, sélectionnez les espaces de travail dans lesquels les utilisateurs peuvent accéder au catalogue que vous avez créé. Vous pouvez sélectionner Tous les espaces de travail ont accès, ou cliquer sur Affecter aux espaces de travail, sélectionner les espaces de travail, puis cliquer sur Attribuer.
  13. Changez le propriétaire qui pourra gérer l'accès à tous les objets du catalogue. Commencez à taper un responsable dans la zone de texte, puis cliquez sur le responsable dans les résultats affichés.
  14. Accordez des privilèges sur le catalogue. Cliquez sur Accorder :
    1. Spécifiez les Principaux qui auront accès aux objets du catalogue. Commencez à taper un responsable dans la zone de texte, puis cliquez sur le responsable dans les résultats affichés.
    2. Sélectionnez les Préréglages de privilège à accorder pour chaque principal. Tous les utilisateurs d'un compte reçoivent BROWSE par défaut.
      • Sélectionnez Lecteur de données dans le menu déroulant pour accorder des privilèges read aux les objets du catalogue.
      • Sélectionnez Éditeur de données dans le menu déroulant pour accorder read et modify privilèges sur les objets du catalogue.
      • Sélectionnez manuellement les privilèges à accorder.
    3. Cliquez sur Accorder.
  15. Cliquez sur Suivant.
  16. Sur la page Métadonnées, indiquez des paires clé-valeur pour les balises. Pour plus d’informations, consultez Appliquer des étiquettes aux objets sécurisables du catalogue Unity.
  17. (Facultatif) Ajoutez un commentaire.
  18. Cliquez sur Enregistrer.

SQL

Exécutez la commande suivante dans un bloc-notes ou dans l'éditeur de requêtes SQL Databricks, en remplaçant ce qui suit :

  • <connection-name>: nom convivial pour la connexion que vous créez.
  • <workspace-instance>: Instance d’espace de travail cible. Pour savoir comment obtenir le nom de l'instance d'espace de travail, consultez Obtenir les identifiants des objets de l'espace de travail.
  • <sql-warehouse-path>: Le chemin HTTP de votre entrepôt SQL. Pour obtenir le chemin, allez à > dans la barre latérale, sélectionnez le SQL warehouse, allez à l'onglet Détails de la connexion et copiez la valeur du chemin HTTP.
  • <personal-access-token>: Un jeton d’accès personnel Azure Databricks qui permet d’accéder à l’espace de travail cible. Pour savoir comment obtenir un jeton, consultez Authentification avec des jetons d’accès personnels Azure Databricks (hérités). Pour les connexions, Databricks recommande d’utiliser le jeton d’accès personnel d’un principal de service.
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

Nous vous recommandons d’utiliser des secrets Azure Databricks au lieu de chaînes de texte en clair pour les valeurs sensibles telles que les informations d’identification. Par exemple :

CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken secret ('<secret-scope>','<secret-key-password>')
)

Pour obtenir des informations sur la configuration des secrets, consultez l’article Gestion des secrets.

Créer un catalogue étranger

Remarque

Si vous utilisez l’interface utilisateur pour créer une connexion à la source de données, la création du catalogue étranger est incluse et vous pouvez ignorer cette étape.

Un catalogue étranger reflète un catalogue dans l'espace de travail Databricks externe afin que vous puissiez interroger et gérer l'accès aux données dans ce catalogue Databricks externe comme s'il s'agissait d'un catalogue dans votre propre espace de travail. Pour créer un catalogue étranger, vous utilisez une connexion à l'espace de travail Databricks externe qui a déjà été défini.

Pour créer un catalogue étranger, vous pouvez utiliser l’Explorateur de catalogues ou la commande SQL CREATE FOREIGN CATALOG dans un notebook Azure Databricks ou l’éditeur de requête SQL Databricks. Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer un catalogue. Consultez POST /api/2.1/unity-catalog/catalogs et les commandes du catalogue Unity.

Autorisations requises : autorisation CREATE CATALOG sur le metastore, et être propriétaire de la connexion ou disposer du privilège CREATE FOREIGN CATALOG sur la connexion.

Explorateur de catalogues

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône Données.Catalogue pour ouvrir l’Explorateur de catalogues.

  2. En haut du volet Catalogue, cliquez sur l’icône Ajouter ou icône PlusAjouter, puis sélectionnez Ajouter un catalogue dans le menu.

    Sinon, dans la page Accès rapide, cliquez sur le bouton Catalogues, puis sur le bouton Créer un catalogue.

  3. Suivez les instructions pour créer des catalogues étrangers dans Créer des catalogues.

SQL

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 étranger que vous créez.
  • <connection-name> : objet Connection qui spécifie la source de données, le chemin et les informations d’identification d’accès.
  • <external-catalog-name> : nom du catalogue dans l’espace de travail Databricks externe que vous mettez en miroir.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');

Pushdowns pris en charge

Le tableau suivant répertorie les opérations de transmission descendante prises en charge pour les connexions Databricks-à-Databricks, ainsi que les ressources de calcul requises pour chacune d’elles.

Pushdown Ressources de calcul prises en charge
Agrégats Pris en charge Toute la capacité de calcul
Opérateurs arithmétiques
(par exemple +, -, *, %, /) — non pris en charge si le mode ANSI est désactivé
Pris en charge Toute la capacité de calcul
Opérateurs de bits
(&, |, ^ et ~)
Pris en charge Toute la capacité de calcul
Opérateurs booléens
(par exemple =, <=, >= <<, >= , >=)
Pris en charge Toute la capacité de calcul
Contient, Commence par, Se termine par Pris en charge Toute la capacité de calcul
Éléments de date, d’heure et d’horodatage
(EXTRACT DAY, MONTH, YEAR, QUARTER, WEEK, HOUR, MINUTE, SECOND ; expressions de filtre uniquement)
Pris en charge Toute la capacité de calcul
Filtres Pris en charge Toute la capacité de calcul
Limite Pris en charge Toute la capacité de calcul
Fonctions mathématiques
(SIN, COS, ABS, FLOOR ; expressions de filtre uniquement ; ABS n’est pas pris en charge si le mode ANSI est désactivé)
Pris en charge Databricks Runtime 15.4 et versions ultérieures, ainsi que les entrepôts SQL
Fonction COALESCE
(prise en charge partielle, expressions de filtre uniquement)
Pris en charge Databricks Runtime 15.4 et versions ultérieures, entrepôts SQL
Offset Pris en charge Toute la capacité de calcul
Prévisions Pris en charge Toute la capacité de calcul
Tri, lorsqu'il est utilisé avec une limite Pris en charge Toute la capacité de calcul
Fonctions de chaîne
(UPPER, LOWER, CONCAT, TRIM, CHAR_LENGTH ; expressions de filtre uniquement)
Pris en charge Databricks Runtime 15.4 et versions ultérieures, et les entrepôts de données SQL
Exemples de tableaux
(TABLESAMPLE BERNOULLI ou échantillonnage par défaut, sans remplacement)
Pris en charge Toute la capacité de calcul
Jointures Non pris en charge Non pris en charge
Fonctions de fenêtre Non pris en charge Non pris en charge

Mappages de types de données

Lorsque vous utilisez la fédération Databricks-to-Databricks, les types de données correspondent généralement de manière une-à-une. Toutefois, les types de données suivants sont mappés à StringType:

De À
ArrayType StringType
IntervalType StringType
MapType StringType
StructType StringType