BigLake-Metastore mit Dataproc Serverless verwenden
In diesem Dokument wird beschrieben, wie Sie den BigLake-Metastore mit Dataproc Serverless verwenden.
Hinweise
- Aktivieren Sie die Abrechnung für Ihr Google Cloud -Projekt. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
Aktivieren Sie die BigQuery- und Dataproc-APIs.
Optional: Funktionsweise von BigLake Metastore und Gründe für die Verwendung.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Verwendung von Spark und serverlosem Dataproc mit BigLake Metastore als Metadaten-Speicher benötigen:
-
BigLake Metastore-Tabellen in Spark erstellen:
-
Dataproc-Worker (
roles/dataproc.worker
) für das Dataproc Serverless-Dienstkonto im Projekt -
BigQuery Data Editor (
roles/bigquery.dataEditor
) für das Dataproc Serverless-Dienstkonto im Projekt -
Storage-Objekt-Administrator (
roles/storage.objectAdmin
) für das Dataproc Serverless-Dienstkonto im Projekt
-
Dataproc-Worker (
-
BigLake Metastore-Tabellen in BigQuery abfragen:
-
BigQuery Data Viewer (
roles/bigquery.dataViewer
) für das Projekt -
BigQuery-Nutzer (
roles/bigquery.user
) für das Projekt -
Storage-Objekt-Betrachter (
roles/storage.objectViewer
) für das Projekt
-
BigQuery Data Viewer (
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Allgemeiner Workflow
Wenn Sie BigQuery mit Dataproc Serverless verwenden möchten, führen Sie die folgenden allgemeinen Schritte aus:
- Erstellen Sie eine Datei mit den Befehlen, die Sie im BigLake Metastore ausführen möchten.
- Verbinden Sie sich mit der Open-Source-Software-Engine Ihrer Wahl.
- Senden Sie einen Batchjob mit der Methode Ihrer Wahl, z. B. Spark SQL oder PySpark.
BigLake Metastore mit Spark verbinden
In der folgenden Anleitung wird gezeigt, wie Sie Dataproc Serverless mit BigLake Metastore verbinden:
SparkSQL
Führen Sie die folgenden Schritte aus, um einen Spark SQL-Batchjob zu senden.
Erstellen Sie eine SQL-Datei mit den Spark SQL-Befehlen, die Sie im BigLake Metastore ausführen möchten. Mit diesem Befehl werden beispielsweise ein Namespace und eine Tabelle erstellt.
CREATE NAMESPACE `CATALOG_NAME`.NAMESPACE_NAME; CREATE TABLE `CATALOG_NAME`.NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY';
Ersetzen Sie Folgendes:
CATALOG_NAME
: Der Katalogname, der auf Ihre Spark-Tabelle verweist.NAMESPACE_NAME
: Der Namespace-Name, der auf Ihre Spark-Tabelle verweist.TABLE_NAME
: ein Tabellenname für Ihre Spark-Tabelle.WAREHOUSE_DIRECTORY
: Der URI des Cloud Storage-Ordners, in dem Ihr Data Warehouse gespeichert ist.
Senden Sie einen Spark SQL-Batchjob, indem Sie den folgenden
gcloud dataproc batches submit spark-sql
-gcloud CLI-Befehl ausführen:gcloud dataproc batches submit spark-sql SQL_SCRIPT_PATH \ --project=PROJECT_ID \ --region=REGION \ --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --deps-bucket=BUCKET_PATH \ --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=WAREHOUSE_DIRECTORY"
Ersetzen Sie Folgendes:
SQL_SCRIPT_PATH
: der Pfad zur SQL-Datei, die vom Batchjob verwendet wird.PROJECT_ID
: Die ID des Google Cloud -Projekts, in dem der Batchjob ausgeführt werden soll.REGION
: die Region, in der Ihre Arbeitslast ausgeführt wird.SUBNET_NAME
: optional: Der Name eines VPC-Subnetzes inREGION
, für das privater Google-Zugriff aktiviert ist und das andere Anforderungen an das Sitzungssubnetz erfüllt.LOCATION
: Der Standort, an dem der Batchjob ausgeführt werden soll.BUCKET_PATH
: Der Speicherort des Cloud Storage-Bucket zum Hochladen von Arbeitslastabhängigkeiten. Die DateiWAREHOUSE_FOLDER
befindet sich in diesem Bucket. Dasgs://
-URI-Präfix des Buckets ist nicht erforderlich. Sie können den Bucket-Pfad oder den Bucket-Namen angeben, z. B.mybucketname1
.
Weitere Informationen zum Einreichen von Spark-Batchjobs finden Sie unter Spark-Batcharbeitslast ausführen.
PySpark
Führen Sie die folgenden Schritte aus, um einen PySpark-Batchjob einzureichen.
Erstellen Sie eine Python-Datei mit den PySpark-Befehlen, die Sie im BigLake Metastore ausführen möchten.
Mit dem folgenden Befehl wird beispielsweise eine Spark-Umgebung für die Interaktion mit Iceberg-Tabellen eingerichtet, die im BigLake Metastore gespeichert sind. Mit dem Befehl wird dann ein neuer Namespace und eine Iceberg-Tabelle in diesem Namespace erstellt.
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("BigLake Metastore Iceberg") \ .config("spark.sql.catalog.CATALOG_NAME", "org.apache.iceberg.spark.SparkCatalog") \ .config("spark.sql.catalog.CATALOG_NAME.catalog-impl", "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog") \ .config("spark.sql.catalog.CATALOG_NAME.gcp_project", "PROJECT_ID") \ .config("spark.sql.catalog.CATALOG_NAME.gcp_location", "LOCATION") \ .config("spark.sql.catalog.CATALOG_NAME.warehouse", "WAREHOUSE_DIRECTORY") \ .getOrCreate() spark.sql("USE `CATALOG_NAME`;") spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME;") spark.sql("USE NAMESPACE_NAME;") spark.sql("CREATE TABLE TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY';")
Ersetzen Sie Folgendes:
PROJECT_ID
: Die ID des Google Cloud -Projekts, in dem der Batchjob ausgeführt werden soll.LOCATION
: Der Standort, an dem sich die BigQuery-Ressourcen befinden.CATALOG_NAME
: Der Katalogname, der auf Ihre Spark-Tabelle verweist.TABLE_NAME
: ein Tabellenname für Ihre Spark-Tabelle.WAREHOUSE_DIRECTORY
: Der URI des Cloud Storage-Ordners, in dem Ihr Data Warehouse gespeichert ist.NAMESPACE_NAME
: Der Namespace-Name, der auf Ihre Spark-Tabelle verweist.
Senden Sie den Batchjob mit dem folgenden Befehl
gcloud dataproc batches submit pyspark
.gcloud dataproc batches submit pyspark PYTHON_SCRIPT_PATH \ --version=2.2 \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_PATH \ --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=WAREHOUSE_DIRECTORY"
Ersetzen Sie Folgendes:
PYTHON_SCRIPT_PATH
: Der Pfad zum Python-Skript, das vom Batchjob verwendet wird.PROJECT_ID
: Die ID des Google Cloud -Projekts, in dem der Batchjob ausgeführt werden soll.REGION
: die Region, in der Ihre Arbeitslast ausgeführt wird.BUCKET_PATH
: Der Speicherort des Cloud Storage-Bucket zum Hochladen von Arbeitslastabhängigkeiten. Dasgs://
-URI-Präfix des Buckets ist nicht erforderlich. Sie können den Bucket-Pfad oder den Bucket-Namen angeben, z. B.mybucketname1
.
Weitere Informationen zum Senden von PySpark-Batchjobs finden Sie in der gcloud-Referenz für PySpark.
Nächste Schritte
- Optionale BigLake Metastore-Funktionen einrichten.
- Tabellen aus Spark in der BigQuery-Konsole ansehen und abfragen