Crea una tabella Apache Iceberg con metadati nel catalogo di runtime di Lakehouse

Questo documento mostra come creare una tabella Apache Iceberg con metadati nel catalogo di runtime Lakehouse utilizzando il servizio Managed Service for Apache Spark Jobs, la CLI Spark SQL o l'interfaccia web Zeppelin in esecuzione su un cluster Managed Service for Apache Spark.

Prima di iniziare

Se non l'hai ancora fatto, crea un progetto, un bucket Cloud Storage e un cluster Managed Service for Apache Spark. Google Cloud

  1. Configurare il progetto

    1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
    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 Dataproc, BigQuery, and Cloud Storage APIs, if any are not already enabled.

      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. Install the Google Cloud CLI.

    6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    7. To initialize the gcloud CLI, run the following command:

      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 role (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, if any are not already enabled.

      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

    11. Install the Google Cloud CLI.

    12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    13. To initialize the gcloud CLI, run the following command:

      gcloud init

  2. Crea un bucket Cloud Storage nel tuo progetto.

    1. Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.

      Vai a Bucket

    2. Fai clic su Crea.
    3. Nella pagina Crea un bucket, inserisci le informazioni del bucket. Per andare al passaggio successivo, fai clic su Continua.
      1. Nella sezione Inizia, segui questi passaggi:
      2. Nella sezione Scegli dove archiviare i tuoi dati, segui questi passaggi:
        1. Seleziona un Tipo di località.
        2. Scegli una posizione in cui archiviare definitivamente i dati del bucket dal menu a discesa Tipo di località.
          • Se selezioni il tipo di località a due regioni, puoi anche scegliere di attivare la replica turbo utilizzando la casella di controllo pertinente.
        3. Per configurare la replica tra bucket, seleziona Aggiungi una replica tra bucket mediante Storage Transfer Service e segui questi passaggi:

          Configura la replica tra bucket

          1. Nel menu Bucket, seleziona un bucket.
          2. Nella sezione Impostazioni di replica, fai clic su Configura per configurare le impostazioni per il job di replica.

            Viene visualizzato il riquadro Configura replica tra bucket.

            • Per filtrare gli oggetti da replicare in base al prefisso del nome dell'oggetto, inserisci un prefisso da cui vuoi includere o escludere gli oggetti, poi fai clic su Aggiungi un prefisso.
            • Per impostare una classe di archiviazione per gli oggetti replicati, seleziona una classe di archiviazione dal menu Classe di archiviazione. Se salti questo passaggio, gli oggetti replicati utilizzeranno per impostazione predefinita la classe di archiviazione del bucket di destinazione.
            • Fai clic su Fine.
      3. Nella sezione Scegli come archiviare i tuoi dati, segui questi passaggi:
        1. Seleziona una classe di archiviazione predefinita per il bucket o Autoclass per la gestione automatica della classe di archiviazione dei dati del bucket.
        2. Per attivare lo spazio dei nomi gerarchico, nella sezione Ottimizza l'archiviazione per workload con uso intensivo dei dati, seleziona Abilita uno spazio dei nomi gerarchico in questo bucket.
      4. Nella sezione Scegli come controllare l'accesso agli oggetti, seleziona se il bucket applica o meno la prevenzione dell'accesso pubblico e seleziona un metodo di controllo dell'accesso per gli oggetti del bucket.
      5. Nella sezione Scegli come proteggere i dati degli oggetti, segui questi passaggi:
        • Seleziona una delle opzioni in Protezione dei dati che vuoi impostare per il bucket.
          • Per attivare l'eliminazione temporanea, fai clic sulla casella di controllo Policy di eliminazione temporanea (per il recupero dei dati) e specifica il numero di giorni per cui vuoi conservare gli oggetti dopo l'eliminazione.
          • Per impostare il controllo delle versioni degli oggetti, fai clic sulla casella di controllo Controllo delle versioni degli oggetti e specifica il numero massimo di versioni per oggetto e il numero di giorni dopo i quali le versioni non correnti scadono.
          • Per abilitare il criterio di conservazione su oggetti e bucket, seleziona la casella di controllo Conservazione (per la conformità), quindi procedi nel seguente modo:
            • Per attivare il blocco della conservazione degli oggetti, fai clic sulla casella di controllo Abilita conservazione degli oggetti.
            • Per attivare Bucket Lock, fai clic sulla casella di controllo Imposta criterio di conservazione del bucket e scegli un'unità di tempo e una durata per il periodo di conservazione.
        • Per scegliere come criptare i dati degli oggetti, espandi la sezione Crittografia dei dati () e seleziona un metodo di crittografia dei dati.
    4. Fai clic su Crea.

  3. Crea un cluster Managed Service for Apache Spark. Per risparmiare risorse e costi, puoi creare un cluster Managed Service for Apache Spark a nodo singolo per eseguire gli esempi presentati in questo documento.

    • La subnet nella regione in cui viene creato il cluster deve avere l'accesso privato Google (PGA) abilitato.

    • Se vuoi eseguire l'esempio di interfaccia web Zeppelin in questa guida, devi utilizzare o creare un cluster Managed Service for Apache Spark con il componente facoltativo Zeppelin abilitato.

  4. Concedi ruoli a un service account personalizzato (se necessario): per impostazione predefinita, le VM del cluster Managed Service for Apache Spark utilizzano l'account di servizio predefinito di Compute Engine per interagire con Managed Service for Apache Spark. Se vuoi specificare un service account personalizzato quando crei il cluster, questo deve disporre del ruolo Worker Managed Service for Apache Spark (roles/dataproc.worker) o di un ruolo personalizzato con le autorizzazioni necessarie per il ruolo Worker.

Mappatura del database OSS al set di dati BigQuery

Tieni presente il seguente mapping tra i termini del database open source e del set di dati BigQuery:

Database OSS Set di dati BigQuery
Spazio dei nomi, database Set di dati
Tabella partizionata o non partizionata Tabella
Visualizza Visualizza

Crea una tabella Iceberg

Questa sezione mostra come creare una tabella Iceberg con metadati nel catalogo di runtime Lakehouse inviando un codice Spark SQL a Managed Service for Apache Spark, alla CLI Spark SQL e all'interfaccia web del componente Zeppelin, che vengono eseguiti su un cluster Managed Service for Apache Spark.

Job Managed Service for Apache Spark

Puoi inviare un job a Managed Service for Apache Spark inviando il job a un cluster Managed Service for Apache Spark utilizzando la consoleGoogle Cloud o Google Cloud CLI, oppure tramite una richiesta REST HTTP o una chiamata programmatica gRPC Managed Service for Apache Spark Cloud Client Libraries all'API Jobs.

Gli esempi in questa sezione mostrano come inviare un job Spark SQL di Managed Service for Apache Spark al servizio Managed Service for Apache Spark per creare una tabella Iceberg con metadati in BigQuery utilizzando gcloud CLI, Google Cloud la console o l'API REST.

Prepara i file di job

Per creare un file di job Spark SQL, svolgi i seguenti passaggi. Il file contiene comandi Spark SQL per creare e aggiornare una tabella Iceberg.

  1. In una finestra del terminale locale o in Cloud Shell, utilizza un editor di testo, ad esempio vi o nano, per copiare i seguenti comandi in un file iceberg-table.sql, quindi salva il file nella directory corrente.

    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;
    

    Sostituisci quanto segue:

    • CATALOG_NAME: il nome del catalogo Iceberg.
    • BUCKET e WAREHOUSE_FOLDER: bucket Cloud Storage e cartella utilizzati per il warehouse Iceberg.
  2. Utilizza gcloud CLI per copiare il file locale iceberg-table.sql nel bucket in Cloud Storage.

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

Poi scarica e copia il file JAR iceberg-spark-runtime-3.5_2.12-1.6.1 in Cloud Storage.

  1. In una finestra del terminale locale o in Cloud Shell, esegui il seguente comando curl per scaricare il file JAR iceberg-spark-runtime-3.5_2.12-1.6.1 nella directory corrente.

    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. Utilizza gcloud CLI per copiare il file JAR iceberg-spark-runtime-3.5_2.12-1.6.1 locale dalla directory corrente al tuo bucket in Cloud Storage.

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

Invia il job Spark SQL

Seleziona una scheda per seguire le istruzioni per inviare il job Spark SQL a Managed Service for Apache Spark utilizzando la gcloud CLI, la consoleGoogle Cloud o l'API REST Managed Service for Apache Spark.

gcloud

  1. Esegui il seguente comando gcloud dataproc jobs submit spark-sql localmente in una finestra del terminale locale o in Cloud Shell per inviare il job Spark SQL per creare la tabella 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,BIGLAKE_ICEBERG_CATALOG_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"
    

    Note:

    • PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
    • CLUSTER_NAME: il nome del cluster Managed Service for Apache Spark.
    • REGION: la regione di Compute Engine in cui si trova il cluster.
    • BIGLAKE_ICEBERG_CATALOG_JAR: l'URI Cloud Storage del plug-in del catalogo personalizzato Iceberg da utilizzare. A seconda del numero di versione di Iceberg, seleziona una delle seguenti opzioni:
      • Iceberg 1.9.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar
      • Iceberg 1.6.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
    • CATALOG_NAME: il nome del catalogo Iceberg.
    • BUCKET e WAREHOUSE_FOLDER: bucket Cloud Storage e cartella utilizzati per il warehouse Iceberg.
    • LOCATION: una posizione BigQuery supportata. La località predefinita è "US".
    • --jars: i file JAR elencati sono necessari per creare i metadati della tabella nel catalogo di runtime di Lakehouse.
    • --properties: Proprietà del catalogo.
    • -f: Il file di job iceberg-table.sql che hai copiato nel bucket in Cloud Storage.
  2. Visualizza la descrizione della tabella nell'output del terminale al termine del job.

    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. Per visualizzare i metadati della tabella in BigQuery:

    1. Nella console Google Cloud , vai alla pagina BigQuery.

      Vai a BigQuery Studio

    2. Visualizza i metadati della tabella Iceberg.

Console

Segui questi passaggi per utilizzare la console Google Cloud per inviare il job Spark SQL a Managed Service for Apache Spark per creare una tabella Iceberg con metadati nel catalogo di runtime di Lakehouse.

  1. Nella console Google Cloud , vai a Managed Service for Apache Spark Invia un job.

    Vai alla pagina Invia un job e completa i seguenti campi:

    • ID job: accetta l'ID suggerito o inserisci il tuo ID.
    • Regione: seleziona la regione in cui si trova il cluster.
    • Cluster: seleziona il cluster.
    • Tipo di prestazione: seleziona SparkSql.
    • Tipo di origine query: seleziona Query file.
    • File di query: inserisci gs://BUCKET/iceberg-table.sql
    • File jar: inserisci quanto segue:
      gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR
      
    • BIGLAKE_ICEBERG_CATALOG_JAR: l'URI Cloud Storage del plug-in del catalogo personalizzato Iceberg da utilizzare. A seconda del numero di versione di Iceberg, seleziona una delle seguenti opzioni:
      • Iceberg 1.9.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar
      • Iceberg 1.6.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
    • Proprietà: fai clic su Aggiungi proprietà cinque volte per creare un elenco di cinque campi di input key value, poi copia le seguenti coppie Chiave e Valore per definire cinque proprietà.
      # Chiave Valore
      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
      

    Note:

    • CATALOG_NAME: il nome del catalogo Iceberg.
    • PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud nella regione in cui si trova il cluster.
    • LOCATION: una posizione BigQuery supportata. La località predefinita è "US".
    • BUCKET e WAREHOUSE_FOLDER: bucket Cloud Storage e cartella utilizzati per il warehouse Iceberg.
  2. Fai clic su Invia.

  3. Per monitorare l'avanzamento del job e visualizzare l'output, vai alla pagina Job di Managed Service for Apache Spark nella console Google Cloud , poi fai clic su Job ID per aprire la pagina Dettagli job.

  4. Per visualizzare i metadati della tabella in BigQuery:

    1. Nella console Google Cloud , vai alla pagina BigQuery.

      Vai a BigQuery Studio

    2. Visualizza i metadati della tabella Iceberg.

REST

Puoi utilizzare l'API Managed Service for Apache Spark jobs.submit per inviare il job Spark SQL a Managed Service for Apache Spark per creare una tabella Iceberg con metadati nel catalogo di runtime di Lakehouse.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
  • CLUSTER_NAME: il nome del cluster Managed Service for Apache Spark.
  • REGION: la regione Compute Engine in cui si trova il cluster.
  • CATALOG_NAME: il nome del catalogo Iceberg.
  • BUCKET e WAREHOUSE_FOLDER: bucket Cloud Storage e cartella utilizzati per il warehouse Iceberg.
  • LOCATION: una posizione BigQuery supportata. La località predefinita è "US".
  • BIGLAKE_ICEBERG_CATALOG_JAR: l'URI Cloud Storage del plug-in del catalogo personalizzato Iceberg da utilizzare. A seconda del numero di versione di Iceberg, seleziona una delle seguenti opzioni:
    • Iceberg 1.9.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar
    • Iceberg 1.6.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
  • jarFileUris: i file JAR elencati sono necessari per creare i metadati della tabella in BigQuery Metastore.
  • properties: Proprietà del catalogo.
  • queryFileUri: Il file di job iceberg-table.sql che hai copiato nel bucket in Cloud Storage.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "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.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR"
      ],
      "scriptVariables": {},
      "queryFileUri": "gs://BUCKET/iceberg-table.sql"
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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.6.1.jar",
      "BIGLAKE_ICEBERG_CATALOG_JAR"
    ]
  },
  "driverControlFilesUri": "gs://dataproc-...",
  "driverOutputResourceUri": "gs://dataproc-.../driveroutput",
  "jobUuid": "...",
  "region": "REGION"
}

