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 Iceberg gérées, à des moteurs Open Source (OSS) 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 sert uniquement de passerelle proxy. Lorsque des moteurs externes se connectent à l'aide du préfixe d'entrepôt bq://, la passerelle achemine leurs demandes 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 DDL ou des API BigQuery standards, tout en donnant aux moteurs OSS externes un accès en lecture seule pour interroger ces tables via le point de terminaison du catalogue REST.
Formats de tableaux acceptés
Seules les tables Apache Iceberg V2 sont acceptées. Les tables Iceberg V1 ne le sont pas. Si vous avez des tables Iceberg V1 existantes stockées dans le catalogue BigQuery, vous devez les migrer vers la version V2 (par exemple, en exécutant ALTER TABLE catalog.schema.table SET TBLPROPERTIES ('format-version'='2'); ou en utilisant des opérations de moteur similaires) avant de les utiliser avec la fédération de catalogue BigQuery.
Fonctionnement de la fédération du catalogue BigQuery
La fédération de catalogues BigQuery vous permet d'exposer des tables BigQuery (telles que les tables gérées Iceberg et les tables du 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 du catalogue BigQuery fonctionne comme suit :
- Créer une table dans le catalogue BigQuery : vous créez une table gérée Iceberg dans BigQuery à l'aide d'instructions LDD. Cette table existe dans le catalogue BigQuery, est régie par les 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 pouvez fédérer dans un entrepôt spécifié par le format de chemin d'accès à l'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 depuis Spark, mais d'une expérience en lecture/écriture depuis BigQuery.
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'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 du runtime Lakehouse sert de passerelle proxy. Lorsque le catalogue d'exécution Lakehouse utilise le point de terminaison du catalogue Apache Iceberg REST, 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 BigQuery et les listes de contrôle d'accès (LCA). Lorsque le catalogue du runtime 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 et en é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 Apache Iceberg REST, les tables sont compatibles avec les opérations de lecture et d'é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 projet Google Cloud .
-
Activez l'API BigLake.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
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 table :
- Lecteur BigLake (
roles/biglake.viewer) sur le projet - Lecteur des objets Storage (
roles/storage.objectViewer) sur le bucket Cloud Storage
- Lecteur BigLake (
-
Effectuez 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 jobs 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 du catalogue BigQuery, configurez votre client (Apache Spark ou Trino, par exemple) avec le format d'entrepôt bq://projects/PROJECT_ID 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 en utilisant le format bq://projects/PROJECT_ID/locations/LOCATION.
Étant donné que ces ressources sont gérées par BigQuery, vous devez disposer des autorisations requises.
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 du catalogue BigQuery, vous pouvez créer un espace de noms pour vos tables fédérées.
Spark
Pour utiliser la fédération de catalogue 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: emplacement BigQuery. La valeur par défaut est la région multirégionaleUS.
Trino
Pour utiliser la fédération de catalogue 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 utilisant le 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: emplacement BigQuery. La valeur par défaut est la région multirégionaleUS.
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 nomsTABLE_NAME: nom de votre table.
Étapes suivantes
- Découvrez comment gérer les catalogues dans la console Google Cloud .
- En savoir plus sur les tables Apache Iceberg compatibles avec le catalogue d'environnements d'exécution Lakehouse