BigLake-Metastore mit Dataproc Serverless verwenden

In diesem Dokument wird beschrieben, wie Sie den BigLake-Metastore mit Dataproc Serverless verwenden.

Hinweise

  1. Aktivieren Sie die Abrechnung für Ihr Google Cloud -Projekt. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
  2. Aktivieren Sie die BigQuery- und Dataproc-APIs.

    APIs aktivieren

  3. 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:

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:

  1. Erstellen Sie eine Datei mit den Befehlen, die Sie im BigLake Metastore ausführen möchten.
  2. Verbinden Sie sich mit der Open-Source-Software-Engine Ihrer Wahl.
  3. 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.

  1. 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.
  2. 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 in REGION, 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 Datei WAREHOUSE_FOLDER befindet sich in diesem Bucket. Das gs://-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.

  1. 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.
  2. 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. Das gs://-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