Lakehouse assure l'interopérabilité avec BigQuery en acheminant les requêtes via le point de terminaison du catalogue REST Apache Iceberg vers le catalogue BigQuery. Cette fonctionnalité vous permet d'exposer des tables gérées par BigQuery, par exemple des tables gérées Iceberg, à 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 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 LDD ou des API BigQuery standards, tout en accordant aux moteurs OSS externes un accès en lecture seule pour interroger ces tables via le point de terminaison du catalogue REST.
Fonctionnement de l'interrogation des tables BigQuery via le point de terminaison du catalogue REST
Le routage des requêtes vers le catalogue BigQuery vous permet d'exposer des tables BigQuery (telles que les tables gérées Iceberg et les tables de metastore BigQuery) via le point de terminaison du catalogue REST Apache Iceberg du catalogue d'environnements d'exécution Lakehouse.
Le workflow 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 fédérez dans un entrepôt spécifié par le format de chemin d'accès 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 Compute Engine tels qu'Apache Spark via l'API REST Apache Iceberg Catalog. 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.
Remarques
Étant donné que le routage des requêtes vers le catalogue BigQuery ne crée pas de ressource de catalogue Lakehouse dédiée, les autres concepts et configurations au niveau du catalogue (comme la hiérarchie des ressources, les régions des buckets et des catalogues, et 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. La délégation d'accès au stockage (distribution d'identifiants) n'est pas compatible lors du routage des requêtes vers le catalogue BigQuery.L'exposition des tables BigQuery via le point de terminaison du catalogue REST est distincte de l'accès aux données cross-cloud. Bien que ce workflow expose les tables Google Cloud aux moteurs OSS externes, Lakehouse connecte Google Cloud à des catalogues externes distants, tels que Databricks Unity Catalog, pour interroger les données stockées chez d'autres fournisseurs de services cloud directement depuis BigQuery et les moteurs OSS sans migrer les données. Pour en savoir plus sur ce workflow, consultez À propos de l'accès aux données cross-cloud.
Comparaison avec les tables gérées par le point de terminaison du catalogue REST Apache Iceberg
L'exposition des tables BigQuery via le point de terminaison du catalogue REST 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 du catalogue BigQuery y résident en tant que ressources REST BigQuery, et le catalogue d'environnements d'exécution Lakehouse sert de passerelle proxy. Lorsque le catalogue d'environnements d'exécution Lakehouse utilise le point de terminaison du catalogue REST Apache Iceberg pour gérer directement les tables, celles-ci sont stockées en tant que ressources REST Lakehouse.
- Contrôle des accès : les tables du catalogue BigQuery utilisent les autorisations IAM et les listes de contrôle d'accès (LCA) BigQuery. Les tables gérées directement dans le catalogue d'environnements d'exécution Lakehouse utilisent des LCA Lakehouse.
- Capacités de lecture et d'écriture du moteur : les tables gérées Iceberg fournissent un accès en lecture/écriture via BigQuery et un accès en lecture seule à partir de moteurs externes tels que Spark. Les tables gérées directement dans le catalogue d'environnements d'exécution Lakehouse via le point de terminaison du catalogue REST Apache Iceberg sont compatibles avec les opérations de lecture/écriture depuis 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 si ce n'est pas déjà fait.
Rôles requis pour activer les API
Pour activer des API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.
Rôles requis
Pour obtenir les autorisations nécessaires pour interroger des tables BigQuery via le point de terminaison du catalogue REST Apache Iceberg, 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 (
-
Créer des espaces de noms ou modifier des tables créées par un moteur externe :
- É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
- É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.
Si vous utilisez des moteurs de requête externes tels que Managed Service pour Apache Spark pour créer des espaces de noms ou modifier des tables créées à partir de moteurs externes, attribuez ces rôles au compte de service qui exécute les jobs dans ce moteur (les tables gérées Iceberg sont en lecture seule à partir des moteurs externes).
Configurer votre client pour l'entrepôt BigQuery
Pour vous connecter à l'entrepôt BigQuery, configurez votre client (tel qu'Apache Spark ou Trino) avec le format d'entrepôt bq://projects/PROJECT_ID dans le champ WAREHOUSE_PATH des exemples de configuration client dans Configurer l'application cliente.
Vous pouvez également choisir d'inclure un emplacement BigQuery pour limiter les futures requêtes à un seul emplacement au format bq://projects/PROJECT_ID/locations/LOCATION.
Comme ces ressources sont gérées par BigQuery, vous devez disposer des autorisations requises applicables.
Créer des espaces de noms dans l'entrepôt BigQuery
Après avoir configuré votre client, vous pouvez créer un espace de noms pour vos tables.
Spark
Pour créer un espace de noms dans l'entrepôt 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 l'emplacement multirégionalUS.
Trino
Pour créer un schéma dans l'entrepôt 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 l'emplacement multirégionalUS.
Interroger des tables dans BigQuery
Les tables que vous créez dans l'entrepôt BigQuery 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 .
- Découvrez les tables Apache Iceberg compatibles avec le catalogue d'environnements d'exécution Lakehouse.