Share via


Exécuter des requêtes fédérées sur Google BigQuery

Important

Cette fonctionnalité est disponible en préversion publique.

Cet article explique comment configurer Lakehouse Federation pour exécuter des requêtes fédérées sur des données BigQuery non gérées par Azure Databricks. Pour en savoir plus sur Lakehouse Federation, consultez l’article Qu’est-ce que Lakehouse Federation ?

Pour vous connecter à votre base de données BigQuery à l’aide de Lakehouse Federation, vous devez créer les éléments suivants dans votre metastore Unity Catalog d’Azure Databricks :

  • Une connexion à votre base de données BigQuery.
  • Un catalogue étranger qui reflète votre base de données BigQuery dans Unity Catalog afin que vous puissiez utiliser la syntaxe de requête et les outils de gouvernance des données Unity Catalog pour gérer l’accès utilisateur Azure Databricks à la base de données.

Avant de commencer

Conditions requises pour l’espace de travail :

  • Espace de travail activé pour Unity Catalog.

Voici les exigences de calcul à respecter :

  • Connectivité réseau de votre cluster Databricks Runtime ou de votre entrepôt SQL aux systèmes de base de données cibles. Consultez l’article Recommandations de mise en réseau pour Lakehouse Federation.
  • Les clusters Azure Databricks doivent utiliser Databricks Runtime 13.3 LTS (ou une version ultérieure) et le mode d’accès partagé ou mono-utilisateur.
  • Les entrepôts SQL doivent être Pro ou serverless.

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.
  • 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.

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

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.

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 CatalogueCatalogue.

  2. Dans le volet gauche, développez le menu Données externes, puis sélectionnez Connexions.

  3. Cliquez sur Create connection (Créer la connexion).

  4. Entrez un nom de connexion convivial.

  5. Sélectionnez un type de connexion pour BigQuery.

  6. Entrez les propriétés de connexion suivantes pour votre instance BigQuery.

    GoogleServiceAccountKeyJson: Un objet JSON brut utilisé pour spécifier le projet BigQuery et fournir une authentification. Vous pouvez générer cet objet JSON et le télécharger à partir de la page des détails du compte de service dans Google Cloud sous « CLÉS ». Le compte de service doit disposer d’autorisations appropriées accordées dans BigQuery, notamment BigQuery User et BigQuery Data Viewer. Voici un exemple.

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
      "client_email": "SERVICE_ACCOUNT_EMAIL",
      "client_id": "CLIENT_ID",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL",
      "universe_domain": "googleapis.com"
    }
    
  7. (Facultatif) Cliquez sur Tester la connexion pour confirmer la connectivité réseau. Cette action ne teste pas l’authentification.

  8. (Facultatif) Ajoutez un commentaire.

  9. Cliquez sur Créer.

SQL

Exécutez la commande suivante dans un notebook ou dans l’éditeur de requête SQL Databricks. Remplacez <GoogleServiceAccountKeyJson> par un objet JSON brut qui spécifie le projet BigQuery et fournit l’authentification. Vous pouvez générer cet objet JSON et le télécharger à partir de la page des détails du compte de service dans Google Cloud sous « CLÉS ». Le compte de service doit disposer d’autorisations appropriées accordées dans BigQuery, notamment BigQuery User et BigQuery Data Viewer. Pour obtenir un exemple d’objet JSON, consultez l’onglet Explorateur de catalogues sur cette page.

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);

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 bigquery
OPTIONS (
  GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)

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

Créer un catalogue étranger

Un catalogue étranger reflète une base de données dans un système de données externe afin que vous puissiez interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et Unity Catalog. Pour créer un catalogue étranger, utilisez une connexion déjà définie à la source de données.

Pour créer un catalogue étranger, vous pouvez utiliser l’Explorateur de catalogue, CREATE FOREIGN CATALOG dans un notebook Azure Databricks ou l’éditeur de requête SQL Databricks.

Autorisations requises : autorisation CREATE CATALOG sur le metastore et être propriétaire 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 CatalogueCatalogue.
  2. Cliquez sur le bouton Créer un catalogue.
  3. Dans la boîte de dialogue Créer un catalogue, entrez le nom du catalogue, puis sélectionnez le typeÉtranger.
  4. Sélectionnez la connexion qui fournit l’accès à la base de données que vous souhaitez refléter en tant que catalogue Unity Catalog.
  5. Cliquez sur Create (Créer).

Sql

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

  • <catalog-name> : nom du catalogue dans Azure Databricks.
  • <connection-name> : objet Connection qui spécifie la source de données, le chemin et les informations d’identification d’accès.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

Pushdowns pris en charge

Les pushdowns suivants sont pris en charge :

  • Filtres
  • Projections
  • Limite
  • Fonctions : partielles, uniquement pour les expressions de filtre. (Fonctions de chaîne, fonctions mathématiques, données, fonctions Time et Timestamp, et autres fonctions diverses, telles que Alias, Cast, SortOrder)
  • Agrégats
  • Tri, lorsque l’utilisation est limitée

Les pushdowns suivants ne sont pas pris en charge :

  • Jointures
  • Fonctions Windows

Mappages de types de données

Le tableau ci-dessous illustre le mappage de type de données BigQuery vers Spark.

Type BigQuery Type Spark
bignumeric, numérique DecimalType
int64 LongType
float64 DoubleType
groupe, géographie, intervalle, json, chaîne, struct VarcharType
octets BinaryType
bool BooleanType
Date DateType
dateheure, heure, timestamp TimestampType/TimestampNTZType

Quand vous lisez à partir de BigQuery, BigQuery Timestamp est mappé à Spark TimestampType si preferTimestampNTZ = false (valeur par défaut). BigQuery Timestamp est mappé à TimestampNTZType si preferTimestampNTZ = true.