Consulta tablas de Iceberg con el catálogo de entorno de ejecución de Lakehouse, Spark y BigQuery

Aprende a usar Lakehouse para Apache Iceberg creando un catálogo de entorno de ejecución de Lakehouse con un catálogo de bucket buckets. Esta configuración establece una capa de metadatos administrada que conecta motores de procesamiento de código abierto con Google Cloud.

Luego, ejecuta un trabajo de PySpark de Managed Service para Apache Spark para crear una tabla de catálogo REST de Lakehouse Iceberg con el extremo catálogo REST de Apache Iceberg.

Después, puedes consultar la tabla resultante directamente desde la Google Cloud consola de BigQuery con la project.catalog.namespace.table sintaxis.

Antes de comenzar

  1. Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the BigLake, Dataproc APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the BigLake, Dataproc APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Asigna roles de IAM

Para permitir que el trabajo de PySpark de Managed Service para Apache Spark y el catálogo de entorno de ejecución de Lakehouse funcionen con Cloud Storage y BigQuery, otorga los roles necesarios a sus principales correspondientes:

  1. En la Google Cloud consola de, haz clic en Activar Cloud Shell.

    Activa Cloud Shell

  2. Haz clic en Autorizar.

  3. Otorga el rol Trabajador de Dataproc a la cuenta de servicio predeterminada de Compute Engine del proyecto, que Managed Service para Apache Spark usa de forma predeterminada, como se detalla en Cuentas de servicio de Managed Service para Apache Spark.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$(gcloud projects describe PROJECT_ID --format='value(projectNumber)')-compute@developer.gserviceaccount.com" \
        --role="roles/dataproc.worker"
  4. Otorga el rol Consumidor de Service Usage a la cuenta de servicio predeterminada de Compute Engine del proyecto.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$(gcloud projects describe PROJECT_ID --format='value(projectNumber)')-compute@developer.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageConsumer"
  5. Otorga el rol Editor de BigLake a la cuenta de servicio predeterminada de Compute Engine del proyecto.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$(gcloud projects describe PROJECT_ID --format='value(projectNumber)')-compute@developer.gserviceaccount.com" \
        --role="roles/biglake.editor"
  6. Otorga el rol Editor de datos de BigQuery a la cuenta de servicio predeterminada de Compute Engine del proyecto.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$(gcloud projects describe PROJECT_ID --format='value(projectNumber)')-compute@developer.gserviceaccount.com" \
        --role="roles/bigquery.dataEditor"

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de Google Cloud .

Crea un catálogo de entorno de ejecución de Lakehouse

