Aller au contenu principal

Exécutez des queries fédérées sur un autre workspace Databricks

Cet article explique comment configurer la Lakehouse Federation pour exécuter des queries fédérées sur les données Databricks dans un autre Workspace Databricks. Pour en savoir plus sur la Lakehouse Federation, consultez Connecter à des bases de données et catalogues externes.

important

Databricks-to-Databricks Lakehouse Federation est un bon outil pour exécuter des querys sur des données gérées par le métastore Hive ou AWS Glue d’un autre workspace Databricks. Pour la plupart des autres scénarios, d’autres workflows Databricks sont plus efficaces :

  • Si les Workspaces Databricks partagent le même metastore Unity Catalog, vous pouvez gérer les querys inter-Workspace à l’aide des querys Unity Catalog standard et des outils de gouvernance des données.
  • Si vous souhaitez un accès en lecture seule aux données d'un Workspace Databricks attaché à un autre metastore Unity Catalog, que ce soit dans votre compte Databricks ou non, OpenSharing est un meilleur choix.

Il n'est pas nécessaire de mettre en place la Lakehouse Federation dans l'un ou l'autre de ces scénarios.

Pour vous connecter à un catalogue Databricks dans un autre Workspace à l'aide de la Lakehouse Federation, vous devez créer les éléments suivants dans votre metastore Databricks Unity Catalog :

  • Un cluster ou un SQL Warehouse dans un Workspace Databricks.
  • Une *connexion* au cluster ou au SQL Warehouse.
  • Un catalogue étranger dans votre métastore Unity Catalog qui reflète l’autre catalogue Databricks accessible depuis le cluster ou le SQL Warehouse, afin que vous puissiez utiliser la syntaxe de query Unity Catalog et les outils de gouvernance des données pour gérer l’accès des utilisateurs Databricks aux données.

Avant de commencer

Exigences du Workspace :

  • Workspace activé pour Unity Catalog. Les Workspace créés après le 8 novembre 2023 sont automatiquement activés pour Unity Catalog, y compris le provisionnement automatique du métastore. Vous n'avez pas besoin de créer manuellement un métastore, à moins que votre workspace ne soit antérieur à l'activation automatique et n'ait pas été activé pour Unity Catalog. Voir Se familiariser avec Unity Catalog.

Compute requis :

  • Connectivité réseau de votre ressource de compute vers les systèmes de bases de données cibles. Consultez les recommandations de mise en réseau pour Lakehouse Federation.
  • Le compute Databricks doit utiliser Databricks Runtime 13.3 LTS ou une version ultérieure et le mode d’accès **Standard** ou **Dédié**.
  • Les SQL warehouses 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 administrateur de métastore ou un utilisateur disposant du privilège CREATE CONNECTION sur le métastore Unity Catalog attaché à l'espace de travail. Dans les espaces de travail qui ont été activés automatiquement pour Unity Catalog, les administrateurs d'espace de travail disposent du privilège CREATE CONNECTION par default.
  • Pour créer un catalogue externe, 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 workspaces activés automatiquement pour Unity Catalog, les administrateurs du workspace disposent du privilège CREATE CATALOG par default.

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 ou d'un SQL Warehouse actif dans le Workspace Databricks que vous utilisez pour configurer la connexion.

Créer une connexion

Une connexion spécifie un chemin d'accès et des identifiants pour accéder à un système de base de données externe. Pour créer une connexion, vous pouvez utiliser Catalog Explorer ou la commande SQL CREATE CONNECTION dans un Notebook Databricks ou l'éditeur de query Databricks SQL.

remarque

Vous pouvez également utiliser l'API REST Databricks ou la CLI Databricks pour créer une connexion. Voir POST /api/2.1/unity-catalog/connections et les commandes Unity Catalog.

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

  1. Dans votre workspace Databricks, cliquez sur Icône de données. Catalogue .

  2. En haut du volet **Catalogue**, cliquez sur Icône Ajouter ou plus l'icône **Ajouter** et sélectionnez **Créer une connexion** dans le menu.

  3. Sur la page **Principes de base de la connexion** de l’assistant **Configurer la connexion**, saisissez un **Nom de connexion** convivial.

  4. Sélectionnez un type de connexion Databricks .

  5. Ajouter un commentaire (facultatif).

  6. Cliquez sur Suivant .

  7. Sur la page Authentification , saisissez les propriétés de connexion suivantes pour l'autre instance Databricks :

    • **Hôte** : Nom d'instance du workspace. Pour savoir comment obtenir le nom de l'instance de Workspace, consultez Obtenir les identificateurs d'objets de Workspace.
    • Jeton d'accès personnel : Un jeton d'accès personnel Databricks qui permet d'accéder au workspace cible. Pour savoir comment obtenir un jeton, consultez S'authentifier avec les jetons d'accès personnels Databricks (hérité). Pour les connexions, Databricks recommande d'utiliser un jeton d'accès personnel pour un Service Principal.
    • Chemin HTTP : Le chemin HTTP de votre SQL Warehouse. Pour obtenir le chemin, allez dans SQL > SQL Warehouses dans la barre latérale, sélectionnez le SQL Warehouse, allez à la tab Détails de connexion , et copiez la valeur du chemin HTTP .
  8. Cliquez sur Créer une connexion .

  9. Sur la page Principes fondamentaux du catalogue , saisissez le nom du catalogue dans l'autre workspace Databricks qui peut être mappé à un objet de catalogue dans ce métastore.

  10. (Facultatif) Cliquez sur **Tester la connexion** pour confirmer que cela fonctionne.

  11. Cliquez sur **Créer un catalogue**.

  12. Sur la page Accès , sélectionnez les workspaces dans lesquels les utilisateurs peuvent accéder au catalogue que vous avez créé. Vous pouvez sélectionner Tous les workspaces ont accès , ou cliquer sur Attribuer aux workspaces , sélectionner les workspaces, puis cliquer sur Attribuer .

  13. Modifiez le propriétaire qui pourra gérer l'accès à tous les objets du catalogue. start à taper un principal dans la zone de texte, puis cliquez sur le principal dans les résultats renvoyés.

  14. Accordez les **Privilèges** sur le catalogue. Cliquez sur Accorder :

    1. Spécifiez les **principals** qui auront accès aux objets dans le catalogue. start à taper un principal dans la zone de texte, puis cliquez sur le principal dans les résultats renvoyés.

    2. Sélectionnez les **Préréglages de privilèges** à accorder à chaque principal. Tous les utilisateurs du compte se voient accorder BROWSE par default.

      • Sélectionnez Data Reader dans le menu déroulant pour accorder read privilèges sur les objets du catalogue.
      • Sélectionnez **Data Editor** dans le menu déroulant pour accorder read les modify privilèges et 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 , spécifiez les paires clé-valeur de balises. Pour plus d'informations, consultez Appliquer des balises aux objets sécurisables d'Unity Catalog.

  17. Ajouter un commentaire (facultatif).

  18. Cliquez sur Enregistrer .

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 externe est incluse et vous pouvez ignorer cette étape.

