Crie uma tabela Apache Iceberg com metadados no metastore do BigLake

Este documento mostra como criar uma tabela Apache Iceberg com metadados no metastore do BigLake através do serviço Dataproc Jobs, da CLI do Spark SQL ou da interface Web do Zeppelin em execução num cluster do Dataproc.

Antes de começar

Se ainda não o fez, crie um Google Cloud projeto, um contentor do Cloud Storage e um cluster do Dataproc.

  1. Configure o seu projeto

    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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

    7. Para inicializar a CLI gcloud, execute o seguinte 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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

    13. Para inicializar a CLI gcloud, execute o seguinte comando:

      gcloud init
    14. Crie um contentor do Cloud Storage no seu projeto.

      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. Crie um cluster do Dataproc. Para poupar recursos e custos, pode criar um cluster Dataproc de nó único para executar os exemplos apresentados neste documento.

    16. Conceda funções a uma conta de serviço personalizada (se necessário): por predefinição, as VMs do cluster do Dataproc usam a conta de serviço predefinida do Compute Engine para interagir com o Dataproc. Se quiser especificar uma conta de serviço personalizada quando criar o cluster, esta tem de ter a função Dataproc Worker (roles/dataproc.worker) ou uma função personalizada com as autorizações da função Worker necessárias.

    17. Mapeamento da base de dados de software de código aberto para o conjunto de dados do BigQuery

      Tenha em atenção o seguinte mapeamento entre a base de dados de código aberto e os termos do conjunto de dados do BigQuery:

      Base de dados de OSS Conjunto de dados do BigQuery
      Espaço de nomes, base de dados Conjunto de dados
      Tabela particionada ou não particionada Tabela
      Ver Ver

      Crie uma tabela Iceberg

      Esta secção mostra-lhe como criar uma tabela Iceberg com metadados no metastore do BigLake enviando um código Spark SQL para o serviço Dataproc, a CLI Spark SQL e a interface Web do componente Zeppelin, que são executados num cluster Dataproc.

      Tarefa do Dataproc

      Pode enviar uma tarefa para o serviço Dataproc enviando a tarefa para um cluster do Dataproc através da Google Cloud consola ou da CLI do Google Cloud, ou através de um pedido REST HTTP ou de uma chamada programática gRPC do Dataproc Cloud Client Libraries para a API Dataproc Jobs.

      Os exemplos nesta secção mostram como enviar uma tarefa do Spark SQL do Dataproc para o serviço do Dataproc para criar uma tabela do Iceberg com metadados no BigQuery através da CLI gcloud, da consola ou da API REST do Dataproc. Google Cloud

      Prepare ficheiros de tarefas

      Siga os passos abaixo para criar um ficheiro de tarefa do Spark SQL. O ficheiro contém comandos SQL do Spark para criar e atualizar uma tabela Iceberg.

      1. Numa janela de terminal local ou no Cloud Shell, use um editor de texto, como o vi ou o nano, para copiar os seguintes comandos para um ficheiro iceberg-table.sql e, em seguida, guarde o ficheiro no diretório atual.

        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;
        

        Substitua o seguinte:

        • CATALOG_NAME: nome do catálogo do Iceberg.
        • BUCKET e WAREHOUSE_FOLDER: contentor do Cloud Storage e pasta usados para o armazém do Iceberg.
      2. Use a CLI gcloud para copiar o ficheiro local iceberg-table.sql para o seu contentor no Cloud Storage.

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

      Em seguida, transfira e copie o ficheiro iceberg-spark-runtime-3.5_2.12-1.6.1 JAR para o armazenamento na nuvem.

      1. Numa janela de terminal local ou no Cloud Shell, execute o seguinte comando curl para transferir o ficheiro JAR iceberg-spark-runtime-3.5_2.12-1.6.1 para o diretório atual.

        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 a CLI gcloud para copiar o ficheiro JAR iceberg-spark-runtime-3.5_2.12-1.6.1 local do diretório atual para o seu contentor no Cloud Storage.

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

      Envie a tarefa Spark SQL

      Selecione um separador para seguir as instruções de envio da tarefa Spark SQL para o serviço Dataproc através da CLI gcloud, da consola ou da API REST Dataproc.Google Cloud

      gcloud

      1. Execute o seguinte comando gcloud dataproc jobs submit spark-sql localmente numa janela de terminal local ou no Cloud Shell para enviar a tarefa Spark SQL para criar a tabela 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: o ID do seu Google Cloud projeto. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controloda consola.
        • CLUSTER_NAME: o nome do seu cluster do Dataproc.
        • REGION: a região do Compute Engine onde o cluster está localizado.
        • CATALOG_NAME: nome do catálogo do Iceberg.
        • BUCKET e WAREHOUSE_FOLDER: contentor do Cloud Storage e pasta usados para o armazém do Iceberg.
        • LOCATION: uma localização do BigQuery suportada. A localização predefinida é "US".
        • --jars: os JARs indicados são necessários para criar metadados de tabelas no metastore do BigLake.
        • --properties: Propriedades do catálogo.
        • -f: o ficheiro de tarefa iceberg-table.sql que copiou para o seu contentor no Cloud Storage.
      2. Veja a descrição da tabela no resultado do terminal quando a tarefa terminar.

        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 os metadados da tabela no BigQuery

        1. Na Google Cloud consola, aceda à página BigQuery.

          Aceda ao BigQuery Studio

        2. Ver metadados da tabela Iceberg.

      Consola

      Siga os passos abaixo para usar a Google Cloud consola para enviar a tarefa Spark SQL para o serviço Dataproc de modo a criar uma tabela Iceberg com metadados no metastore do BigLake.

      1. Na Google Cloud consola, aceda a Dataproc Enviar uma tarefa.

        Aceda à página Envie um trabalho e, de seguida, preencha os seguintes campos:

        • ID da tarefa: aceite o ID sugerido ou insira o seu próprio ID.
        • Região: selecione a região onde o cluster está localizado.
        • Cluster: selecione o seu cluster.
        • Tipo de serviço: selecione SparkSql.
        • Tipo de origem da consulta: selecione Query file.
        • Ficheiro de consulta: inserir gs://BUCKET/iceberg-table.sql
        • Ficheiros JAR: insira o seguinte:
          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
          
        • Propriedades: clique em Adicionar propriedade cinco vezes para criar uma lista de cinco campos de entrada key value e, de seguida, copie os seguintes pares de chave e valor para definir cinco propriedades.
          # Chave 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: nome do catálogo do Iceberg.
        • PROJECT_ID: o ID do seu Google Cloud projeto. Os IDs dos projetos estão listados na secção Informações do projeto no painel de controlo da consola. região onde o cluster está localizado. Google Cloud
        • LOCATION: uma localização do BigQuery suportada. A localização predefinida é "US".
        • BUCKET e WAREHOUSE_FOLDER: contentor do Cloud Storage e pasta usados para o armazém do Iceberg.
      2. Clique em Enviar

      3. Para monitorizar o progresso da tarefa e ver o resultado da tarefa, aceda à página Tarefas do Dataproc na Google Cloud consolaJob ID e, de seguida, clique em Job ID para abrir a página Detalhes da tarefa.

      4. Para ver os metadados da tabela no BigQuery

        1. Na Google Cloud consola, aceda à página BigQuery.

          Aceda ao BigQuery Studio

        2. Ver metadados da tabela Iceberg.

      REST

      Pode usar a API Dataproc jobs.submit para enviar a tarefa Spark SQL para o serviço Dataproc para criar uma tabela Iceberg com metadados no metastore do BigLake.

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controlo da consola.
      • CLUSTER_NAME: o nome do seu cluster do Dataproc.
      • REGION: a região do Compute Engine onde o cluster está localizado.
      • CATALOG_NAME: nome do catálogo do Iceberg.
      • BUCKET e WAREHOUSE_FOLDER: contentor do Cloud Storage e pasta usados para o armazém Iceberg.
      • LOCATION: uma localização do BigQuery suportada. A localização predefinida é "US".
      • jarFileUris: Os ficheiros JAR indicados são necessários para criar metadados de tabelas no BigQuery Metastore.
      • properties: Propriedades do catálogo.
      • queryFileUri: o ficheiro de tarefa iceberg-table.sql que copiou para o seu contentor no Cloud Storage.

      Método HTTP e URL:

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

      Corpo JSON do pedido:

      {
        "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 o seu pedido, expanda uma destas opções:

      Deve receber uma resposta JSON semelhante à seguinte:

      {
        "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 o progresso da tarefa e ver o resultado da tarefa, aceda à página Tarefas do Dataproc na Google Cloud consolaJob ID e, de seguida, clique em Job ID para abrir a página Detalhes da tarefa.

      Para ver os metadados da tabela no BigQuery

      1. Na Google Cloud consola, aceda à página BigQuery.

        Aceda ao BigQuery Studio

      2. Ver metadados da tabela Iceberg.

      CLI do Spark SQL

      Os passos seguintes mostram como criar uma tabela Iceberg com metadados da tabela armazenados no metastore do BigLake através da CLI do Spark SQL executada no nó principal de um cluster do Dataproc.

      1. Use o SSH para estabelecer ligação ao nó principal do cluster do Dataproc.

      2. No terminal da sessão SSH, use o editor de texto vi ou nano para copiar os seguintes comandos para um ficheiro 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;
        

        Substitua o seguinte:

        • CATALOG_NAME: nome do catálogo do Iceberg.
        • BUCKET e WAREHOUSE_FOLDER: contentor do Cloud Storage e pasta usados para o armazém do Iceberg.
      3. No terminal da sessão SSH, execute o seguinte comando spark-sql para criar a tabela 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
        

        Substitua o seguinte:

        • PROJECT_ID: o ID do seu Google Cloud projeto. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controloda consola.
        • LOCATION: uma localização do BigQuery suportada. A localização predefinida é "US".
      4. Veja os metadados da tabela no BigQuery

        1. Na Google Cloud consola, aceda à página BigQuery.

          Aceda ao BigQuery Studio

        2. Ver metadados da tabela Iceberg.

      Interface Web do Zeppelin

      Os passos seguintes mostram como criar uma tabela Iceberg com metadados da tabela armazenados no metastore do BigLake através da interface Web do Zeppelin executada no nó principal de um cluster do Dataproc .

      1. Na Google Cloud consola, aceda à página Clusters do Dataproc.

        Aceda à página Clusters do Dataproc

      2. Selecione o nome do cluster para abrir a página Detalhes do cluster.

      3. Clique no separador Interfaces Web para apresentar uma lista de links do Component Gateway para as interfaces Web dos componentes predefinidos e opcionais instalados no cluster.

      4. Clique no link Zeppelin para abrir a interface Web do Zeppelin.

      5. Na interface Web do Zeppelin, clique no menu anónimo e, de seguida, clique em Interpreter para abrir a página Interpreters.

      6. Adicione dois ficheiros JAR ao intérprete do Zeppelin Spark da seguinte forma:

        1. Escreva "Spark" na caixa Search interpreters para deslocar a página até à secção do intérprete Spark.
        2. Clique em Editar.
        3. Cole o seguinte no 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. Clique em Guardar na parte inferior da secção do intérprete do Spark e, de seguida, clique em OK para atualizar o intérprete e reiniciar o intérprete do Spark com as novas definições.

      7. No menu do notebook Zeppelin, clique em Criar nova nota.

      8. Na caixa de diálogo Criar nova nota, introduza um nome para o notebook e aceite o intérprete spark predefinido. Clique em Criar para abrir o bloco de notas.

      9. Copie o código PySpark seguinte para o bloco de notas do Zeppelin depois de preencher as variáveis.

        %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()

        Substitua o seguinte:

        • PROJECT_ID: o ID do seu Google Cloud projeto. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controloda consola.
        • CATALOG_NAME e NAMESPACE: o nome do catálogo e o espaço de nomes do Iceberg combinam-se para identificar a tabela Iceberg (catalog.namespace.table_name).
        • LOCATION: uma localização do BigQuery suportada. A localização predefinida é "US".
        • BUCKET e WAREHOUSE_DIRECTORY: bucket do Cloud Storage e pasta usados como diretório do armazém do Iceberg.
      10. Clique no ícone de execução ou prima Shift-Enter para executar o código. Quando a tarefa estiver concluída, a mensagem de estado mostra "Spark Job Finished" e a saída apresenta o conteúdo da tabela:

      11. Veja os metadados da tabela no BigQuery

        1. Na Google Cloud consola, aceda à página BigQuery.

          Aceda ao BigQuery Studio

        2. Ver metadados da tabela Iceberg.