Per monitorare l'avanzamento del job e visualizzare l'output, vai alla pagina Job di Managed Service for Apache Spark nella console Google Cloud , poi fai clic su Job ID per aprire la pagina Dettagli job.

Per visualizzare i metadati della tabella in BigQuery:

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery Studio

  2. Visualizza i metadati della tabella Iceberg.

Interfaccia a riga di comando Spark SQL

I seguenti passaggi mostrano come creare una tabella Iceberg con metadati della tabella memorizzati nel catalogo di runtime Lakehouse utilizzando la CLI Spark SQL in esecuzione sul nodo master di un cluster Managed Service for Apache Spark.

  1. Utilizza SSH per connetterti al nodo master del cluster Managed Service for Apache Spark.

  2. Nel terminale della sessione SSH, utilizza l'editor di testo vi o nano per copiare i seguenti comandi in un file 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;
    

    Sostituisci quanto segue:

    • CATALOG_NAME: il nome del catalogo Iceberg.
    • BUCKET e WAREHOUSE_FOLDER: bucket Cloud Storage e cartella utilizzati per il warehouse Iceberg.
  3. Nel terminale della sessione SSH, esegui questo comando spark-sql per creare la tabella 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,BIGLAKE_ICEBERG_CATALOG_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
    

    Sostituisci quanto segue:

    • BIGLAKE_ICEBERG_CATALOG_JAR: l'URI Cloud Storage del plug-in del catalogo personalizzato Iceberg da utilizzare. A seconda del numero di versione di Iceberg, seleziona una delle seguenti opzioni:
      • Iceberg 1.9.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar
      • Iceberg 1.6.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
    • PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
    • LOCATION: una posizione BigQuery supportata. La località predefinita è "US".
  4. Visualizzare i metadati della tabella in BigQuery

    1. Nella console Google Cloud , vai alla pagina BigQuery.

      Vai a BigQuery Studio

    2. Visualizza i metadati della tabella Iceberg.

