In diesem Dokument wird beschrieben, wie Sie mit dem Dienst „Managed Service for Apache Spark-Jobs“, der Spark SQL-Befehlszeile oder der Zeppelin-Weboberfläche, die auf einem Managed Service for Apache Spark-Cluster ausgeführt wird, eine Apache Iceberg-Tabelle mit Metadaten im Lakehouse-Laufzeitkatalog erstellen.
Hinweis
Falls noch nicht geschehen, erstellen Sie ein Google Cloud Projekt, einen Cloud Storage-Bucket und einen Managed Service for Apache Spark-Cluster.
Projekt einrichten
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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
Erstellen Sie einen Cloud Storage-Bucket in Ihrem Projekt.
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
- Klicken Sie auf Erstellen.
- Geben Sie auf der Seite Bucket erstellen die Bucket-Informationen ein. Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
-
Führen Sie im Abschnitt Einstieg die folgenden Schritte aus:
- Geben Sie einen global eindeutigen Namen ein, der den Anforderungen für Bucket-Namen entspricht.
- So fügen Sie ein Bucket-Label hinzu: Maximieren Sie den Bereich Labels (), klicken Sie auf add_box
Label hinzufügen und geben Sie
keyundvaluefür Ihr Label an.
-
Gehen Sie im Bereich Speicherort für Daten auswählen so vor:
- Standorttyp auswählen.
- Wählen Sie im Drop-down-Menü Standorttyp einen Standort aus, an dem die Daten Ihres Buckets dauerhaft gespeichert werden.
- Wenn Sie den Standorttyp Dual-Region auswählen, können Sie auch die Turboreplikation aktivieren, indem Sie das entsprechende Kästchen anklicken.
- Wenn Sie die Bucket-übergreifende Replikation einrichten möchten, wählen Sie Bucket-übergreifende Replikation über Storage Transfer Service hinzufügen aus und führen Sie die folgenden Schritte aus:
Bucket-übergreifende Replikation einrichten
- Wählen Sie im Menü Bucket einen Bucket aus.
Klicken Sie im Bereich Replikationseinstellungen auf Konfigurieren, um die Einstellungen für den Replikationsjob zu konfigurieren.
Der Bereich Bucket-übergreifende Replikation konfigurieren wird angezeigt.
- Wenn Sie die zu replizierenden Objekte nach dem Objektnamenspräfix filtern möchten, geben Sie ein Präfix ein, mit dem Sie Objekte ein- oder ausschließen möchten, und klicken Sie dann auf Präfix hinzufügen.
- Wenn Sie eine Speicherklasse für die replizierten Objekte festlegen möchten, wählen Sie im Menü Speicherklasse eine Speicherklasse aus. Wenn Sie diesen Schritt überspringen, wird für replizierte Objekte standardmäßig die Speicherklasse des Ziel-Buckets verwendet.
- Klicken Sie auf Fertig.
-
Gehen Sie im Bereich Speicherort für Daten auswählen so vor:
- Wählen Sie eine Standardspeicherklasse für den Bucket oder Autoclass für die automatische Speicherklassenverwaltung der Daten Ihres Buckets aus.
- Wenn Sie den hierarchischen Namespace aktivieren möchten, wählen Sie im Bereich Speicher für datenintensive Arbeitslasten optimieren die Option Hierarchischen Namespace für diesen Bucket aktivieren aus.
- Wählen Sie im Abschnitt Zugriff auf Objekte steuern aus, ob der Bucket Verhinderung des öffentlichen Zugriffs durchsetzt, und wählen Sie eine Zugriffssteuerungsmethode für die Objekte Ihres Buckets aus.
-
Führen Sie im Bereich Auswählen, wie Objektdaten geschützt werden die folgenden Schritte aus:
- Wählen Sie unter Datenschutz die gewünschten Optionen für Ihren Bucket aus.
- Klicken Sie zum Aktivieren des vorläufigen Löschens das Kästchen Richtlinie für vorläufiges Löschen (zur Datenwiederherstellung) an und geben Sie die Anzahl der Tage an, die Sie Objekte nach dem Löschen aufbewahren möchten.
- Wenn Sie die Objektversionsverwaltung festlegen möchten, klicken Sie das Kästchen Objektversionsverwaltung (zur Versionsverwaltung) an und geben Sie die maximale Anzahl von Versionen pro Objekt und die Anzahl der Tage an, nach denen die nicht aktuellen Versionen ablaufen.
- Klicken Sie das Kästchen Aufbewahrung (zur Einhaltung von Vorschriften) an, um die Aufbewahrungsrichtlinie für Objekte und Buckets zu aktivieren, und gehen Sie dann so vor:
- Klicken Sie auf das Kästchen Objektaufbewahrung aktivieren, um die Objektaufbewahrungssperre zu aktivieren.
- Wenn Sie Bucket Lock aktivieren möchten, klicken Sie das Kästchen Bucket-Aufbewahrungsrichtlinie festlegen an und wählen Sie eine Zeiteinheit und eine Zeitdauer für die Aufbewahrungsdauer aus.
- Um auszuwählen, wie Ihre Objektdaten verschlüsselt werden, maximieren Sie den Bereich Datenverschlüsselung () und wählen Sie eine Methode für die Datenverschlüsselung aus.
- Wählen Sie unter Datenschutz die gewünschten Optionen für Ihren Bucket aus.
-
Führen Sie im Abschnitt Einstieg die folgenden Schritte aus:
- Klicken Sie auf Erstellen.
Managed Service for Apache Spark-Cluster erstellen Um Ressourcen und Kosten zu sparen, können Sie einen Managed Service for Apache Spark-Cluster mit einem Knoten erstellen, um die in diesem Dokument vorgestellten Beispiele auszuführen.
Für das Subnetz in der Region, in der der Cluster erstellt wird, muss privater Google-Zugriff (Private Google Access, PGA) aktiviert sein.
.Wenn Sie das Beispiel für die Zeppelin-Weboberfläche in dieser Anleitung ausführen möchten, müssen Sie einen Managed Service for Apache Spark-Cluster mit der optionalen Zeppelin-Komponente verwenden oder erstellen.
Benutzerdefinierten Dienstkonten Rollen zuweisen (falls erforderlich): Standardmäßig verwenden Managed Service for Apache Spark-Clustervirtualmaschinen das Compute Engine-Standarddienstkonto für die Interaktion mit Managed Service for Apache Spark. Wenn Sie beim Erstellen des Clusters ein benutzerdefiniertes Dienstkonto angeben möchten, muss es die Rolle Managed Service for Apache Spark-Worker (
roles/dataproc.worker) oder eine benutzerdefinierte Rolle mit den erforderlichen Berechtigungen für die Worker-Rolle haben.
Zuordnung von OSS-Datenbanken zu BigQuery-Datasets
Beachten Sie die folgende Zuordnung zwischen Begriffen für Open-Source-Datenbanken und BigQuery-Datasets:
| OSS-Datenbank | BigQuery-Dataset |
|---|---|
| Namespace, Datenbank | Dataset |
| Partitionierte oder nicht partitionierte Tabelle | Tabelle |
| Ansehen | Ansehen |
Iceberg-Tabelle erstellen
In diesem Abschnitt wird gezeigt, wie Sie eine Iceberg-Tabelle mit Metadaten im Lakehouse-Laufzeitkatalog erstellen, indem Sie Spark SQL-Code an Managed Service for Apache Spark, die Spark SQL-Befehlszeile und die Weboberfläche der Zeppelin-Komponente senden, die in einem Managed Service for Apache Spark-Cluster ausgeführt werden.
Managed Service for Apache Spark-Job
Sie können einen Job für Managed Service for Apache Spark einreichen, indem Sie den Job für einen Managed Service for Apache Spark-Cluster einreichen. Verwenden Sie dazu die Google Cloud -Konsole oder die Google Cloud CLI oder senden Sie einen HTTP-REST-Aufruf oder einen programmatischen gRPC-Aufruf der Cloud-Clientbibliotheken für Managed Service for Apache Spark an die Jobs API.
In den Beispielen in diesem Abschnitt wird gezeigt, wie Sie einen Managed Service for Apache Spark-Spark SQL-Job an den Managed Service for Apache Spark-Dienst senden, um mit der gcloud CLI, der Google Cloud Console oder der REST API eine Iceberg-Tabelle mit Metadaten in BigQuery zu erstellen.
Jobdateien vorbereiten
So erstellen Sie eine Spark SQL-Jobdatei: Die Datei enthält Spark SQL-Befehle zum Erstellen und Aktualisieren einer Iceberg-Tabelle.
Kopieren Sie in einem lokalen Terminalfenster oder in Cloud Shell mit einem Texteditor wie
viodernanodie folgenden Befehle in eine Dateiiceberg-table.sqlund speichern Sie die Datei im aktuellen Verzeichnis.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;
Ersetzen Sie Folgendes:
- CATALOG_NAME: Name des Iceberg-Katalogs.
- BUCKET und WAREHOUSE_FOLDER: Cloud Storage-Bucket und -Ordner für das Iceberg-Warehouse.
Verwenden Sie die gcloud CLI, um die lokale
iceberg-table.sqlin Ihren Bucket in Cloud Storage zu kopieren.gcloud storage cp iceberg-table.sql gs://BUCKET/
Laden Sie als Nächstes die JAR-Datei iceberg-spark-runtime-3.5_2.12-1.6.1 herunter und kopieren Sie sie in Cloud Storage.
Führen Sie in einem lokalen Terminalfenster oder in der Cloud Shell den folgenden
curl-Befehl aus, um die JAR-Dateiiceberg-spark-runtime-3.5_2.12-1.6.1in das aktuelle Verzeichnis herunterzuladen.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
Mit der gcloud CLI wird die lokale JAR-Datei
iceberg-spark-runtime-3.5_2.12-1.6.1aus dem aktuellen Verzeichnis in Ihren Bucket in Cloud Storage kopiert.gcloud storage cp iceberg-spark-runtime-3.5_2.12-1.6.1.jar gs://BUCKET/
Spark SQL-Job senden
Wählen Sie einen Tab aus, um der Anleitung zum Senden des Spark SQL-Jobs an Managed Service for Apache Spark mit der gcloud CLI, derGoogle Cloud -Konsole oder der Managed Service for Apache Spark REST API zu folgen.
gcloud
Führen Sie den folgenden gcloud dataproc jobs submit spark-sql-Befehl lokal in einem lokalen Terminalfenster oder in Cloud Shell aus, um den Spark SQL-Job zum Erstellen der Iceberg-Tabelle zu senden.
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"
Hinweise:
- PROJECT_ID: Ihre Google Cloud Projekt-ID Projekt-IDs werden im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- CLUSTER_NAME: Der Name Ihres Managed Service for Apache Spark-Clusters.
- REGION: Die Compute Engine-Region, in der sich Ihr Cluster befindet.
BIGLAKE_ICEBERG_CATALOG_JAR: Der Cloud Storage-URI des benutzerdefinierten Iceberg-Katalog-Plug-ins, das verwendet werden soll. Wählen Sie je nach Iceberg-Versionsnummer eine der folgenden Optionen aus:- 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: Name des Iceberg-Katalogs.
- BUCKET und WAREHOUSE_FOLDER: Cloud Storage-Bucket und -Ordner für das Iceberg-Warehouse.
- LOCATION: Ein unterstützter BigQuery-Standort. Der standardmäßige Standort ist „US“.
--jars: Die aufgeführten JARs sind erforderlich, um Tabellenmetadaten im Lakehouse-Laufzeitkatalog zu erstellen.--properties: Katalogeigenschaften.-f: Dieiceberg-table.sql-Jobdatei, die Sie in Ihren Bucket in Cloud Storage kopiert haben.
Die Tabellenbeschreibung wird in der Terminalausgabe angezeigt, wenn der Job abgeschlossen ist.
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.
Tabellenmetadaten in BigQuery ansehen
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Iceberg-Tabellenmetadaten ansehen.
Console
Führen Sie die folgenden Schritte aus, um den Spark SQL-Job über die Google Cloud Console an Managed Service for Apache Spark zu senden und eine Iceberg-Tabelle mit Metadaten im Lakehouse-Laufzeitkatalog zu erstellen.
Rufen Sie in der Google Cloud Console Managed Service for Apache Spark auf.
Rufen Sie die Seite „Job einreichen“ auf und füllen Sie die folgenden Felder aus:
- Job-ID: Übernehmen Sie die vorgeschlagene ID oder geben Sie eine eigene ID ein.
- Region: Wählen Sie die Region aus, in der sich Ihr Cluster befindet.
- Cluster: Wählen Sie Ihren Cluster aus.
- Art der Dienstleistung: Wählen Sie
SparkSqlaus. - Abfragequelltyp: Wählen Sie
Query fileaus. - Abfragedatei: Fügen Sie
gs://BUCKET/iceberg-table.sqlein. - JAR-Dateien: Fügen Sie Folgendes ein:
gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR
- BIGLAKE_ICEBERG_CATALOG_JAR: Der Cloud Storage-URI des benutzerdefinierten Iceberg-Katalog-Plug-ins, das verwendet werden soll. Wählen Sie je nach Iceberg-Versionsnummer eine der folgenden Optionen aus:
- 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:
- Properties (Eigenschaften): Klicken Sie fünfmal auf Add Property (Eigenschaft hinzufügen), um eine Liste mit fünf
keyvalue-Eingabefeldern zu erstellen. Kopieren Sie dann die folgenden Key- und Value-Paare, um fünf Eigenschaften zu definieren.# Schlüssel Wert 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
Hinweise:
- CATALOG_NAME: Name des Iceberg-Katalogs.
- PROJECT_ID: Ihre Google Cloud Projekt-ID Projekt-IDs werden im Bereich Projektinformationen im Dashboard der Google Cloud Console für die Region aufgeführt, in der sich Ihr Cluster befindet.
- LOCATION: Ein unterstützter BigQuery-Standort. Der standardmäßige Standort ist „US“.
- BUCKET und WAREHOUSE_FOLDER: Cloud Storage-Bucket und -Ordner für das Iceberg-Warehouse.
Klicken Sie auf Senden.
Rufen Sie in der Google Cloud Console die Seite Jobs von Managed Service for Apache Spark auf, um den Jobfortschritt zu überwachen und die Jobausgabe anzusehen. Klicken Sie dann auf
Job ID, um die Seite Jobdetails zu öffnen.
Tabellenmetadaten in BigQuery ansehen
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Iceberg-Tabellenmetadaten ansehen.
REST
Sie können die jobs.submit-API von Managed Service for Apache Spark verwenden, um den Spark SQL-Job an Managed Service for Apache Spark zu senden und eine Iceberg-Tabelle mit Metadaten im Lakehouse-Laufzeitkatalog zu erstellen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud Projekt-ID Projekt-IDs werden im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- CLUSTER_NAME: Der Name Ihres Managed Service for Apache Spark-Clusters.
- REGION: Die Compute Engine-Region, in der sich Ihr Cluster befindet.
- CATALOG_NAME: Name des Iceberg-Katalogs.
- BUCKET und WAREHOUSE_FOLDER: Cloud Storage-Bucket und -Ordner, die für das Iceberg-Warehouse verwendet werden. LOCATION: Ein unterstützter BigQuery-Standort. Der standardmäßige Standort ist „US“.
BIGLAKE_ICEBERG_CATALOG_JAR: Der Cloud Storage-URI des benutzerdefinierten Iceberg-Katalog-Plug-ins, das verwendet werden soll. Wählen Sie je nach Iceberg-Versionsnummer eine der folgenden Optionen aus:- 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: Die aufgeführten JARs sind erforderlich, um Tabellenmetadaten in BigQuery Metastore zu erstellen.properties: Katalogeigenschaften.queryFileUri: Dieiceberg-table.sql-Jobdatei, die Sie in Ihren Bucket in Cloud Storage kopiert haben.
HTTP-Methode und URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit
JSON-Text anfordern:
{
"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"
}
}
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"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"
}
Rufen Sie in der Google Cloud Console die Seite Jobs von Managed Service for Apache Spark auf, um den Jobfortschritt zu überwachen und die Jobausgabe anzusehen. Klicken Sie dann aufJob ID, um die Seite Jobdetails zu öffnen.
Tabellenmetadaten in BigQuery ansehen
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Iceberg-Tabellenmetadaten ansehen.
Spark SQL-Befehlszeile
In den folgenden Schritten wird gezeigt, wie Sie mit der Spark SQL-Befehlszeile, die auf dem Masterknoten eines Managed Service for Apache Spark-Clusters ausgeführt wird, eine Iceberg-Tabelle erstellen, deren Tabellenmetadaten im Lakehouse-Laufzeitkatalog gespeichert werden.
Stellen Sie mit SSH eine Verbindung zum Masterknoten Ihres Managed Service for Apache Spark-Clusters her.
Kopieren Sie im Terminal der SSH-Sitzung die folgenden Befehle mit dem Texteditor
viodernanoin eineiceberg-table.sql-Datei.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;Ersetzen Sie Folgendes:
- CATALOG_NAME: Name des Iceberg-Katalogs.
- BUCKET und WAREHOUSE_FOLDER: Cloud Storage-Bucket und -Ordner für das Iceberg-Warehouse.
Führen Sie im Terminal der SSH-Sitzung den folgenden
spark-sql-Befehl aus, um die Iceberg-Tabelle zu erstellen.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
Ersetzen Sie Folgendes:
BIGLAKE_ICEBERG_CATALOG_JAR: Der Cloud Storage-URI des benutzerdefinierten Iceberg-Katalog-Plug-ins, das verwendet werden soll. Wählen Sie je nach Iceberg-Versionsnummer eine der folgenden Optionen aus:- 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: Ihre Google Cloud Projekt-ID Projekt-IDs werden im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- LOCATION: Ein unterstützter BigQuery-Standort. Der standardmäßige Standort ist „US“.
Tabellenmetadaten in BigQuery ansehen
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Iceberg-Tabellenmetadaten ansehen.
Zeppelin-Weboberfläche
In den folgenden Schritten wird beschrieben, wie Sie eine Iceberg-Tabelle mit Tabellenmetadaten erstellen, die im Lakehouse-Laufzeitkatalog gespeichert sind. Dazu verwenden Sie die Zeppelin-Weboberfläche, die auf dem Masternode eines Managed Service for Apache Spark-Clusters ausgeführt wird.
Rufen Sie in der Google Cloud Console die Seite Cluster für Managed Service for Apache Spark auf.
Wählen Sie den Namen Ihres Clusters aus, um die Seite Clusterdetails zu öffnen.
Klicken Sie auf den Tab Weboberflächen, um eine Liste von Component Gateway-Links zu den Weboberflächen der standardmäßigen und optionalen Komponenten aufzurufen, die im Cluster installiert sind.
Klicken Sie auf den Link Zeppelin, um die Zeppelin-Weboberfläche zu öffnen.
Klicken Sie in der Zeppelin-Weboberfläche auf das Menü anonymous und dann auf Interpreter, um die Seite Interpreters zu öffnen.
Fügen Sie dem Zeppelin Spark-Interpreter zwei JAR-Dateien hinzu:
- Geben Sie „Spark“ in das Feld
Search interpretersein, um zum Abschnitt Spark-Interpreter zu scrollen. - Klicken Sie auf edit (Bearbeiten).
Fügen Sie Folgendes in das Feld spark.jars ein:
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
Fügen Sie die folgende Anmerkung hinzu:
BIGLAKE_ICEBERG_CATALOG_JAR: Der Cloud Storage-URI des benutzerdefinierten Iceberg-Katalog-Plug-ins, das verwendet werden soll. Wählen Sie je nach Iceberg-Versionsnummer eine der folgenden Optionen aus:- 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
Klicken Sie unten im Abschnitt „Spark-Interpreter“ auf Speichern und dann auf OK, um den Interpreter zu aktualisieren und den Spark-Interpreter mit den neuen Einstellungen neu zu starten.
- Geben Sie „Spark“ in das Feld
Klicken Sie im Menü des Zeppelin-Notebooks auf Create new note (Neue Notiz erstellen).
Geben Sie im Dialogfeld Neue Notiz erstellen einen Namen für das Notebook ein und übernehmen Sie den Standardinterpreter spark. Klicken Sie auf Erstellen, um das Notebook zu öffnen.
Kopieren Sie den folgenden PySpark-Code in Ihr Zeppelin-Notebook, nachdem Sie die Variablen ausgefüllt haben.
%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()Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Google Cloud Projekt-ID Projekt-IDs werden im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- CATALOG_NAME und NAMESPACE: Der Name und der Namespace des Iceberg-Katalogs werden kombiniert, um die Iceberg-Tabelle (
catalog.namespace.table_name) zu identifizieren. - LOCATION: Ein unterstützter BigQuery-Standort. Der standardmäßige Standort ist „US“.
- BUCKET und WAREHOUSE_DIRECTORY: Cloud Storage-Bucket und -Ordner, die als Iceberg-Warehouse-Verzeichnis verwendet werden.
Klicken Sie auf das Ausführungssymbol oder drücken Sie
Shift-Enter, um den Code auszuführen. Wenn der Job abgeschlossen ist, wird die Statusmeldung „Spark Job Finished“ (Spark-Job abgeschlossen) angezeigt und in der Ausgabe sind die Tabelleninhalte zu sehen:
Tabellenmetadaten in BigQuery ansehen
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Iceberg-Tabellenmetadaten ansehen.