Zusätzliche BigQuery-Metastore-Funktionen
Sie können die BigQuery-Metastore-Konfiguration mit den folgenden zusätzlichen Funktionen anpassen:
- Apache Spark Iceberg-Prozeduren
- Filteroption für nicht unterstützte Tabellen
- BigQuery-Verbindungsüberschreibungen
Iceberg-Spark-Prozeduren verwenden
Wenn Sie Iceberg-Spark-Prozeduren verwenden möchten, müssen Sie die Iceberg-SQL-Erweiterungen in Ihre Spark-Konfiguration aufnehmen. Sie können beispielsweise ein Verfahren zum Zurücksetzen auf einen vorherigen Zustand erstellen.
Interaktive Spark-SQL-Abfragen verwenden, um zu einem vorherigen Zustand zurückzukehren
Mit einem Iceberg-Spark-Verfahren können Sie eine Tabelle erstellen, ändern und in ihren vorherigen Zustand zurückversetzen. Beispiel:
So erstellen Sie eine Spark-Tabelle:
spark-sql \ --jars https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.5.2/iceberg-spark-runtime-3.5_2.12-1.5.2.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.5.2-1.0.0-beta.jar \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --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.warehouse=WAREHOUSE_DIRECTORY
Ersetzen Sie Folgendes:
CATALOG_NAME
: Der Katalogname, der auf Ihre Spark-Tabelle verweist.PROJECT_ID
: die ID des Google Cloud -Projekts.WAREHOUSE_DIRECTORY
: Der URI des Cloud Storage-Ordners, in dem Ihr Data Warehouse gespeichert ist.
USE `CATALOG_NAME`; CREATE NAMESPACE NAMESPACE_NAME; USE NAMESPACE NAMESPACE_NAME; CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY'; INSERT INTO NAMESPACE_NAME.TABLE_NAME VALUES (1, "first row"); DESCRIBE EXTENDED TABLE_NAME;
Ersetzen Sie Folgendes:
NAMESPACE_NAME
: Der Name des Namespace, der auf Ihre Spark-Tabelle verweist.TABLE_NAME
: ein Tabellenname, der auf Ihre Spark-Tabelle verweist.
Die Ausgabe enthält Details zur Tabellenkonfiguration:
... Table Properties [current-snapshot-id=1659239298328512231,format=iceberg/parquet,format-version=2,write.parquet.compression-codec=zstd] ...
Ändern Sie die Tabelle noch einmal und führen Sie dann ein Rollback auf den zuvor erstellten Snapshot
1659239298328512231
aus:ALTER TABLE TABLE_NAME ADD COLUMNS (newDoubleCol double); INSERT INTO TABLE_NAME VALUES (2, "second row", 2.5); SELECT * FROM TABLE_NAME; CALL CATALOG_NAME.system.set_current_snapshot(NAMESPACE_NAME.TABLE_NAME', SNAPSHOT_ID); SELECT * FROM TABLE_NAME;
Ersetzen Sie Folgendes:
SNAPSHOT_ID
: die ID des Snapshots, zu dem Sie zurückkehren möchten.
Die Ausgabe sieht in etwa so aus:
1 first row Time taken: 0.997 seconds, Fetched 1 row(s)
Nicht unterstützte Tabellen aus Funktionen für Tabellenlisten herausfiltern
Wenn Sie Spark SQL mit dem BigQuery-Metastore-Katalog verwenden, werden mit dem Befehl SHOW TABLES
alle Tabellen im angegebenen Namespace angezeigt, auch solche, die nicht mit Spark kompatibel sind.
Wenn Sie nur unterstützte Tabellen anzeigen lassen möchten, aktivieren Sie die Option filter_unsupported_tables
:
spark-sql --jars https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.5.2/iceberg-spark-runtime-3.5_2.12-1.5.2.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.5.2-1.0.0-beta.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=WAREHOUSE_DIRECTORY \ --conf spark.sql.catalog.CATALOG_NAME.filter_unsupported_tables="true"
Ersetzen Sie Folgendes:
CATALOG_NAME
: Der Name des zu verwendenden Spark-Katalogs.PROJECT_ID
: die ID des zu verwendenden Google Cloud -Projekts.LOCATION
: den Speicherort der BigQuery-Ressourcen.WAREHOUSE_DIRECTORY
: Der Cloud Storage-Ordner, der als Data Warehouse verwendet werden soll.
BigQuery-Verbindung überschreiben
Mit BigQuery-Verbindungen können Sie auf Daten zugreifen, die außerhalb von BigQuery gespeichert sind, z. B. in Cloud Storage.
So legen Sie eine BigQuery-Verbindungsüberschreibung fest, die Zugriff auf einen Cloud Storage-Bucket gewährt:
Erstellen Sie in Ihrem BigQuery-Projekt eine neue Verbindung zu Ihrer Cloud Storage-Ressource. Über diese Verbindung wird festgelegt, wie BigQuery auf Ihre Daten zugreift.
Weisen Sie dem Nutzer oder Dienstkonto, das auf die Daten zugreift, die Rolle
roles/bigquery.connectionUser
für die Verbindung zu.Die Verbindungsressource muss sich am selben Speicherort wie die Zielressourcen in BigQuery befinden. Weitere Informationen finden Sie unter Verbindungen verwalten.
Geben Sie die Verbindung in Ihrer Iceberg-Tabelle mit dem Attribut
bq_connection
an:CREATE TABLE TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY' TBLPROPERTIES ('bq_connection'='projects/PROJECT_ID/locations/LOCATION/connections/CONNECTION_ID');
Ersetzen Sie Folgendes:
TABLE_NAME
: Name der Spark-Tabelle.WAREHOUSE_DIRECTORY
: der URI des Cloud Storage-Bucket, in dem Ihre Daten gespeichert sind.PROJECT_ID
: die ID des zu verwendenden Google Cloud -Projekts.LOCATION
: den Standort der Verbindung.CONNECTION_ID
: die ID der Verbindung.
Nächste Schritte
- Dataproc Metastore-Daten in den BigQuery Metastore migrieren
- BigQuery Metastore mit Dataproc verwenden
- BigQuery-Metastore mit Dataproc Serverless verwenden