In diesem Dokument wird beschrieben, wie Sie Dataproc Serverless für Spark SQL- und PySpark-Batch-Arbeitslasten ausführen, um eine Apache Iceberg-Tabelle mit Metadaten zu erstellen, die im BigQuery Metastore gespeichert sind. Informationen zu anderen Möglichkeiten zum Ausführen von Spark-Code finden Sie unter PySpark-Code in einem BigQuery-Notebook ausführen und Apache Spark-Arbeitslast ausführen.
Hinweise
Erstellen Sie ein Google Cloud -Projekt und einen Cloud Storage-Bucket, falls noch nicht geschehen.
Projekt einrichten
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Dataproc, BigQuery, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Dataproc, BigQuery, and Cloud Storage APIs.
Erstellen Sie einen Cloud Storage-Bucket in Ihrem Projekt.
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Gewähren Sie der Compute Engine-Standarddienstkonto-ID
PROJECT_NUMBER-compute@developer.gserviceaccount.com
die Rolle BigQuery-Datenbearbeiter (roles/bigquery.dataEditor
). Eine Anleitung finden Sie unter Einzelne Rolle zuweisen.Beispiel für die Google Cloud CLI:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role roles/bigquery.dataEditor
Hinweise:
- PROJECT_ID und PROJECT_NUMBER sind im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
Achten Sie darauf, dass für das regionale VPC-Subnetz, in dem Sie Ihre Dataproc Serverless-Batcharbeitslast ausführen, der private Google-Zugriff aktiviert ist. Weitere Informationen finden Sie unter Iceberg-Tabelle erstellen.
Zuordnung von Open-Source-Ressourcen zu BigQuery-Ressourcen
Beachten Sie die folgende Zuordnung zwischen Open-Source-Ressourcen und BigQuery-Ressourcen:
OSS-Ressource | BigQuery-Ressource |
---|---|
Namespace, Datenbank | Dataset |
Partitionierte oder nicht partitionierte Tabelle | Tabelle |
Ansehen | Ansehen |
Iceberg-Tabelle erstellen
In diesem Abschnitt erfahren Sie, wie Sie mit Dataproc Serverless Spark SQL- und PySpark-Batch-Arbeitslasten eine Iceberg-Tabelle mit Metadaten im BigQuery Metastore erstellen.
Spark SQL
Spark SQL-Arbeitslast ausführen, um eine Iceberg-Tabelle zu erstellen
In den folgenden Schritten wird gezeigt, wie Sie eine Dataproc Serverless Spark SQL-Batcharbeitslast ausführen, um eine Iceberg-Tabelle mit Tabellenmetadaten zu erstellen, die im BigQuery Metastore gespeichert sind.
Kopieren Sie die folgenden Spark SQL-Befehle lokal oder in Cloud Shell in eine
iceberg-table.sql
-Datei.USE CATALOG_NAME; CREATE NAMESPACE IF NOT EXISTS 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;
Ersetzen Sie Folgendes:
- CATALOG_NAME: Name des Iceberg-Katalogs.
- BUCKET und WAREHOUSE_FOLDER: Cloud Storage-Bucket und -Ordner, die als Iceberg-Lagerverzeichnis verwendet werden.
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus dem Verzeichnis mit
iceberg-table.sql
aus, um die Spark SQL-Arbeitslast einzureichen.gcloud dataproc batches submit spark-sql iceberg-table.sql \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_NAME \ --version=2.2 \ --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/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"
Hinweise:
- PROJECT_ID: Die Projekt-ID Ihres Google Cloud -Abos. Projekt-IDs werden im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- REGION: Eine verfügbare Compute Engine-Region zum Ausführen der Arbeitslast.
- BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets Spark lädt Arbeitslastabhängigkeiten in einen
/dependencies
-Ordner in diesem Bucket hoch, bevor die Batcharbeitslast ausgeführt wird. Die WAREHOUSE_FOLDER befindet sich in diesem Bucket. - SUBNET_NAME: Der Name eines VPC-Subnetzes in der
REGION
, für das der private Google-Zugriff aktiviert ist und das die anderen Anforderungen an ein Sitzungssubnetz erfüllt. - LOCATION: Ein unterstützter BigQuery-Speicherort. Der Standardstandort ist „USA“.
--version
:Dataproc Serverless-Laufzeitversion 2.2 oder höher.--properties
Katalogeigenschaften.
Tabellenmetadaten in BigQuery ansehen
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Metadaten von Iceberg-Tabellen ansehen
PySpark
In den folgenden Schritten wird gezeigt, wie Sie eine serverlose Dataproc-PySpark-Batcharbeitslast ausführen, um eine Iceberg-Tabelle mit Tabellenmetadaten zu erstellen, die im BigQuery Metastore gespeichert sind.
- Kopieren Sie den folgenden PySpark-Code lokal oder in Cloud Shell in eine
iceberg-table.py
-Datei.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;")
Ersetzen Sie Folgendes:
- CATALOG_NAME und NAMESPACE: Der Name und der Namespace des Iceberg-Katalogs werden kombiniert, um die Iceberg-Tabelle (
catalog.namespace.table_name
) zu identifizieren.
- CATALOG_NAME und NAMESPACE: Der Name und der Namespace des Iceberg-Katalogs werden kombiniert, um die Iceberg-Tabelle (
-
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus dem Verzeichnis mit
iceberg-table.py
aus, um die PySpark-Arbeitslast einzureichen.gcloud dataproc batches submit pyspark iceberg-table.py \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_NAME \ --version=2.2 \ --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/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"
Hinweise:
- PROJECT_ID: Die Projekt-ID Ihres Google Cloud -Abos. Projekt-IDs werden im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- REGION: Eine verfügbare Compute Engine-Region zum Ausführen der Arbeitslast.
- BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets Spark lädt Arbeitslastabhängigkeiten in einen
/dependencies
-Ordner in diesem Bucket hoch, bevor die Batcharbeitslast ausgeführt wird. - SUBNET_NAME: Der Name eines VPC-Subnetzes in
REGION
, für das der private Google-Zugriff aktiviert ist und das die anderen Anforderungen an ein Sitzungssubnetz erfüllt. --version
:Dataproc Serverless-Laufzeitversion 2.2 oder höher.- LOCATION: Ein unterstützter BigQuery-Standort. Der Standardstandort ist „USA“.
- BUCKET und WAREHOUSE_FOLDER: Cloud Storage-Bucket und Ordner, die als Iceberg-Lagerverzeichnis verwendet werden.
--properties
: Katalogeigenschaften
- Rufen Sie das Tabellenschema in BigQuery auf.
- Öffnen Sie in der Google Cloud Console die Seite BigQuery. Zu BigQuery Studio
- Metadaten von Iceberg-Tabellen ansehen