Después de configurar el acceso a los datos entre nubes, puedes consultar datos remotos de varias fuentes. Esta capacidad de Lakehouse sin límites te permite acceder a los datos con SQL estándar en BigQuery, la versión de código abierto de Apache Spark o Managed Service para Apache Spark. Además de las consultas analíticas, puedes usar tus datos federados para obtener estadísticas y gobernanza basadas en IA:
- Conversational Analytics: Crea agentes especializados basados en tus fuentes de datos exactas, incluidas las tablas federadas, para analizar datos en varias nubes desde una sola conversación.
- Dataplex Catalog: Usa las funciones de Knowledge Catalog para generar perfiles de datos y obtener estadísticas con fuentes de datos federadas.
Para obtener estadísticas más detalladas, puedes crear agentes especializados basados en tus fuentes de datos, desde proyectos, conjuntos de datos y tablas hasta vistas, gráficos y funciones definidas por el usuario. Dado que tus datos rara vez se encuentran en un solo lugar, el análisis conversacional va más allá de las tablas estándar de BigQuery y llega a las tablas de Apache Iceberg administradas por Lakehouse y las fuentes de Lakehouse, como Databricks Unity, AWS Glue, SAP y Salesforce. Esto te permite derribar los silos de datos y analizarlos en todas las nubes desde una sola conversación.
En esta página, se muestra cómo consultar datos remotos después de configurar el acceso a datos entre nubes.
Antes de comenzar
Antes de consultar tus datos, debes completar los siguientes pasos:
- Asegúrate de tener datos en tu catálogo remoto.
- Configura una conexión entre nubes para AWS Glue, Databricks Unity Catalog, Snowflake Horizon Catalog, Workday Data Lake o SAP Business Data Cloud.
Roles obligatorios
Para obtener los permisos que necesitas para consultar datos federados, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Consultar datos en BigQuery: Visualizador de datos de BigQuery (
roles/bigquery.dataViewer) -
Ejecutar trabajos de BigQuery:
Usuario de trabajo de BigQuery (
roles/bigquery.jobUser) -
Descubre y lee los metadatos de las tablas en los catálogos de Lakehouse:
Visualizador de BigLake (
roles/biglake.viewer)
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 mediante roles personalizados o cualquier otro rol predefinido.
Consulta los datos
Después de configurar la federación, puedes consultar tus datos remotos con SQL estándar en BigQuery o Apache Spark en Managed Service para Apache Spark.
Lakehouse controla la traducción de metadatos y el acceso seguro a los datos, lo que te permite tratar las tablas remotas de Apache Iceberg como si fueran locales para tu entorno de Google Cloud .
Consulta desde BigQuery
Para consultar tablas federadas de Apache Iceberg, usa SQL estándar de BigQuery. La ruta de la tabla sigue una estructura de 4 partes:
project.federated_catalog.namespace.table. El almacenamiento en caché, la venta de credenciales y el enrutamiento de tránsito de CCI se controlan automáticamente.
SELECT user_id, action, COUNT(*) as total_actions FROM `PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME` WHERE event_date >= '2026-04-01' GROUP BY 1, 2;
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de Google Cloud .FEDERATED_CATALOG_NAME: Es el nombre del catálogo federado.NAMESPACE_NAME: Es el espacio de nombres dentro del catálogo.TABLE_NAME: Es el nombre de la tabla.REGION: La Google Cloud región Por ejemplo,us-east4.
También puedes ejecutar la consulta con la herramienta de línea de comandos bq:
bq --location="REGION" --project_id="PROJECT_ID" query --use_legacy_sql=false \ "SELECT * FROM \`PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME\` LIMIT 10"
Consulta desde Managed Service para Apache Spark
Envía una carga de trabajo por lotes de PySpark a Managed Service para Apache Spark con la distribución de credenciales habilitada con X-Iceberg-Access-Delegation=vended-credentials. Spark usará las credenciales vendidas con alcance y de corta duración para conectarse a S3 de forma segura, todo sin necesidad de administrar conectores de S3 o credenciales de AWS independientes.
Habilita la conectividad saliente para Managed Service para Apache Spark.
Managed Service para Apache Spark no se puede conectar a AWS S3 con su configuración de red predeterminada. Debes aprovisionar un Cloud Router y Cloud NAT.
gcloud compute routers create lakehouse-router \ --network=NETWORK_NAME \ --region=REGION gcloud compute routers nats create lakehouse-nat \ --router=lakehouse-router \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region=REGION
Reemplaza lo siguiente:
NETWORK_NAME: Es la red para la carga de trabajo por lotes de Managed Service para Apache Spark (por ejemplo,default).REGION: Es la región de la carga de trabajo por lotes de Managed Service para Apache Spark.
Crea un archivo de aplicación de PySpark y ejecuta el trabajo de PySpark.
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("CATALOG_NAME").getOrCreate() df = spark.table("CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME") df.show(10, truncate=False)
Sube este archivo a Cloud Storage en
PYSPARK_FILE.gcloud dataproc batches submit pyspark PYSPARK_FILE \ --project=PROJECT_ID \ --region=REGION \ --version=RUNTIME_VERSION \ --properties="\ spark.sql.defaultCatalog=CATALOG_NAME,\ spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\ spark.sql.catalog.CATALOG_NAME.type=rest,\ spark.sql.catalog.CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\ spark.sql.catalog.CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\ spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project=PROJECT_ID,\ spark.sql.catalog.CATALOG_NAME.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\ spark.sql.catalog.CATALOG_NAME.io-impl=IO_IMPL,\ spark.sql.catalog.CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\ spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
Reemplaza lo siguiente:
NAMESPACE_NAME: Es el espacio de nombres en el catálogo federado.TABLE_NAME: Es el nombre de la tabla en el catálogo federado.CATALOG_NAME: Es un nombre para el catálogo local de Spark (por ejemplo,my_catalog).PYSPARK_FILE: Es la ruta de acceso de Cloud Storagegs://a tu archivo de aplicación de PySpark.REGION: Es la región de la carga de trabajo por lotes de Managed Service para Apache Spark.RUNTIME_VERSION: Es la versión del entorno de ejecución de Managed Service para Apache Spark, por ejemplo,2.3.PROJECT_ID: Es el proyecto al que se le factura el uso del extremo del catálogo de REST de Apache Iceberg.FEDERATED_CATALOG_NAME: Es el nombre del catálogo federado.IO_IMPL: Es la implementación de FileIO que coincide con tu almacenamiento subyacente.
Parámetros de configuración de Spark
En la siguiente tabla, se enumeran los parámetros comunes que se requieren para todas las conexiones:
Parámetro Descripción spark.sql.defaultCatalogNombre del catálogo predeterminado (por ejemplo, CATALOG_NAME)spark.sql.catalog.CATALOG_NAMEEs la clase de implementación del catálogo. Se define en org.apache.iceberg.spark.SparkCatalog.spark.sql.catalog.CATALOG_NAME.typeEs el tipo de backend del catálogo. Se establece en restpara el catálogo de REST de Iceberg.spark.sql.catalog.CATALOG_NAME.uriEs el URI del extremo del catálogo de REST. Se define en https://biglake.googleapis.com/iceberg/v1/restcatalog.spark.sql.catalog.CATALOG_NAME.warehouseEs la ruta de acceso a la ubicación del almacén del catálogo federado. Se define en bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME.spark.sql.catalog.CATALOG_NAME.header.x-goog-user-projectEs el ID del proyecto de Google Cloud que se usa para la atribución de la facturación y la cuota. Se define en PROJECT_ID.spark.sql.extensionsExtensiones de la sesión de Spark para la sintaxis y las funciones de Iceberg SQL. Se define en org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions.En la siguiente tabla, se enumeran los parámetros de autenticación:
Parámetro Descripción spark.sql.catalog.CATALOG_NAME.rest.auth.typeEs la clase del administrador de autenticación personalizado. Se establece en org.apache.iceberg.gcp.auth.GoogleAuthManagerpara la autenticación del flujo de OAuth.spark.sql.catalog.CATALOG_NAME.oauth2-server-uriEs el URI del extremo del servidor de tokens de OAuth2. Se establece en https://oauth2.googleapis.com/tokenpara la autenticación con token de acceso personal (PAT).spark.sql.catalog.CATALOG_NAME.tokenEs el token de portador o el token de acceso personal (PAT). Por lo general, se establece en $(gcloud auth application-default print-access-token)para la autenticación con PAT.En la siguiente tabla, se enumeran los parámetros únicos según tu proveedor de almacenamiento (
IO_IMPL):Almacenamiento spark.sql.catalog.CATALOG_NAME.io-implNotas Amazon S3 org.apache.iceberg.aws.s3.S3FileIORequiere la venta de credenciales ( X-Iceberg-Access-Delegation=vended-credentials) si está habilitada.
Parámetro adicional:spark.sql.catalog.CATALOG_NAME.s3.region(para obtener una lista de regiones, consulta Cuotas y extremos de Amazon S3).Google Cloud Storage org.apache.iceberg.gcp.gcs.GCSFileIOParámetro adicional: spark.sql.catalog.CATALOG_NAME.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token.Azure Blob Storage org.apache.iceberg.azure.adlsv2.ADLSFileIONo se requieren parámetros de almacenamiento adicionales. En Snowflake, es posible que encuentres problemas cuando consultes columnas
STRING, ya que se optimizan automáticamente para el almacenamiento. Puedes resolver este problema de dos maneras:- Opción 1: Inhabilita la vectorización en Spark: Agrega las siguientes propiedades de configuración de Spark a la marca
--properties: spark.sql.iceberg.vectorization.enabled=falsespark.sql.catalog.CATALOG_NAME.table-override.read.parquet.vectorization.enabled=falseOpción 2: Cambia la política de serialización en Snowflake: Cambia la política de serialización de almacenamiento a
COMPATIBLEpara la tabla en Snowflake.
Supervisa el uso de la caché y el ahorro de costos de salida
El almacenamiento en caché de Lakehouse se habilita automáticamente para todas las consultas entre nubes. Cuando se ejecuta una consulta, Lakehouse almacena automáticamente en caché los bloques de datos de forma local en el almacenamiento de Google Cloud . Las consultas posteriores dirigidas a los mismos bloques de datos se leen directamente desde la caché local en lugar de volver a recuperar los datos de la nube remota.
Para verificar las tasas de acierto de caché y medir los ahorros en los costos de salida, inspecciona los detalles del trabajo en la consola de BigQuery o recupera las estadísticas del trabajo de consulta (JobStatistics2) con la API de BigQuery o la CLI de bq:
bq show --format=prettyjson --j JOB_ID
En el resultado de JSON en statistics.query.objectStorageStats (o object_storage_stats en la API de proto), las estadísticas del trabajo devuelven una lista con una entrada para cada proveedor de servicios en la nube al que se accedió durante la ejecución. Cada entrada contiene los siguientes campos:
cloudProvider(cloud_provider): Es el proveedor de servicios en la nube remoto que aloja el almacenamiento de objetos (por ejemplo,AWSoAZURE).cacheBytesRead(cache_bytes_read): Son los bytes totales leídos de la caché Google Cloud local, lo que evita una lectura del almacenamiento de objetos remoto.objectStorageBytesRead(object_storage_bytes_read): Es la cantidad total de bytes leídos directamente del almacenamiento de objetos del proveedor de servicios en la nube remoto.
Para obtener más información sobre los conceptos de almacenamiento en caché y las consideraciones sobre la residencia de datos, consulta Almacenamiento en caché inteligente.