Un catalogue étranger met en miroir un catalogue dans le Workspace Databricks externe afin que vous puissiez query et gérer l'accès aux données de ce catalogue Databricks externe comme s'il s'agissait d'un catalogue dans votre propre Workspace. Pour créer un catalogue étranger, vous utilisez une connexion au Workspace Databricks externe qui a déjà été définie.

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

Autorisations requises : autorisation CREATE CATALOG sur le metastore et soit la propriété de la connexion, soit le privilège CREATE FOREIGN CATALOG sur la connexion.

  1. Dans votre Workspace Databricks, cliquez sur Icône de données. **Catalogue** pour ouvrir l’Explorateur de catalogues.

  2. En haut du volet Catalogue , cliquez sur l'icône Icône Ajouter ou plus Ajouter et sélectionnez Ajouter un catalogue dans le menu.

    Autrement, depuis la page Quick access , cliquez sur le bouton Catalogs , puis cliquez sur le bouton Create catalog .

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

Pushdowns pris en charge

Le tableau suivant répertorie les opérations de pushdown prises en charge pour Databricks-to-Databricks, ainsi que le compute requis pour chacune.

Pushdown

Compute pris en charge

Agrégats

Pris en charge All compute

Opérateurs arithmétiques
(tels que +, -, *, %, /) — non pris en charge si le mode ANSI est désactivé

Pris en charge All compute

Opérateurs bit à bit
(&, |, ^ et ~)

Pris en charge All compute

Opérateurs booléens
(tels que =, <=>, <, <=, >, >=)

Pris en charge All compute

Contient, Commence par, Se termine par

Pris en charge All compute

Parties de date, d'heure et de Timestamp
(EXTRAIRE JOUR, MOIS, ANNÉE, TRIMESTRE, SEMAINE, HEURE, MINUTE, SECONDE ; expressions de filtre uniquement)

Pris en charge All compute

Filtres

Pris en charge All compute

Limite

Pris en charge All compute

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, et SQL Warehouse

Fonction COALESCE
(prise en charge partielle, expressions de filtre uniquement)

Pris en charge Databricks Runtime 15,4 et versions ultérieures, et SQL Warehouse

Décalage

Pris en charge All compute

Projections

Pris en charge All compute

Tri, lorsqu'il est utilisé avec une limite

Pris en charge All compute

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 SQL Warehouse

Exemples de table
(TABLESAMPLE BERNOULLI ou échantillonnage par default, sans remplacement)

Pris en charge All compute

Jointures

Non pris en charge Non pris en charge

Fonctions de fenêtre

Non pris en charge Non pris en charge

Pushdown

Compute pris en charge

Agrégats

Pris en charge All compute

Opérateurs arithmétiques
(tels que +, -, *, %, /) — non pris en charge si le mode ANSI est désactivé

Pris en charge All compute

Opérateurs bit à bit
(&, |, ^ et ~)

Pris en charge All compute

Opérateurs booléens
(tels que =, <=>, <, <=, >, >=)

Pris en charge All compute

Contient, Commence par, Se termine par

Pris en charge All compute

Parties de date, d'heure et de Timestamp
(EXTRAIRE JOUR, MOIS, ANNÉE, TRIMESTRE, SEMAINE, HEURE, MINUTE, SECONDE ; expressions de filtre uniquement)

Pris en charge All compute

Filtres

Pris en charge All compute

Limite

Pris en charge All compute

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, et SQL Warehouse

Fonction COALESCE
(prise en charge partielle, expressions de filtre uniquement)

Pris en charge Databricks Runtime 15,4 et versions ultérieures, et SQL Warehouse

Décalage

Pris en charge All compute

Projections

Pris en charge All compute

Tri, lorsqu'il est utilisé avec une limite

Pris en charge All compute

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 SQL Warehouse

Exemples de table
(TABLESAMPLE BERNOULLI ou échantillonnage par default, sans remplacement)

Pris en charge All compute

Jointures

Non pris en charge Non pris en charge

Fonctions de fenêtre

Non pris en charge Non pris en charge

Mappages des types de données

Les types de données correspondent généralement un à un lorsque vous utilisez la fédération Databricks-to-Databricks. Cependant, les types de données suivants correspondent à StringType:

De

à la

ArrayType

StringType

IntervalType

StringType

MapType

StringType

StructType

StringType

De

à la

ArrayType

StringType

IntervalType

StringType

MapType

StringType

StructType

StringType