BigLake Metastore mit gespeicherten Spark-Prozeduren verwenden
In diesem Dokument wird beschrieben, wie Sie gespeicherte Apache Spark-Prozeduren mit BigLake Metastore 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 Dataflow APIs.
Optional: Weitere Informationen zu den folgenden Themen:
- Funktionsweise von BigLake Metastore und Gründe für die Verwendung
- Informationen zur Funktionsweise von gespeicherten BigQuery Spark-Prozeduren und Aufgaben, die Sie vorab erledigen müssen.
Erforderliche Rollen
Wenn Sie gespeicherte Spark-Prozeduren verwenden möchten, prüfen Sie die erforderlichen Rollen für gespeicherte Prozeduren und weisen Sie die erforderlichen Rollen zu.
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwenden von Spark und gespeicherten Prozeduren mit BigLake-Metastore als Metadatenspeicher benötigen:
-
BigLake Metastore-Tabellen in Spark erstellen:
-
BigQuery-Dateneditor (
roles/bigquery.dataEditor
) für das Dienstkonto der Spark-Verbindung im Projekt -
Storage-Objekt-Administrator (
roles/storage.objectAdmin
) für das Dienstkonto der Spark-Verbindung im Projekt
-
BigQuery-Dateneditor (
-
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.
Gespeicherte Prozedur erstellen und ausführen
Das folgende Beispiel zeigt, wie Sie eine gespeicherte Prozedur mit BigLake Metastore erstellen und ausführen.
Rufen Sie die Seite BigQuery auf.
Fügen Sie im Abfrageeditor den folgenden Beispielcode für die
CREATE PROCEDURE
-Anweisung hinzu.CREATE OR REPLACE PROCEDURE `PROJECT_ID.BQ_DATASET_ID.PROCEDURE_NAME`() WITH CONNECTION `PROJECT_ID.REGION.SPARK_CONNECTION_ID` OPTIONS (engine='SPARK', runtime_version='1.1', properties=[("spark.sql.catalog.CATALOG_NAME.warehouse", "WAREHOUSE_DIRECTORY"), ("spark.sql.catalog.CATALOG_NAME.gcp_location", "LOCATION"), ("spark.sql.catalog.CATALOG_NAME.gcp_project", "PROJECT_ID"), ("spark.sql.catalog.CATALOG_NAME", "org.apache.iceberg.spark.SparkCatalog"), ("spark.sql.catalog.CATALOG_NAME.catalog-impl", "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog"), ("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1")], jar_uris=["gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar"]) LANGUAGE python AS R""" from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .appName("BigLake Metastore Iceberg") \ .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'") spark.sql("DESCRIBE TABLE_NAME;") spark.sql("INSERT INTO TABLE_NAME VALUES (1, \"first row\");") spark.sql("SELECT * from TABLE_NAME;") spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS (newDoubleCol double);") spark.sql("DESCRIBE TABLE_NAME;") """; CALL `PROJECT_ID.BQ_DATASET_ID.PROCEDURE_NAME`();
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID Ihres Google Cloud Projekts.BQ_DATASET_ID
: die ID des Datasets in BigQuery, das die Prozedur enthält.PROCEDURE_NAME
: Der Name der Prozedur, die Sie erstellen oder ersetzen.REGION
: Der Standort Ihrer Spark-Verbindung.LOCATION
: Der Standort Ihrer BigQuery-Ressourcen.SPARK_CONNECTION_ID
: die ID Ihrer Spark-Verbindung.CATALOG_NAME
: der Name des Katalogs, den Sie verwenden.WAREHOUSE_DIRECTORY
: Der URI des Cloud Storage-Ordners, der Ihr Data Warehouse enthält.NAMESPACE_NAME
: der Namespace, den Sie verwenden.
Nächste Schritte
- Optionale BigLake Metastore-Funktionen einrichten.
- Tabellen aus Spark in der BigQuery-Konsole ansehen und abfragen