Crea un catálogo de entorno de ejecución de Lakehouse para administrar los metadatos de tus tablas de Iceberg.

  1. En Cloud Shell, ejecuta el siguiente comando para crear tu bucket múltiple (bl://) con la venta de credenciales:

    gcloud biglake iceberg catalogs create LAKEHOUSE_CATALOG_ID \
        --project=PROJECT_ID \
        --catalog-type=biglake \
        --default-location=gs://BUCKET_NAME \
        --credential-mode=vended-credentials

    Reemplaza lo siguiente:

    • LAKEHOUSE_CATALOG_ID: Es un nombre único para tu catálogo.
    • PROJECT_ID: Es el ID del Google Cloud proyecto de.
    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage que contiene el archivo de tu aplicación de PySpark.
  2. Otorga permisos en el bucket a la cuenta de servicio del catálogo:

    1. En la Google Cloud consola de, ve a Lakehouse.

      Ir a Lakehouse

    2. Haz clic en el nombre del catálogo que acabas de crear (LAKEHOUSE_CATALOG_ID).

    3. En Método de autenticación, haz clic en Establecer permisos del bucket.

    4. En el diálogo, haz clic en Confirmar. Esto verifica que la cuenta de servicio de tu catálogo tenga el rol de Usuario de objetos de almacenamiento en tu bucket.

Crea y ejecuta un trabajo de PySpark

Para crear y consultar una tabla de Iceberg, primero crea un trabajo de PySpark con las instrucciones de Spark SQL necesarias. Luego, ejecuta el trabajo con Managed Service para Apache Spark.

Crea una secuencia de comandos de PySpark con un espacio de nombres y una tabla

En un editor de texto, crea un archivo llamado quickstart.py con el siguiente contenido.

Esta secuencia de comandos de PySpark inicializa una sesión de Spark para realizar varias operaciones en un catálogo de Iceberg. Primero, la secuencia de comandos crea un espacio de nombres, si aún no existe uno. Luego, crea una tabla de Iceberg llamada quickstart_table con un esquema básico. Después de crear la tabla, la secuencia de comandos inserta tres filas de datos. Por último, consulta la tabla para recuperar todos los registros insertados.

Luego, estos valores se usan en el siguiente paso cuando ejecutas el trabajo gcloud dataproc batches submit pyspark.

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("quickstart").getOrCreate()

# Create a namespace (dataset) if it doesn't exist
spark.sql("CREATE NAMESPACE IF NOT EXISTS `quickstart_catalog`.quickstart_namespace")

# Create the table
spark.sql("""
    CREATE OR REPLACE TABLE `quickstart_catalog`.quickstart_namespace.quickstart_table (
        id INT,
        name STRING
    )
    USING iceberg
""")

# Insert data into the table
spark.sql("""
    INSERT INTO `quickstart_catalog`.quickstart_namespace.quickstart_table
    VALUES (1, 'one'), (2, 'two'), (3, 'three')
""")

Sube la secuencia de comandos a tu bucket de Cloud Storage

Después de crear la secuencia de comandos quickstart.py, súbela al bucket de Cloud Storage.

  1. En la Google Cloud consola de, ve a Buckets de Cloud Storage.

    Ir a Buckets

  2. Haz clic en el nombre de tu bucket.

  3. En la pestaña Objetos, haz clic en Subir > Subir archivos.

  4. En el navegador de archivos, selecciona el archivo quickstart.py y, luego, haz clic en Abrir.

Ejecuta el trabajo de PySpark

Después de subir la secuencia de comandos quickstart.py, ejecútala como un trabajo por lotes de Managed Service para Apache Spark.

  1. En Cloud Shell, ejecuta el siguiente trabajo por lotes de Managed Service para Apache Spark con la secuencia de comandos quickstart.py.

    gcloud dataproc batches submit pyspark gs://BUCKET_NAME/quickstart.py \
        --project=PROJECT_ID \
        --region=REGION \
        --version=2.2 \
        --properties="\
    spark.sql.defaultCatalog=quickstart_catalog,\
    spark.sql.catalog.quickstart_catalog=org.apache.iceberg.spark.SparkCatalog,\
    spark.sql.catalog.quickstart_catalog.type=rest,\
    spark.sql.catalog.quickstart_catalog.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\
    spark.sql.catalog.quickstart_catalog.warehouse=bl://projects/PROJECT_ID/catalogs/LAKEHOUSE_CATALOG_ID,\
    spark.sql.catalog.quickstart_catalog.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\
    spark.sql.catalog.quickstart_catalog.header.x-goog-user-project=PROJECT_ID,\
    spark.sql.catalog.quickstart_catalog.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\
    spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,\
    spark.sql.catalog.quickstart_catalog.header.X-Iceberg-Access-Delegation=vended-credentials,\
    spark.sql.catalog.quickstart_catalog.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token"

    Reemplaza lo siguiente:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage que contiene el archivo de tu aplicación de PySpark.

    • LAKEHOUSE_CATALOG_ID: Es el nombre de tu catálogo de BigLake. Este nombre se usa más adelante cuando consultas tu catálogo en BigQuery con la sintaxis P.C.N.T. Por ejemplo, my-project.biglake-catalog.quickstart_namespace.quickstart_table.

    • PROJECT_ID: Es el ID del Google Cloud proyecto de.

    • REGION: Es la región en la que se ejecutará la carga de trabajo por lotes de Managed Service para Apache Spark.

    Cuando se complete el trabajo, mostrará un resultado similar al siguiente:

    Batch [cb9d84e9489d408baca4f9e7ab4c64ff] finished.
    metadata:
    '@type': type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata
    batch: projects/your-project/locations/us-central1/batches/cb9d84e9489d408baca4f9e7ab4c64ff
    batchUuid: 54b0b9d2-f0a1-4fdf-ae44-eead3f8e60e9
    createTime: '2026-01-24T00:10:50.224097Z'
    description: Batch
    labels:
        goog-dataproc-batch-id: cb9d84e9489d408baca4f9e7ab4c64ff
        goog-dataproc-batch-uuid: 54b0b9d2-f0a1-4fdf-ae44-eead3f8e60e9
        goog-dataproc-drz-resource-uuid: batch-54b0b9d2-f0a1-4fdf-ae44-eead3f8e60e9
        goog-dataproc-location: us-central1
    operationType: BATCH
    name: projects/your-project/regions/us-central1/operations/32287926-5f61-3572-b54a-fbad8940d6ef
    

Consulta la tabla desde BigQuery

  1. En la Google Cloud consola de, ve a BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ingresa la siguiente instrucción. La consulta usa la sintaxis project.catalog.namespace.table.

    SELECT * FROM `PROJECT_ID.LAKEHOUSE_CATALOG_ID.quickstart_namespace.quickstart_table`;
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de. Google Cloud

    • LAKEHOUSE_CATALOG_ID: Es el identificador del catálogo que se usará en las consultas de BigQuery.

  3. Haz clic en Ejecutar.

    Los resultados de la consulta muestran los datos que insertaste con el trabajo de PySpark.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu Google Cloud cuenta de por los recursos que usaste en esta página.

  1. Actualiza quickstart.py para borrar el espacio de nombres (conjunto de datos) y la tabla:

    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder.appName("quickstart").getOrCreate()
    
    # Delete the table first, then the namespace (dataset)
    spark.sql("DROP TABLE `quickstart_catalog`.quickstart_namespace.quickstart_table")
    spark.sql("DROP NAMESPACE `quickstart_catalog`.quickstart_namespace")
    

    Súbelo al bucket de Cloud Storage:

    1. En la Google Cloud consola de, ve a Buckets de Cloud Storage.

      Ir a Buckets

    2. Haz clic en el nombre de tu bucket.

    3. En la pestaña Objetos, haz clic en Subir > Subir archivos.

    4. En el navegador de archivos, selecciona el archivo quickstart.py y, luego, haz clic en Abrir.

    En Cloud Shell, ejecuta otro trabajo por lotes de Managed Service para Apache Spark con la secuencia de comandos quickstart.py actualizada.

    gcloud dataproc batches submit pyspark gs://BUCKET_NAME/quickstart.py \
        --project=PROJECT_ID \
        --region=REGION \
        --version=2.2 \
        --properties="\
    spark.sql.defaultCatalog=quickstart_catalog,\
    spark.sql.catalog.quickstart_catalog=org.apache.iceberg.spark.SparkCatalog,\
    spark.sql.catalog.quickstart_catalog.type=rest,\
    spark.sql.catalog.quickstart_catalog.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\
    spark.sql.catalog.quickstart_catalog.warehouse=bl://projects/PROJECT_ID/catalogs/LAKEHOUSE_CATALOG_ID,\
    spark.sql.catalog.quickstart_catalog.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\
    spark.sql.catalog.quickstart_catalog.header.x-goog-user-project=PROJECT_ID,\
    spark.sql.catalog.quickstart_catalog.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\
    spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,\
    spark.sql.catalog.quickstart_catalog.header.X-Iceberg-Access-Delegation=vended-credentials,\
    spark.sql.catalog.quickstart_catalog.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token"

    Reemplaza lo siguiente:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage que contiene el archivo de tu aplicación de PySpark.

    • LAKEHOUSE_CATALOG_ID: Es el nombre de tu catálogo de BigLake.

    • PROJECT_ID: Es el ID del Google Cloud proyecto de.

    • REGION: Es la región en la que se ejecutará la carga de trabajo por lotes de Managed Service para Apache Spark.

  2. Ve a Lakehouse.

    Ir a Lakehouse

  3. Selecciona tu catálogo LAKEHOUSE_CATALOG_ID y, luego, haz clic en Borrar.

  4. Ve a Buckets de Cloud Storage.

    Ir a Buckets

  5. Selecciona tu bucket y haz clic en Borrar.

¿Qué sigue?