Questo documento mostra come eseguire i workload batch di Managed Service for Apache Spark SQL e PySpark per creare una tabella Apache Iceberg con metadati archiviati nel catalogo runtime lakehouse. Per informazioni su altri modi per eseguire il codice Spark, consulta Eseguire il codice PySpark in un notebook BigQuery e Eseguire un carico di lavoro Apache Spark.
Prima di iniziare
Se non l'hai ancora fatto, crea un Google Cloud progetto e un bucket Cloud Storage.
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.
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.-
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.
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.
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 per la 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 i dati del bucket vengono archiviati in modo permanente 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 includere o escludere gli oggetti, quindi 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 (per il controllo delle versioni) e specifica il numero massimo di versioni per oggetto e il numero di giorni dopo i quali scadono le versioni non correnti.
- 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 verranno criptati 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.
Concedi il ruolo Editor dati BigQuery (
roles/bigquery.dataEditor) all'account di servizio predefinito di Compute Engine,PROJECT_NUMBER-compute@developer.gserviceaccount.com. Per le istruzioni, consulta Concedi un singolo ruolo.Esempio di Google Cloud CLI:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role roles/bigquery.dataEditor
Note:
- PROJECT_ID e PROJECT_NUMBER sono elencati nella sezione Informazioni sul progetto della console Google Cloud Dashboard.
Mapping delle risorse OSS alle risorse BigQuery
Tieni presente il seguente mapping tra i termini delle risorse open source e delle risorse BigQuery:
| Risorsa OSS | Risorsa 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 del runtime Lakehouse utilizzando i workload batch Spark SQL e PySpark di Managed Service for Apache Spark.
Spark SQL
Esegui un carico di lavoro Spark SQL per creare una tabella Iceberg
I seguenti passaggi mostrano come eseguire un carico di lavoro batch Managed Service for Apache Spark SQL per creare una tabella Iceberg con i metadati della tabella archiviati nel catalogo di runtime Lakehouse.
Copia i seguenti comandi Spark SQL localmente o in Cloud Shell in un file
iceberg-table.sql.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 come directory del warehouse Iceberg.
Esegui questo comando localmente o in Cloud Shell dalla directory contenente
iceberg-table.sqlper inviare il carico di lavoro Spark SQL.gcloud dataproc batches submit spark-sql iceberg-table.sql \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_NAME \ --version=2.2 \ --subnet=SUBNET_NAME \ --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"
Note:
- PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
- REGION: una regione di Compute Engine disponibile per eseguire il carico di lavoro.
- BUCKET_NAME: il nome del bucket Cloud Storage. Spark carica
le dipendenze del workload in una cartella
/dependenciesin questo bucket prima di eseguire il workload batch. WAREHOUSE_FOLDER si trova in questo bucket. --version: Managed Service for Apache Spark runtime versione 2.2 o successive.- SUBNET_NAME: il nome di una subnet VPC in
REGION. Se ometti questo flag, Managed Service for Apache Spark seleziona la subnetdefaultnella regione della sessione. Managed Service for Apache Spark abilita l'accesso privato Google (PGA) sulla subnet. Per i requisiti di connettività di rete, consulta la sezione Configurazione di rete di Managed Service for Apache Spark. - LOCATION: una posizione BigQuery supportata. La località predefinita è "US".
--propertiesProprietà catalogo.
Visualizzare i metadati della tabella in BigQuery
Nella console Google Cloud , vai alla pagina BigQuery.
Visualizza i metadati della tabella Iceberg.
PySpark
I seguenti passaggi mostrano come eseguire un carico di lavoro batch PySpark di Managed Service for Apache Spark per creare una tabella Iceberg con i metadati della tabella archiviati nel catalogo del runtime della lakehouse.
- Copia il seguente codice PySpark localmente o in
Cloud Shell
in un file
iceberg-table.py.from pyspark.sql import SparkSession spark = SparkSession.builder.appName("iceberg-table-example").getOrCreate() catalog = "CATALOG_NAME" namespace = "NAMESPACE" spark.sql(f"USE `{catalog}`;") spark.sql(f"CREATE NAMESPACE IF NOT EXISTS `{namespace}`;") spark.sql(f"USE `{namespace}`;") # Create table and display schema 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);") spark.sql("DESCRIBE example_iceberg_table;")
Sostituisci quanto segue:
- 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).
- CATALOG_NAME e NAMESPACE: il nome del catalogo Iceberg
e lo spazio dei nomi si combinano per identificare la tabella Iceberg (
-
Esegui il seguente comando localmente o in
Cloud Shell
dalla directory contenente
iceberg-table.pyper inviare il carico di lavoro PySpark.gcloud dataproc batches submit pyspark iceberg-table.py \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_NAME \ --version=2.2 \ --subnet=SUBNET_NAME \ --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"Note:
- PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
- REGION: una regione di Compute Engine disponibile per l'esecuzione del carico di lavoro.
- BUCKET_NAME: il nome del bucket Cloud Storage. Spark carica
le dipendenze del workload in una cartella
/dependenciesdi questo bucket prima di eseguire il workload batch. --version: Managed Service for Apache Spark runtime versione 2.2 o successive.- SUBNET_NAME: il nome di una subnet VPC in
REGION. Se ometti questo flag, Managed Service for Apache Spark seleziona la subnetdefaultnella regione della sessione. Managed Service for Apache Spark abilita l'accesso privato Google (PGA) sulla subnet. Per i requisiti di connettività di rete, vedi Configurazione di rete di Managed Service for Apache Spark. - LOCATION: una posizione BigQuery supportata. La località predefinita è "US".
- BUCKET e WAREHOUSE_FOLDER: bucket Cloud Storage e cartella utilizzati come directory del warehouse Iceberg.
--properties: Proprietà del catalogo.
- Visualizza lo schema della tabella in BigQuery.
- Nella console Google Cloud , vai alla pagina BigQuery. Vai a BigQuery Studio
- Visualizza i metadati della tabella Iceberg.