Consulta tablas de BigQuery a través del extremo del catálogo de REST de Apache Iceberg

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:

  1. 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.
  2. 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

  1. Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .

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

    Habilitar la API

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:

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ón US.

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ón US.

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?