Crear una tabla de Apache Iceberg con metadatos en BigLake Metastore

En este documento se explica cómo crear una tabla de Apache Iceberg con metadatos en BigLake Metastore mediante el servicio Dataproc Jobs, la CLI de Spark SQL o la interfaz web de Zeppelin que se ejecuta en un clúster de Dataproc.

Antes de empezar

Si aún no lo has hecho, crea un Google Cloud proyecto, un segmento de Cloud Storage y un clúster de Dataproc.

  1. Configurar un proyecto

    1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
    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 (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 Dataproc, BigQuery, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    5. Install the Google Cloud CLI.

    6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

      gcloud init
    8. 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

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

    10. Enable the Dataproc, BigQuery, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    11. Install the Google Cloud CLI.

    12. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

      gcloud init
    14. Crea un segmento de Cloud Storage en tu proyecto.

      1. In the Google Cloud console, go to the Cloud Storage Buckets page.

        Go to Buckets

      2. Click Create.
      3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
        1. In the Get started section, do the following:
          • Enter a globally unique name that meets the bucket naming requirements.
          • To add a bucket label, expand the Labels section (), click Add label, and specify a key and a value for your label.
        2. In the Choose where to store your data section, do the following:
          1. Select a Location type.
          2. Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
          3. To set up cross-bucket replication, select Add cross-bucket replication via Storage Transfer Service and follow these steps:

            Set up cross-bucket replication

            1. In the Bucket menu, select a bucket.
            2. In the Replication settings section, click Configure to configure settings for the replication job.

              The Configure cross-bucket replication pane appears.

              • To filter objects to replicate by object name prefix, enter a prefix that you want to include or exclude objects from, then click Add a prefix.
              • To set a storage class for the replicated objects, select a storage class from the Storage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
              • Click Done.
        3. In the Choose how to store your data section, do the following:
          1. Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
          2. To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
        4. In the Choose how to control access to objects section, select whether or not your bucket enforces public access prevention, and select an access control method for your bucket's objects.
        5. In the Choose how to protect object data section, do the following:
          • Select any of the options under Data protection that you want to set for your bucket.
            • To enable soft delete, click the Soft delete policy (For data recovery) checkbox, and specify the number of days you want to retain objects after deletion.
            • To set Object Versioning, click the Object versioning (For version control) checkbox, and specify the maximum number of versions per object and the number of days after which the noncurrent versions expire.
            • To enable the retention policy on objects and buckets, click the Retention (For compliance) checkbox, and then do the following:
              • To enable Object Retention Lock, click the Enable object retention checkbox.
              • To enable Bucket Lock, click the Set bucket retention policy checkbox, and choose a unit of time and a length of time for your retention period.
          • To choose how your object data will be encrypted, expand the Data encryption section (), and select a Data encryption method.
      4. Click Create.

    15. Crea un clúster de Dataproc. Para ahorrar recursos y costes, puedes crear un clúster de Dataproc de un solo nodo para ejecutar los ejemplos que se muestran en este documento.

      • La subred de la región en la que se crea el clúster debe tener habilitada la opción Acceso privado de Google (PGA).

      • Si quieres ejecutar el ejemplo de interfaz web de Zeppelin de esta guía, debes usar o crear un clúster de Dataproc con el componente opcional de Zeppelin habilitado.

    16. Asigna roles a una cuenta de servicio personalizada (si es necesario): de forma predeterminada, las VMs de clúster de Dataproc usan la cuenta de servicio predeterminada de Compute Engine para interactuar con Dataproc. Si quieres especificar una cuenta de servicio personalizada al crear el clúster, esta debe tener el rol Trabajador de Dataproc (roles/dataproc.worker) o un rol personalizado con los permisos necesarios del rol Trabajador.

    17. Asignación de bases de datos de OSS a conjuntos de datos de BigQuery

      Ten en cuenta la siguiente asignación entre los términos de la base de datos de código abierto y los conjuntos de datos de BigQuery:

      Base de datos de OSS Conjunto de datos de BigQuery
      Espacio de nombres y base de datos Conjunto de datos
      Tabla con o sin particiones Tabla
      Ver Ver

      Crear una tabla Iceberg

      En esta sección se explica cómo crear una tabla Iceberg con metadatos en BigLake Metastore enviando código de Spark SQL al servicio Dataproc, a la CLI de Spark SQL y a la interfaz web del componente Zeppelin, que se ejecutan en un clúster de Dataproc.

      Tarea de Dataproc

      Puedes enviar una tarea al servicio Dataproc enviándola a un clúster de Dataproc mediante la consolaGoogle Cloud o la CLI de Google Cloud, o bien a través de una solicitud REST HTTP o una llamada programática gRPC a las bibliotecas de cliente de Cloud de Dataproc a la API Jobs de Dataproc.

      En los ejemplos de esta sección se muestra cómo enviar una tarea de Spark SQL de Dataproc al servicio de Dataproc para crear una tabla de Iceberg con metadatos en BigQuery mediante la CLI de gcloud, la consola o la API REST de Dataproc. Google Cloud

      Preparar archivos de tareas

      Sigue estos pasos para crear un archivo de trabajo de Spark SQL. El archivo contiene comandos de Spark SQL para crear y actualizar una tabla Iceberg.

      1. En una ventana de terminal local o en Cloud Shell, usa un editor de texto, como vi o nano, para copiar los siguientes comandos en un archivo iceberg-table.sql y, a continuación, guarda el archivo en el directorio actual.

        USE CATALOG_NAME;
        CREATE NAMESPACE IF NOT EXISTS example_namespace;
        USE example_namespace;
        DROP TABLE IF EXISTS example_table;
        CREATE TABLE example_table (id int, data string) USING ICEBERG LOCATION 'gs://BUCKET/WAREHOUSE_FOLDER';
        INSERT INTO example_table VALUES (1, 'first row');
        ALTER TABLE example_table ADD COLUMNS (newDoubleCol double);
        DESCRIBE TABLE example_table;
        

        Haz los cambios siguientes:

        • CATALOG_NAME: nombre del catálogo de Iceberg.
        • BUCKET y WAREHOUSE_FOLDER: segmento y carpeta de Cloud Storage que se usan para el almacén de datos de Iceberg.
      2. Usa la CLI de gcloud para copiar el archivo local iceberg-table.sql en tu segmento de Cloud Storage.

        gcloud storage cp iceberg-table.sql gs://BUCKET/
        

      A continuación, descarga y copia el archivo iceberg-spark-runtime-3.5_2.12-1.6.1 JAR en Cloud Storage.

      1. En una ventana de terminal local o en Cloud Shell, ejecuta el siguiente comando curl para descargar el archivo JAR iceberg-spark-runtime-3.5_2.12-1.6.1 en el directorio actual.

        curl -o iceberg-spark-runtime-3.5_2.12-1.6.1.jar https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar
        
      2. Usa la CLI de gcloud para copiar el archivo JAR iceberg-spark-runtime-3.5_2.12-1.6.1 local del directorio actual en tu segmento de Cloud Storage.

        gcloud storage cp iceberg-spark-runtime-3.5_2.12-1.6.1.jar gs://BUCKET/
        

      Enviar la tarea de Spark SQL

      Selecciona una pestaña para seguir las instrucciones y enviar la tarea de Spark SQL al servicio de Dataproc mediante la CLI de gcloud, laGoogle Cloud consola o la API REST de Dataproc.

      gcloud

      1. Ejecuta el siguiente comando gcloud dataproc jobs submit spark-sql de forma local en una ventana de terminal local o en Cloud Shell para enviar la tarea de Spark SQL que crea la tabla de Iceberg.

        gcloud dataproc jobs submit spark-sql \
            --project=PROJECT_ID \
            --cluster=CLUSTER_NAME \
            --region=REGION \
            --jars="gs://BUCKET/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar" \
            --properties="spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,spark.sql.catalog.CATALOG_NAME.catalog-impl=org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog,spark.sql.catalog.CATALOG_NAME.gcp_project=PROJECT_ID,spark.sql.catalog.CATALOG_NAME.gcp_location=LOCATION,spark.sql.catalog.CATALOG_NAME.warehouse=gs://BUCKET/WAREHOUSE_FOLDER" \
            -f="gs://BUCKETiceberg-table.sql"
        

        Notas:

        • PROJECT_ID: tu ID de proyecto Google Cloud . Los IDs de proyecto se indican en la sección Información del proyecto del panel de control de la consola Google Cloud .
        • CLUSTER_NAME: nombre del clúster de Dataproc.
        • REGION: la región de Compute Engine en la que se encuentra tu clúster.
        • CATALOG_NAME: nombre del catálogo de Iceberg.
        • BUCKET y WAREHOUSE_FOLDER: segmento y carpeta de Cloud Storage que se usan para el almacén de datos de Iceberg.
        • LOCATION: una ubicación de BigQuery admitida. La ubicación predeterminada es "US".
        • --jars: Los archivos JAR que se indican son necesarios para crear metadatos de tabla en BigLake Metastore.
        • --properties: Propiedades de catálogo.
        • -f: el archivo de trabajo iceberg-table.sql que has copiado en tu segmento de Cloud Storage.
      2. Consulta la descripción de la tabla en el resultado del terminal cuando finalice el trabajo.

        Time taken: 2.194 seconds
        id                      int
        data                    string
        newDoubleCol            double
        Time taken: 1.479 seconds, Fetched 3 row(s)
        Job JOB_ID finished successfully.
        
      3. Para ver los metadatos de una tabla en BigQuery

        1. En la Google Cloud consola, ve a la página BigQuery.

          Ir a BigQuery Studio

        2. Ver los metadatos de una tabla Iceberg.

      Consola

      Sigue estos pasos para usar la Google Cloud consola y enviar el trabajo de Spark SQL al servicio Dataproc para crear una tabla Iceberg con metadatos en BigLake Metastore.

      1. En la Google Cloud consola, ve a Dataproc Enviar una tarea.

        Vaya a la página Enviar un trabajo y rellene los siguientes campos:

        • ID de trabajo: acepta el ID sugerido o inserta el tuyo.
        • Región: selecciona la región en la que se encuentra tu clúster.
        • Clúster: selecciona el clúster.
        • Tipo de trabajo: selecciona SparkSql.
        • Tipo de origen de la consulta: selecciona Query file.
        • Consultar archivo: inserta gs://BUCKET/iceberg-table.sql
        • Archivos JAR: inserta lo siguiente:
          gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar
          
        • Propiedades: haz clic en Añadir propiedad cinco veces para crear una lista de cinco campos de entrada key value. A continuación, copia los siguientes pares Clave y Valor para definir cinco propiedades.
          # Clave Valor
          1.
          spark.sql.catalog.CATALOG_NAME
          
          org.apache.iceberg.spark.SparkCatalog
          
          2.
          spark.sql.catalog.CATALOG_NAME.catalog-impl
          
          org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog
          
          3.
          spark.sql.catalog.CATALOG_NAME.gcp_project
          
          PROJECT_ID
          
          4.
          spark.sql.catalog.CATALOG_NAME.gcp_location
          
          LOCATION
          
          5.
          spark.sql.catalog.CATALOG_NAME.warehouse
          
          gs://BUCKET/WAREHOUSE_FOLDER
          

        Notas:

        • CATALOG_NAME: nombre del catálogo de Iceberg.
        • PROJECT_ID: tu ID de proyecto Google Cloud . Los IDs de proyecto se indican en la sección Información del proyecto del panel de control Google Cloud de la consola. región en la que se encuentra el clúster.
        • LOCATION: una ubicación de BigQuery admitida. La ubicación predeterminada es "US".
        • BUCKET y WAREHOUSE_FOLDER: segmento y carpeta de Cloud Storage que se usan para el almacén de datos de Iceberg.
      2. Haz clic en Enviar.

      3. Para monitorizar el progreso de un trabajo y ver su salida, ve a la página Trabajos de Dataproc en la Google Cloud consola y, a continuación, haz clic en Job ID para abrir la página Detalles del trabajo.

      4. Para ver los metadatos de una tabla en BigQuery

        1. En la Google Cloud consola, ve a la página BigQuery.

          Ir a BigQuery Studio

        2. Ver los metadatos de una tabla Iceberg.

      REST

      Puedes usar la API jobs.submit de Dataproc para enviar la tarea de Spark SQL al servicio de Dataproc y crear una tabla de Iceberg con metadatos en el almacén de metadatos de BigLake.

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: tu ID de proyecto Google Cloud . Los IDs de proyecto se indican en la sección Información del proyecto del panel de control de la consola Google Cloud .
      • CLUSTER_NAME: nombre del clúster de Dataproc.
      • REGION: la región de Compute Engine en la que se encuentra tu clúster.
      • CATALOG_NAME: nombre del catálogo de Iceberg.
      • BUCKET y WAREHOUSE_FOLDER: segmento y carpeta de Cloud Storage que se usan para el almacén de Iceberg.
      • LOCATION: una ubicación de BigQuery admitida. La ubicación predeterminada es "US".
      • jarFileUris: Los archivos JAR que se indican son necesarios para crear metadatos de tablas en la metastore de BigQuery.
      • properties: Propiedades de catálogo.
      • queryFileUri: el archivo de trabajo iceberg-table.sql que has copiado en tu segmento de Cloud Storage.

      Método HTTP y URL:

      POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit

      Cuerpo JSON de la solicitud:

      {
        "projectId": "PROJECT_ID",
        "job": {
          "placement": {
            "clusterName": "CLUSTER_NAME"
          },
          "statusHistory": [],
          "reference": {
            "jobId": "",
            "projectId": "PROJECT_ID"
          },
          "sparkSqlJob": {
            "properties": {
              "spark.sql.catalog."CATALOG_NAME": "org.apache.iceberg.spark.SparkCatalog",
              "spark.sql.catalog."CATALOG_NAME".catalog-impl": "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog",
              "spark.sql.catalog."CATALOG_NAME".gcp_project": "PROJECT_ID",
              "spark.sql.catalog."CATALOG_NAME".gcp_location": "LOCATION",
              "spark.sql.catalog."CATALOG_NAME".warehouse": "gs://BUCKET/WAREHOUSE_FOLDER"
            },
            "jarFileUris": [
              "gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.5.2.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.5.2-1.0.1-beta.jar"
            ],
            "scriptVariables": {},
            "queryFileUri": "gs://BUCKET/iceberg-table.sql"
          }
        }
      }
      
      

      Para enviar tu solicitud, despliega una de estas opciones:

      Deberías recibir una respuesta JSON similar a la siguiente:

      {
        "reference": {
          "projectId": "PROJECT_ID",
          "jobId": "..."
        },
        "placement": {
          "clusterName": "CLUSTER_NAME",
          "clusterUuid": "..."
        },
        "status": {
          "state": "PENDING",
          "stateStartTime": "..."
        },
        "submittedBy": "USER",
        "sparkSqlJob": {
          "queryFileUri": "gs://BUCKET/iceberg-table.sql",
          "properties": {
            "spark.sql.catalog.USER_catalog": "org.apache.iceberg.spark.SparkCatalog",
            "spark.sql.catalog.USER_catalog.catalog-impl": "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog",
            "spark.sql.catalog.USER_catalog.gcp_project": "PROJECT_ID",
            "spark.sql.catalog.USER_catalog.gcp_location": "LOCATION",
            "spark.sql.catalog.USER_catalog.warehouse": "gs://BUCKET/WAREHOUSE_FOLDER"
          },
          "jarFileUris": [
            "gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.5.2.jar",
            "gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.5.2-1.0.1-beta.jar"
          ]
        },
        "driverControlFilesUri": "gs://dataproc-...",
        "driverOutputResourceUri": "gs://dataproc-.../driveroutput",
        "jobUuid": "...",
        "region": "REGION"
      }
      

      Para monitorizar el progreso de un trabajo y ver su salida, ve a la página Trabajos de Dataproc en la Google Cloud consola y, a continuación, haz clic en Job ID para abrir la página Detalles del trabajo.

      Para ver los metadatos de una tabla en BigQuery

      1. En la Google Cloud consola, ve a la página BigQuery.

        Ir a BigQuery Studio

      2. Ver los metadatos de una tabla Iceberg.

      CLI de Spark SQL

      En los pasos siguientes se muestra cómo crear una tabla Iceberg con metadatos de tabla almacenados en BigLake Metastore mediante la CLI de Spark SQL que se ejecuta en el nodo maestro de un clúster de Dataproc.

      1. Usa SSH para conectarte al nodo maestro de tu clúster de Dataproc.

      2. En el terminal de la sesión SSH, usa el editor de texto vi o nano para copiar los siguientes comandos en un archivo iceberg-table.sql.

        SET CATALOG_NAME = `CATALOG_NAME`;
        SET BUCKET = `BUCKET`;
        SET WAREHOUSE_FOLDER = `WAREHOUSE_FOLDER`;
        USE `${CATALOG_NAME}`;
        CREATE NAMESPACE IF NOT EXISTS `${CATALOG_NAME}`.example_namespace;
        DROP TABLE IF EXISTS `${CATALOG_NAME}`.example_namespace.example_table;
        CREATE TABLE `${CATALOG_NAME}`.example_namespace.example_table (id int, data string) USING ICEBERG LOCATION 'gs://${BUCKET}/${WAREHOUSE_FOLDER}';
        INSERT INTO `${CATALOG_NAME}`.example_namespace.example_table VALUES (1, 'first row');
        ALTER TABLE `${CATALOG_NAME}`.example_namespace.example_table ADD COLUMNS (newDoubleCol double);
        DESCRIBE TABLE `${CATALOG_NAME}`.example_namespace.example_table;
        

        Haz los cambios siguientes:

        • CATALOG_NAME: nombre del catálogo de Iceberg.
        • BUCKET y WAREHOUSE_FOLDER: segmento y carpeta de Cloud Storage que se usan para el almacén de datos de Iceberg.
      3. En el terminal de la sesión SSH, ejecuta el siguiente comando spark-sql para crear la tabla Iceberg.

        spark-sql \
        --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1 \
        --jars https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar \
        --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \
        --conf spark.sql.catalog.CATALOG_NAME.catalog-impl=org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog \
        --conf spark.sql.catalog.CATALOG_NAME.gcp_project=PROJECT_ID \
        --conf spark.sql.catalog.CATALOG_NAME.gcp_location=LOCATION \
        --conf spark.sql.catalog.CATALOG_NAME.warehouse=gs://BUCKET/WAREHOUSE_FOLDER \
        -f iceberg-table.sql
        

        Haz los cambios siguientes:

        • PROJECT_ID: tu ID de proyecto Google Cloud . Los IDs de proyecto se indican en la sección Información del proyecto del panel de control de la consola Google Cloud .
        • LOCATION: una ubicación de BigQuery admitida. La ubicación predeterminada es "US".
      4. Ver metadatos de una tabla en BigQuery

        1. En la Google Cloud consola, ve a la página BigQuery.

          Ir a BigQuery Studio

        2. Ver los metadatos de una tabla Iceberg.

      Interfaz web de Zeppelin

      En los siguientes pasos se muestra cómo crear una tabla de Iceberg con metadatos de tabla almacenados en BigLake Metastore mediante la interfaz web de Zeppelin que se ejecuta en el nodo maestro de un clúster de Dataproc .

      1. En la Google Cloud consola, ve a la página Clústeres de Dataproc.

        Ir a la página Clústeres de Dataproc

      2. Selecciona el nombre del clúster para abrir la página Detalles del clúster.

      3. Haga clic en la pestaña Interfaces web para ver una lista de enlaces de pasarela de componentes a las interfaces web de los componentes predeterminados y opcionales instalados en el clúster.

      4. Haz clic en el enlace Zeppelin para abrir la interfaz web de Zeppelin.

      5. En la interfaz web de Zeppelin, haga clic en el menú anónimo y, a continuación, en Intérprete para abrir la página Intérpretes.

      6. Añade dos archivos JAR al intérprete de Zeppelin Spark de la siguiente manera:

        1. Escribe "Spark" en el cuadro Search interpreters para desplazarte a la sección del intérprete Spark.
        2. Haz clic en edit (editar).
        3. Pega lo siguiente en el campo spark.jars:

          https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar

        4. Haz clic en Guardar en la parte inferior de la sección del intérprete de Spark y, a continuación, haz clic en Aceptar para actualizar el intérprete y reiniciarlo con la nueva configuración.

      7. En el menú del cuaderno de Zeppelin, haz clic en Crear nota.

      8. En el cuadro de diálogo Crear nota, introduce un nombre para el cuaderno y acepta el intérprete spark predeterminado. Haz clic en Crear para abrir el cuaderno.

      9. Copia el siguiente código de PySpark en tu cuaderno de Zeppelin después de rellenar las variables.

        %pyspark
        from pyspark.sql import SparkSession
        project_id = "PROJECT_ID" catalog = "CATALOG_NAME" namespace = "NAMESPACE" location = "LOCATION" warehouse_dir = "gs://BUCKET/WAREHOUSE_DIRECTORY"
        spark = SparkSession.builder \ .appName("BigQuery Metastore Iceberg") \ .config(f"spark.sql.catalog.{catalog}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog}.catalog-impl", "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog") \ .config(f"spark.sql.catalog.{catalog}.gcp_project", f"{project_id}") \ .config(f"spark.sql.catalog.{catalog}.gcp_location", f"{location}") \ .config(f"spark.sql.catalog.{catalog}.warehouse", f"{warehouse_dir}") \ .getOrCreate()
        spark.sql(f"USE `{catalog}`;") spark.sql(f"CREATE NAMESPACE IF NOT EXISTS `{namespace}`;") spark.sql(f"USE `{namespace}`;")
        \# Create table and display schema (without LOCATION) spark.sql("DROP TABLE IF EXISTS example_iceberg_table") spark.sql("CREATE TABLE example_iceberg_table (id int, data string) USING ICEBERG") spark.sql("DESCRIBE example_iceberg_table;")
        \# Insert table data. spark.sql("INSERT INTO example_iceberg_table VALUES (1, 'first row');")
        \# Alter table, then display schema. spark.sql("ALTER TABLE example_iceberg_table ADD COLUMNS (newDoubleCol double);")
        \# Select and display the contents of the table. spark.sql("SELECT * FROM example_iceberg_table").show()

        Haz los cambios siguientes:

        • PROJECT_ID: tu ID de proyecto Google Cloud . Los IDs de proyecto se indican en la sección Información del proyecto del panel de control de la consola Google Cloud .
        • CATALOG_NAME y NAMESPACE: el nombre del catálogo de Iceberg y el espacio de nombres se combinan para identificar la tabla de Iceberg (catalog.namespace.table_name).
        • LOCATION: una ubicación de BigQuery admitida. La ubicación predeterminada es "US".
        • BUCKET y WAREHOUSE_DIRECTORY: segmento y carpeta de Cloud Storage que se usan como directorio de almacén de Iceberg.
      10. Haz clic en el icono de ejecución o pulsa Shift-Enter para ejecutar el código. Cuando se complete el trabajo, el mensaje de estado mostrará "Spark Job Finished" (Trabajo de Spark finalizado) y el resultado mostrará el contenido de la tabla:

      11. Ver metadatos de una tabla en BigQuery

        1. En la Google Cloud consola, ve a la página BigQuery.

          Ir a BigQuery Studio

        2. Ver los metadatos de una tabla Iceberg.