Lakehouse para Apache Iceberg admite la consulta de datos remotos a través de una configuración de Lakehouse en varias nubes. Una vez configurado, el sistema admite el acceso a los datos con SQL estándar en BigQuery o Apache Spark en Managed Service para Apache Spark.
En esta página, se muestra cómo consultar datos remotos después de configurar un Lakehouse en varias nubes.
Antes de comenzar
Antes de consultar tus datos, debes completar lo siguiente:
- Configura Lakehouse en varias nubes para AWS Glue o Databricks Unity Catalog.
- Asegúrate de tener datos en tu catálogo remoto.
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) -
Descubrir y leer metadatos de tablas en 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 Google Cloud entorno.
Consulta desde BigQuery
Para consultar tablas federadas de Apache Iceberg, usa SQL estándar de BigQuery. La ruta de acceso 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 Google Cloud proyecto de.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
Puedes leer datos de Lakehouse en varias nubes directamente desde clústeres de Managed Service para Apache Spark sin administrar credenciales de AWS ni conectores de S3 independientes. Spark se conecta directamente a Lakehouse con la interfaz estándar del catálogo de REST de Apache Iceberg, en lugar de usar la API de BigQuery Storage Read.
Si configuras tu trabajo de Managed Service para Apache Spark con el extremo de REST de Lakehouse, Lakehouse proporciona automáticamente credenciales de S3 temporales y con alcance a Spark a través de X-Iceberg-Access-Delegation=vended-credentials. Esto permite que Spark lea los datos subyacentes de forma segura mientras se adhiere a la configuración de tu catálogo.
Para configurar tu trabajo de Managed Service para Apache Spark con el extremo de REST de Lakehouse, haz lo siguiente:
Configura el trabajo de Spark.
En este comando, pasa las propiedades del catálogo de REST de Apache Iceberg cuando envíes tu trabajo de Spark. Esto asigna tu catálogo de Lakehouse federado a un nombre de catálogo de Spark local (por ejemplo,
my_catalog):gcloud dataproc jobs submit pyspark PYSPARK_SCRIPT_PATH \ --cluster="CLUSTER_NAME" \ --region="REGION" \ --properties="spark.sql.catalog.SPARK_CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\ spark.sql.catalog.SPARK_CATALOG_NAME.type=rest,\ spark.sql.catalog.SPARK_CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\ spark.sql.catalog.SPARK_CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\ spark.sql.catalog.SPARK_CATALOG_NAME.io-impl=org.apache.iceberg.aws.s3.S3FileIO,\ spark.sql.catalog.SPARK_CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\ spark.sql.catalog.SPARK_CATALOG_NAME.rest-metrics-reporting-enabled=false,\ spark.sql.catalog.SPARK_CATALOG_NAME.header.x-goog-user-project=PROJECT_ID"
Consulta los datos en PySpark.
Este comando usa Spark para leer directamente desde el catálogo de Lakehouse y, luego, ejecuta una transformación estándar.
df = spark.table("SPARK_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME") df.filter(df.action == "purchase").show()
Reemplaza lo siguiente:
PYSPARK_SCRIPT_PATH: Es la ruta de acceso a tu trabajo de PySpark.CLUSTER_NAME: Es el nombre de tu clúster de Managed Service para Apache Spark.REGION: la Google Cloud región. Por ejemplo,us-east4.PROJECT_ID: Es el ID del Google Cloud proyecto de.SPARK_CATALOG_NAME: Es el nombre que deseas usar para el catálogo de Spark.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.