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
Configurare il progetto
- 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.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Crea un bucket Cloud Storage nel tuo progetto.
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
- Fai clic su Crea.
- Nella pagina Crea un bucket, inserisci le informazioni del bucket. Per andare al passaggio
successivo, fai clic su Continua.
-
Nella sezione Inizia, segui questi passaggi:
- Inserisci un nome univoco globale che soddisfi i requisiti di denominazione dei bucket.
- Per aggiungere un'etichetta bucket, espandi la sezione Etichette (), fai clic su add_box
Aggiungi etichetta e specifica un
keye unvalueper l'etichetta.
-
Nella sezione Scegli dove archiviare i tuoi dati, segui questi passaggi:
- Seleziona un Tipo di località.
- 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.
- 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
- Nel menu Bucket, seleziona un bucket.
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.
-
Nella sezione Scegli come archiviare i tuoi dati, segui questi passaggi:
- Seleziona una classe di archiviazione predefinita per il bucket o Autoclass per la gestione automatica della classe di archiviazione dei dati del bucket.
- 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.
- 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.
-
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.
- Seleziona una delle opzioni in Protezione dei dati che vuoi impostare per il bucket.
-
Nella sezione Inizia, segui questi passaggi:
- Fai clic su Crea.
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.
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.
In una finestra del terminale locale o in Cloud Shell, utilizza un editor di testo, ad esempio
vionano, per copiare i seguenti comandi in un fileiceberg-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.
Utilizza gcloud CLI per copiare il file locale
iceberg-table.sqlnel 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.
In una finestra del terminale locale o in Cloud Shell, esegui il seguente comando
curlper scaricare il file JARiceberg-spark-runtime-3.5_2.12-1.6.1nella 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
Utilizza gcloud CLI per copiare il file JAR
iceberg-spark-runtime-3.5_2.12-1.6.1locale 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
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
- Iceberg 1.9.1:
- 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 jobiceberg-table.sqlche hai copiato nel bucket in Cloud Storage.
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.
Per visualizzare i metadati della tabella in BigQuery:
Nella console Google Cloud , vai alla pagina BigQuery.
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.
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
- Iceberg 1.9.1:
- Proprietà: fai clic su Aggiungi proprietà
cinque volte per creare un elenco di cinque campi di input
keyvalue, poi copia le seguenti coppie Chiave e Valore per definire cinque proprietà.# Chiave Valore 1. spark.sql.catalog.CATALOG_NAMEorg.apache.iceberg.spark.SparkCatalog2. spark.sql.catalog.CATALOG_NAME.catalog-implorg.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog3. spark.sql.catalog.CATALOG_NAME.gcp_projectPROJECT_ID4. spark.sql.catalog.CATALOG_NAME.gcp_locationLOCATION5. spark.sql.catalog.CATALOG_NAME.warehousegs://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.
Fai clic su Invia.
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 IDper aprire la pagina Dettagli job.
Per visualizzare i metadati della tabella in BigQuery:
Nella console Google Cloud , vai alla pagina BigQuery.
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
- Iceberg 1.9.1:
jarFileUris: i file JAR elencati sono necessari per creare i metadati della tabella in BigQuery Metastore.properties: Proprietà del catalogo.queryFileUri: Il file di jobiceberg-table.sqlche 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:
Nella console Google Cloud , vai alla pagina BigQuery.
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.
Utilizza SSH per connetterti al nodo master del cluster Managed Service for Apache Spark.
Nel terminale della sessione SSH, utilizza l'editor di testo
vionanoper copiare i seguenti comandi in un fileiceberg-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.
Nel terminale della sessione SSH, esegui questo comando
spark-sqlper 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
- Iceberg 1.9.1:
- 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".
Visualizzare i metadati della tabella in BigQuery
Nella console Google Cloud , vai alla pagina BigQuery.
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 .
Nella console Google Cloud , vai alla pagina Cluster di Managed Service for Apache Spark.
Seleziona il nome del cluster per aprire la pagina Dettagli cluster.
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.
Fai clic sul link Zeppelin per aprire l'interfaccia web di Zeppelin.
Nell'interfaccia web di Zeppelin, fai clic sul menu anonimo, poi su Interprete per aprire la pagina Interpreti.
Aggiungi due file JAR all'interprete Zeppelin Spark, nel seguente modo:
- Digita "Spark" nella casella
Search interpretersper scorrere fino alla sezione dell'interprete Spark. - Fai clic su edit (modifica).
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
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
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.
- Digita "Spark" nella casella
Nel menu del notebook Zeppelin, fai clic su Crea nuova nota.
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.
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.
Fai clic sull'icona di esecuzione o premi
Shift-Enterper eseguire il codice. Al termine del job, il messaggio di stato indica "Spark Job Finished" e l'output mostra i contenuti della tabella:
Visualizzare i metadati della tabella in BigQuery
Nella console Google Cloud , vai alla pagina BigQuery.
Visualizza i metadati della tabella Iceberg.