Lakehouse pour Apache Iceberg assure l'interopérabilité avec BigQuery grâce à une fonctionnalité appelée fédération de catalogues BigQuery. Cette fonctionnalité vous permet d'exposer des tables gérées par BigQuery, par exemple des tables gérées par Iceberg, à des moteurs Open Source externes tels qu'Apache Spark et Trino.
Au lieu de créer un conteneur de catalogue Lakehouse dédié pour stocker les métadonnées, le point de terminaison du catalogue REST Apache Iceberg agit uniquement comme une passerelle proxy. Lorsque des moteurs externes se connectent à l'aide du préfixe d'entrepôt bq://, la passerelle achemine leurs requêtes de catalogue directement vers le catalogue interne de BigQuery.
Cela vous permet de créer et de gérer des tables directement dans BigQuery à l'aide du langage LDD ou des API BigQuery standards, tout en offrant aux moteurs Open Source externes un accès en lecture seule pour interroger ces tables via le point de terminaison du catalogue REST.
Fonctionnement de la fédération de catalogues BigQuery
La fédération de catalogues BigQuery vous permet d'exposer des tables BigQuery, telles que des tables gérées par Iceberg et des tables de metastore BigQuery, via le point de terminaison du catalogue REST Apache Iceberg du catalogue d'environnements d'exécution Lakehouse.
Le flux de fédération de catalogues BigQuery fonctionne comme suit :
- Créer une table dans le catalogue BigQuery : vous créez une table gérée par Iceberg dans BigQuery à l'aide d' instructions LDD. Cette table existe dans le catalogue BigQuery, est régie par des listes de contrôle des accès (LCA) BigQuery et fonctionne comme une ressource REST BigQuery.
- Fédérer dans l'entrepôt BigQuery à partir du
catalogue d'environnements d'exécution Lakehouse : à l'aide de l'API REST Apache Iceberg du
catalogue d'environnements d'exécution Lakehouse, vous fédérez
dans un entrepôt spécifié par le format de chemin d'entrepôt
bq://projects/PROJECT_ID(ou la version régionale,bq://projects/PROJECT_ID/locations/LOCATION). Cela vous permet d'accéder à la table BigQuery à partir de moteurs de calcul tels qu'Apache Spark via l'API Lakehouse pour Apache Iceberg. Dans cette configuration, vous bénéficiez d'une expérience en lecture seule à partir de Spark, mais d'une expérience en lecture/écriture à partir de BigQuery.
Remarques
Étant donné que la fédération de catalogues BigQuery ne crée pas de ressource de catalogue Lakehouse dédiée, d'autres concepts et configurations au niveau du catalogue, tels que la hiérarchie des ressources, les régions de bucket et de catalogue, ainsi que la structure de nommage P.C.N.T en quatre parties, ne s'appliquent pas à cette méthode. Dans l'API sous-jacente, cela correspond à la configuration
CATALOG_TYPE_BIGQUERY. Notez que la délégation d'accès au stockage (vente d'identifiants) n'est pas compatible avec les catalogues BigQuery fédérés.La fédération de catalogues BigQuery est distincte de Lakehouse multicloud. Alors que la fédération de catalogues BigQuery expose les tables Google Cloud à des moteurs Open Source externes, Lakehouse multicloud connecte Google Cloud à des catalogues externes distants, tels que Databricks Unity Catalog, pour interroger les données stockées chez d'autres fournisseurs cloud directement à partir de BigQuery et de moteurs Open Source sans migrer les données. Pour en savoir plus sur ce workflow, consultez À propos de Lakehouse multicloud.
Comparaison avec les tables gérées par le point de terminaison du catalogue REST Apache Iceberg
La fédération de catalogues BigQuery diffère des workflows dans lesquels le catalogue d'environnements d'exécution Lakehouse utilise le point de terminaison du catalogue REST Apache Iceberg de la manière suivante :
- Gestion des ressources et stockage du catalogue : les tables fédérées résident dans le catalogue BigQuery en tant que ressources REST BigQuery, et le catalogue d'environnements d'exécution Lakehouse agit comme une passerelle proxy. Lorsque le catalogue d'environnements d'exécution Lakehouse utilise le point de terminaison du catalogue REST Apache Iceberg, les tables sont stockées directement dans le catalogue en tant que ressources REST Lakehouse pour Apache Iceberg.
- Contrôle des accès : les tables fédérées utilisent les autorisations IAM et les listes de contrôle d'accès (LCA) BigQuery. Lorsque le catalogue d'environnements d'exécution Lakehouse utilise le point de terminaison du catalogue REST Apache Iceberg, les tables utilisent les LCA Lakehouse pour Apache Iceberg.
- Capacités de lecture et d'écriture du moteur : les tables fédérées offrent un accès en lecture/écriture via BigQuery, mais un accès en lecture seule à partir de moteurs externes tels que Spark. Lorsque le catalogue d'environnements d'exécution Lakehouse utilise le point de terminaison du catalogue REST Apache Iceberg, les tables sont compatibles avec les opérations de lecture/écriture à partir des API BigQuery et des moteurs externes tels que Spark.
Avant de commencer
-
Vérifiez que la facturation est activée pour votre Google Cloud projet.
-
Activez l'API BigLake.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.
Rôles requis
Pour obtenir les autorisations nécessaires pour utiliser la fédération de catalogues dans BigQuery, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Lire les ressources du catalogue et interroger les données de la table :
- Lecteur BigLake (
roles/biglake.viewer) sur le projet - Lecteur des objets Storage (
roles/storage.objectViewer) sur le bucket Cloud Storage
- Lecteur BigLake (
-
Effectuer des opérations de langage de manipulation de données (LMD) avec la fédération de catalogues BigQuery :
- Éditeur de données BigQuery (
roles/bigquery.dataEditor) sur le projet - Administrateur de l'espace de stockage (
roles/storage.admin) sur le bucket Cloud Storage. Si vous utilisez des moteurs de requête tels que Managed Service pour Apache Spark pour effectuer des opérations LMD, accordez ces rôles au compte de service que vous utilisez pour exécuter des tâches dans ce moteur.
- Éditeur de données BigQuery (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer la fédération de catalogues BigQuery
Pour activer la fédération de catalogues BigQuery, configurez votre client (tel qu'Apache Spark ou Trino) avec le
bq://projects/PROJECT_ID format d'entrepôt dans
le champ WAREHOUSE_PATH des exemples de configuration du client dans
Configurer l'application cliente.
Vous pouvez également choisir d'inclure un emplacement BigQuery pour
limiter les futures requêtes à un seul emplacement à l'aide du
bq://projects/PROJECT_ID/locations/LOCATION
format.
Étant donné que ces ressources sont gérées par BigQuery, vous devez disposer des autorisations requises applicables.
Créer des espaces de noms pour les tables fédérées
Une fois que vous avez configuré votre client pour la fédération de catalogues BigQuery, vous pouvez créer un espace de noms pour vos tables fédérées.
Spark
Pour utiliser la fédération de catalogues BigQuery, incluez les clauses LOCATION et DBPROPERTIES :
spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME LOCATION 'gs://BUCKET_NAME/NAMESPACE_NAME' WITH DBPROPERTIES ('gcp-region' = 'LOCATION');") spark.sql("USE NAMESPACE_NAME;")
Remplacez les éléments suivants :
NAMESPACE_NAME: nom de votre espace de noms.BUCKET_NAME: bucket Cloud Storage que vous utilisez avec votre catalogue.LOCATION: un emplacement BigQuery. La valeur par défaut est l'emplacement multirégionalUS.
Trino
Pour utiliser la fédération de catalogues BigQuery, incluez les propriétés LOCATION et gcp-region :
CREATE SCHEMA IF NOT EXISTS CATALOG_NAME.SCHEMA_NAME WITH ( LOCATION = 'gs://BUCKET_NAME/SCHEMA_NAME', "gcp-region" = 'LOCATION'); USE CATALOG_NAME.SCHEMA_NAME;
Remplacez les éléments suivants :
CATALOG_NAME: nom de votre catalogue Trino à l'aide du point de terminaison du catalogue REST Apache Iceberg.SCHEMA_NAME: nom de votre schéma.BUCKET_NAME: bucket Cloud Storage que vous utilisez avec votre catalogue.LOCATION: un emplacement BigQuery. La valeur par défaut est l'emplacement multirégionalUS.
Interroger des tables fédérées dans BigQuery
Les tables que vous créez dans un catalogue fédéré sont visibles dans BigQuery et peuvent être interrogées directement à l'aide du langage SQL BigQuery standard (sans avoir besoin d'un nom P.C.N.T en quatre parties) :
SELECT * FROM `NAMESPACE_NAME.TABLE_NAME`;
Remplacez les éléments suivants :
NAMESPACE_NAME: nom de votre espace de noms.TABLE_NAME: nom de votre table.
Étape suivante
- Découvrez comment gérer les catalogues dans la Google Cloud console.
- Découvrez les tables Apache Iceberg compatibles avec le catalogue d'environnements d'exécution Lakehouse.