Gestire le risorse Iceberg nel metastore BigLake
BigLake Metastore è un metastore singolo e condiviso che consente la condivisione dei dati tra i motori di elaborazione dei dati, eliminando la necessità di gestire metastore separati per i carichi di lavoro open source.
Questo documento spiega come creare, visualizzare, modificare ed eliminare le risorse Iceberg in BigLake Metastore.
Prima di iniziare
-
Make sure that billing is enabled for your Google Cloud project.
Scopri come verificare se la fatturazione è abilitata per un progetto. -
Enable the BigQuery, BigQuery Storage, and Dataproc APIs.
- (Facoltativo) Scopri come funziona il metastore BigLake e perché dovresti utilizzarlo.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire le risorse Iceberg nel metastore BigLake, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:
-
Editor dati BigQuery (
roles/bigquery.dataEditor
) -
Storage Object Admin (
roles/storage.objectAdmin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Crea risorse metastore
Le sezioni seguenti descrivono come creare risorse nel metastore BigLake.
Crea spazi dei nomi
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo datasets.insert
e specifica il
campo ExternalCatalogDatasetOptions
nella risorsa dataset che
trasmetti.
{ "datasetReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID" }, "externalCatalogDatasetOptions": { "defaultStorageLocationUri": "URI", "parameters": { ... } }, "location": "LOCATION" }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il set di dati di destinazioneDATASET_ID
: l'ID del set di dati di destinazioneURI
: l'URI Cloud Storage per tutte le tabelle nel set di datiLOCATION
: la posizione BigQuery in cui vuoi creare il set di dati
Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del nuovo spazio dei nomi
Terraform
provider "google" { project = "PROJECT_ID" } resource "google_bigquery_dataset" "default" { dataset_id = "DATASET_ID" location = "LOCATION" external_catalog_dataset_options { default_storage_location_uri = "URI" parameters = { ... } } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il set di dati di destinazioneDATASET_ID
: l'ID del set di dati di destinazioneLOCATION
: la posizione BigQuery in cui vuoi creare il set di datiURI
: l'URI Cloud Storage per tutte le tabelle nel set di dati
Creare tabelle Iceberg
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo tables.insert
e specifica il
campo ExternalCatalogTableOptions
nella risorsa tabella che trasmetti.
{ "tableReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID", "tableId": "TABLE_ID" }, "externalCatalogTableOptions": { "parameters": { "table_type": "iceberg", "metadata_location": "METADATA_URI" }, "connection_id": "CONNECTION_ID" } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene la tabella di destinazione.DATASET_ID
: l'ID del set di dati che contiene la tabella di destinazione.TABLE_ID
: l'ID della tabella di destinazione.METADATA_URI
: l'URI Cloud Storage per l'ultimo file di metadati Iceberg. Ad esempiogs://mybucket/mytable/metadata/1234.metadata.json
.CONNECTION_ID
: l'ID della tua connessione a Cloud Storage.
Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del tuo spazio dei nomiTABLE
: il nome della nuova tabella
Terraform
resource "google_bigquery_table" "default" { deletion_protection = false dataset_id = google_bigquery_dataset.default.dataset_id table_id = "TABLE" external_catalog_table_options { storage_descriptor { location_uri = "STORAGE_URI" input_format = "org.apache.hadoop.mapred.FileInputFormat" output_format = "org.apache.hadoop.mapred.FileOutputFormat" } parameters = { "table_type" = "iceberg" "metadata_location" = "METADATA_URI" "write.parquet.compression-codec" : "zstd" "EXTERNAL" : "TRUE" } } }
Sostituisci quanto segue:
TABLE
: il nome della tabella di destinazione.STORAGE_URI
: l'URI Cloud Storage in cui sono archiviati i dati della tabella, a partire dags://
.METADATA_URI
: l'URI Cloud Storage per l'ultimo file di metadati Iceberg. Ad esempiogs://mybucket/mytable/metadata/1234.metadata.json
.
Visualizzare le risorse del metastore
Le sezioni seguenti descrivono come visualizzare le risorse nel metastore BigLake.
Visualizzare gli spazi dei nomi
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo datasets.list
per visualizzare tutti gli spazi dei nomi oppure utilizza il
metodo datasets.get
per visualizzare le informazioni su uno spazio dei nomi definito.
Spark SQL
Per visualizzare tutti gli spazi dei nomi in un catalogo, utilizza la seguente istruzione:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Sostituisci SPARK_CATALOG
con il nome del tuo catalogo Spark.
Per visualizzare informazioni su uno spazio dei nomi definito, utilizza la seguente istruzione:
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del tuo spazio dei nomi
Visualizza tabelle
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo tables.list
per visualizzare tutte le tabelle in uno spazio dei nomi oppure utilizza il
metodo tables.get
per visualizzare informazioni su una tabella definita.
Spark SQL
Per visualizzare tutte le tabelle in uno spazio dei nomi, utilizza la seguente istruzione:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del tuo spazio dei nomi
Per visualizzare le informazioni su una tabella definita, utilizza la seguente istruzione:
DESCRIBE TABLE [EXTENDED] SPARK_CATALOG.NAMESPACE.TABLE;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del tuo spazio dei nomiTABLE
: il nome della tabella
Modificare le risorse del metastore
Le sezioni seguenti descrivono come modificare le risorse nel metastore BigLake.
Aggiorna spazi dei nomi
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo datasets.patch
e aggiorna il
campo ExternalCatalogDatasetOptions
nella risorsa del set di dati. Il metodo
datasets.update
non è consigliato perché sostituisce l'intera
risorsa del set di dati.
Spark SQL
Utilizza l'istruzione
ALTER DATABASE
.
Aggiorna le tabelle Iceberg
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo tables.patch
e aggiorna il
campo ExternalCatalogTableOptions
nella risorsa tabella. Il metodo
tables.update
non è consigliato perché sostituisce l'intera
risorsa tabella.
Per aggiornare lo schema o il file di metadati, utilizza il metodo tables.patch
e imposta
la proprietà autodetect_schema
su true:
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene la tabella che vuoi aggiornareDATASET_ID
: l'ID del set di dati che contiene la tabella che vuoi aggiornareTABLE_ID
: l'ID della tabella che vuoi aggiornare
Nel corpo della richiesta, specifica il valore aggiornato per ogni campo. Ad esempio, per aggiornare la posizione dei metadati della tabella Iceberg, specifica il valore aggiornato per il campo metadata_location
:
{ "externalCatalogTableOptions": { "parameters": {"metadata_location": "METADATA_URI"} }, "schema": null }'
Sostituisci METADATA_URI
con l'URI Cloud Storage dell'ultimo file di metadati Iceberg. Ad esempio
gs://mybucket/mytable/metadata/1234.metadata.json
.
Spark SQL
Utilizza l'istruzione
ALTER TABLE
.
Elimina risorse metastore
Le sezioni seguenti descrivono come eliminare le risorse nel metastore BigLake.
Elimina spazi dei nomi
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo datasets.delete
.
Imposta il parametro deleteContents
su true per eliminare le tabelle nel tuo
spazio dei nomi.
Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del tuo spazio dei nomi
Eliminare le tabelle
Seleziona una delle seguenti opzioni:
API
Utilizza il
metodo tables.delete
e
specifica il nome della tabella. Questo metodo non elimina i file associati
in Cloud Storage.
Spark SQL
Per eliminare solo la tabella, utilizza la seguente istruzione:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del tuo spazio dei nomiTABLE
: il nome della tabella da eliminare
Per eliminare la tabella ed eliminare i file associati in Cloud Storage, utilizza la seguente istruzione:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Sostituisci quanto segue:
SPARK_CATALOG
: il nome del catalogo SparkNAMESPACE
: il nome del tuo spazio dei nomiTABLE
: il nome della tabella da eliminare
Passaggi successivi
- Scopri di più sulle funzionalità aggiuntive del metastore BigLake.