Interfaccia web di Zeppelin

I seguenti passaggi mostrano come creare una tabella Iceberg con metadati della tabella archiviati nel catalogo di runtime Lakehouse utilizzando l'interfaccia web Zeppelin in esecuzione sul nodo master di un cluster Managed Service for Apache Spark .

  1. Nella console Google Cloud , vai alla pagina Cluster di Managed Service for Apache Spark.

    Vai alla pagina Cluster Managed Service for Apache Spark

  2. Seleziona il nome del cluster per aprire la pagina Dettagli cluster.

  3. Fai clic sulla scheda Interfacce web per visualizzare un elenco di link al gateway dei componenti alle interfacce web dei componenti predefiniti e facoltativi installati sul cluster.

  4. Fai clic sul link Zeppelin per aprire l'interfaccia web di Zeppelin.

  5. Nell'interfaccia web di Zeppelin, fai clic sul menu anonimo, poi su Interprete per aprire la pagina Interpreti.

  6. Aggiungi due file JAR all'interprete Zeppelin Spark, nel seguente modo:

    1. Digita "Spark" nella casella Search interpreters per scorrere fino alla sezione dell'interprete Spark.
    2. Fai clic su edit (modifica).
    3. Incolla quanto segue nel 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,BIGLAKE_ICEBERG_CATALOG_JAR

    4. Aggiungi la seguente nota:

      • BIGLAKE_ICEBERG_CATALOG_JAR: l'URI Cloud Storage del plug-in del catalogo personalizzato Iceberg da utilizzare. A seconda del numero di versione di Iceberg, seleziona una delle seguenti opzioni:
      • Iceberg 1.9.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar
      • Iceberg 1.6.1: gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
    5. Fai clic su Salva nella parte inferiore della sezione dell'interprete Spark, quindi fai clic su Ok per aggiornare l'interprete e riavviarlo con le nuove impostazioni.

  7. Nel menu del notebook Zeppelin, fai clic su Crea nuova nota.

  8. Nella finestra di dialogo Crea nuovo blocco note, inserisci un nome per il notebook e accetta l'interprete spark predefinito. Fai clic su Crea per aprire il notebook.

  9. Copia il seguente codice PySpark nel notebook Zeppelin dopo aver compilato le variabili.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
    • CATALOG_NAME e NAMESPACE: il nome del catalogo Iceberg e lo spazio dei nomi si combinano per identificare la tabella Iceberg (catalog.namespace.table_name).
    • LOCATION: una posizione BigQuery supportata. La località predefinita è "US".
    • BUCKET e WAREHOUSE_DIRECTORY: bucket Cloud Storage e cartella utilizzati come directory del warehouse Iceberg.
  10. Fai clic sull'icona di esecuzione o premi Shift-Enter per eseguire il codice. Al termine del job, il messaggio di stato indica "Spark Job Finished" e l'output mostra i contenuti della tabella:

  11. Visualizzare i metadati della tabella in BigQuery

    1. Nella console Google Cloud , vai alla pagina BigQuery.

      Vai a BigQuery Studio

    2. Visualizza i metadati della tabella Iceberg.