Lakehouse proporciona interoperabilidad con BigQuery enrutando las solicitudes a través del extremo del catálogo de REST de Apache Iceberg al catálogo de BigQuery. Esta función te permite exponer tablas administradas por BigQuery, por ejemplo, tablas administradas de Iceberg, a motores externos de código abierto (OSS), como Apache Spark y Trino.
En lugar de crear un contenedor de catálogo de Lakehouse dedicado para
almacenar metadatos, el extremo del catálogo de REST de Apache Iceberg actúa solo como una puerta de enlace
de proxy. Cuando los motores externos se conectan con el prefijo de almacén bq://, la
puerta de enlace enruta sus solicitudes de catálogo directamente al catálogo interno de BigQuery.
Esto te permite crear y administrar tablas directamente en BigQuery
con DDL o APIs estándar de BigQuery, a la vez que otorgas a los motores de OSS externos acceso de solo lectura
para consultar esas tablas a través del extremo del catálogo de REST.
Cómo funciona la consulta de tablas de BigQuery a través del extremo del catálogo de REST
Enrutar las solicitudes al catálogo de BigQuery te permite exponer las tablas de BigQuery, como las tablas administradas de Iceberg y las tablas de BigQuery Metastore, a través del extremo del catálogo de REST de Apache Iceberg del catálogo de entorno de ejecución de Lakehouse.
El flujo de trabajo funciona de la siguiente manera:
- Crea una tabla en el catálogo de BigQuery: Crea una tabla administrada de Iceberg en BigQuery con sentencias DDL. Esta tabla existe en el catálogo de BigQuery, se rige por las listas de control de acceso (LCA) de BigQuery y funciona como un recurso de REST de BigQuery.
- Federar en el almacén de BigQuery desde el catálogo del entorno de ejecución de Lakehouse: Con la API de REST de Apache Iceberg del catálogo del entorno de ejecución de Lakehouse, federas en un almacén especificado por el formato de ruta de acceso del almacén
bq://projects/PROJECT_ID(o la versión regional,bq://projects/PROJECT_ID/locations/LOCATION). Esto te permite acceder a la tabla de BigQuery desde Compute Engine, como Apache Spark, a través de la API del catálogo de REST de Apache Iceberg. En esta configuración, obtienes una experiencia de solo lectura de Spark, pero una experiencia de lectura y escritura de BigQuery.
Consideraciones
Debido a que el enrutamiento de solicitudes al catálogo de BigQuery no crea un recurso de catálogo de Lakehouse dedicado, otros conceptos y parámetros de configuración a nivel de catálogo, como la jerarquía de recursos, las regiones de bucket y catálogos, y la estructura de nombres de P.C.N.T de cuatro partes, no se aplican a este método. En la API subyacente, esto corresponde a la configuración de
CATALOG_TYPE_BIGQUERY. La delegación de acceso al almacenamiento (distribución de credenciales) no se admite cuando se enrutan solicitudes al catálogo de BigQuery.Exponer tablas de BigQuery a través del extremo del catálogo de REST es distinto de acceder a datos multinube. Si bien este flujo de trabajo expone las tablas de Google Cloud a motores de OSS externos, Lakehouse conecta Google Cloud a catálogos externos remotos, como Databricks Unity Catalog, para consultar datos almacenados en otros proveedores de servicios en la nube directamente desde BigQuery y motores de OSS sin migrar datos. Para obtener más información sobre ese flujo de trabajo, consulta Acerca del acceso a los datos multinube.
Comparación con las tablas administradas por el extremo del catálogo de REST de Apache Iceberg
Exponer tablas de BigQuery a través del extremo del catálogo de REST difiere de los flujos de trabajo en los que el catálogo de entorno de ejecución de Lakehouse usa el extremo del catálogo de REST de Apache Iceberg de las siguientes maneras:
- Administración de recursos y almacenamiento del catálogo: Las tablas del catálogo de BigQuery residen allí como recursos de REST de BigQuery, y el catálogo de tiempo de ejecución de Lakehouse actúa como una puerta de enlace de proxy. Cuando el catálogo de tiempo de ejecución de Lakehouse usa el extremo del catálogo de REST de Apache Iceberg para administrar tablas directamente, esas tablas se almacenan como recursos de REST de Lakehouse.
- Control de acceso: Las tablas del catálogo de BigQuery usan permisos de IAM de BigQuery y listas de control de acceso (LCA). Las tablas administradas directamente en el catálogo de entornos de ejecución de Lakehouse usan las ACL de Lakehouse.
- Capacidades de lectura y escritura del motor: Las tablas administradas de Iceberg proporcionan acceso de lectura y escritura a través de BigQuery y acceso de solo lectura desde motores externos, como Spark. Las tablas administradas directamente en el catálogo de tiempo de ejecución de Lakehouse a través del extremo del catálogo de REST de Apache Iceberg admiten operaciones de lectura y escritura de BigQuery y de motores externos, como Spark.
Antes de comenzar
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
-
Habilita la API de BigLake si aún no está habilitada.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén información para otorgar roles.
Roles obligatorios
Para obtener los permisos que necesitas para consultar tablas de BigQuery a través del extremo del catálogo de REST de Apache Iceberg, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Lee los recursos del catálogo y consulta los datos de la tabla:
- Visualizador de BigLake (
roles/biglake.viewer) en el proyecto - Visualizador de objetos de Storage (
roles/storage.objectViewer) en el bucket de Cloud Storage
- Visualizador de BigLake (
-
Crea espacios de nombres o modifica tablas creadas por motores externos:
- Editor de datos de BigQuery (
roles/bigquery.dataEditor) en el proyecto - Administrador de almacenamiento (
roles/storage.admin) en el bucket de Cloud Storage
- Editor de datos de BigQuery (
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Si usas motores de consulta externos, como Managed Service para Apache Spark, para crear espacios de nombres o modificar tablas creadas a partir de motores externos, otorga estos roles a la cuenta de servicio que ejecuta trabajos en ese motor (las tablas administradas de Iceberg son de solo lectura desde motores externos).
Configura tu cliente para el almacén de BigQuery
Para conectarte al almacén de BigQuery, configura tu cliente
(como Apache Spark o Trino) con el
formato de almacén bq://projects/PROJECT_ID en
el campo WAREHOUSE_PATH en los ejemplos de configuración del cliente en
Configura la aplicación cliente.
También puedes incluir una ubicación de BigQuery para
restringir las solicitudes futuras a una sola ubicación con el
formato
bq://projects/PROJECT_ID/locations/LOCATION.
Debido a que BigQuery administra estos recursos, debes tener los permisos necesarios correspondientes.
Crea espacios de nombres en el almacén de BigQuery
Después de configurar el cliente, puedes crear un espacio de nombres para tus tablas.
Spark
Para crear un espacio de nombres en el almacén de BigQuery,
incluye las cláusulas LOCATION y 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;")
Reemplaza lo siguiente:
NAMESPACE_NAME: Es un nombre para tu espacio de nombres.BUCKET_NAME: Es el bucket de Cloud Storage que usas con tu catálogo.LOCATION: una ubicación de BigQuery. El valor predeterminado es la multirregiónUS.
Trino
Para crear un esquema en el almacén de BigQuery,
incluye las propiedades LOCATION y 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;
Reemplaza lo siguiente:
CATALOG_NAME: Es el nombre de tu catálogo de Trino que usa el extremo del catálogo de REST de Apache Iceberg.SCHEMA_NAME: Es un nombre para tu esquema.BUCKET_NAME: Es el bucket de Cloud Storage que usas con tu catálogo.LOCATION: una ubicación de BigQuery. El valor predeterminado es la multirregiónUS.
Consulta tablas en BigQuery
Las tablas que creas en el almacén de BigQuery son visibles en BigQuery y se pueden consultar directamente con SQL estándar de BigQuery (sin necesidad de un nombre de P.C.N.T de cuatro partes):
SELECT * FROM `NAMESPACE_NAME.TABLE_NAME`;
Reemplaza lo siguiente:
NAMESPACE_NAME: Es el nombre de tu espacio de nombres.TABLE_NAME: el nombre de tu tabla.
¿Qué sigue?
- Obtén más información para administrar catálogos en la consola de Google Cloud .
- Obtén más información sobre las tablas de Apache Iceberg compatibles con el catálogo de entornos de ejecución de Lakehouse.