Mengelola resource Iceberg di metastore BigLake
Metastore BigLake adalah metastore tunggal bersama yang memungkinkan berbagi data di seluruh mesin pemrosesan data, sehingga tidak perlu lagi memelihara metastore terpisah untuk beban kerja open source Anda.
Dokumen ini menjelaskan cara membuat, melihat, mengubah, dan menghapus resource Iceberg di metastore BigLake.
Sebelum memulai
-
Make sure that billing is enabled for your Google Cloud project.
Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project. -
Enable the BigQuery, BigQuery Storage, and Dataproc APIs.
- Opsional: Pahami cara kerja metastore BigLake dan alasan Anda harus menggunakannya.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengelola resource Iceberg di metastore BigLake, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
BigQuery Data Editor (
roles/bigquery.dataEditor
) -
Storage Object Admin (
roles/storage.objectAdmin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat resource metastore
Bagian berikut menjelaskan cara membuat resource di metastore BigLake.
Membuat namespace
Pilih salah satu opsi berikut:
API
Gunakan
metode datasets.insert
,
dan tentukan
kolom ExternalCatalogDatasetOptions
di resource set data yang Anda
terus kirimkan.
{ "datasetReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID" }, "externalCatalogDatasetOptions": { "defaultStorageLocationUri": "URI", "parameters": { ... } }, "location": "LOCATION" }
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi set data targetDATASET_ID
: ID set data target AndaURI
: Cloud Storage URI untuk semua tabel dalam set dataLOCATION
: lokasi BigQuery tempat Anda ingin membuat set data
Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace baru Anda
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 = { ... } } }
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi set data targetDATASET_ID
: ID set data target AndaLOCATION
: lokasi BigQuery tempat Anda ingin membuat set dataURI
: Cloud Storage URI untuk semua tabel dalam set data
Membuat tabel Iceberg
Pilih salah satu opsi berikut:
API
Gunakan
metode tables.insert
,
dan tentukan
kolom ExternalCatalogTableOptions
di resource tabel yang Anda teruskan.
{ "tableReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID", "tableId": "TABLE_ID" }, "externalCatalogTableOptions": { "parameters": { "table_type": "iceberg", "metadata_location": "METADATA_URI" }, "connection_id": "CONNECTION_ID" } }
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi tabel target Anda.DATASET_ID
: ID set data yang berisi tabel target Anda.TABLE_ID
: ID tabel target Anda.METADATA_URI
: Cloud Storage URI untuk file metadata Iceberg terbaru. Contohnya,gs://mybucket/mytable/metadata/1234.metadata.json
.CONNECTION_ID
: ID koneksi Anda ke Cloud Storage.
Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace AndaTABLE
: nama tabel baru Anda
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" } } }
Ganti kode berikut:
TABLE
: nama tabel target.STORAGE_URI
: Cloud Storage URI tempat data tabel disimpan, dimulai dengangs://
.METADATA_URI
: Cloud Storage URI untuk file metadata Iceberg terbaru. Contohnya,gs://mybucket/mytable/metadata/1234.metadata.json
.
Melihat resource metastore
Bagian berikut menjelaskan cara melihat resource di metastore BigLake.
Melihat namespace
Pilih salah satu opsi berikut:
API
Gunakan
metode datasets.list
untuk melihat semua namespace, atau gunakan
metode datasets.get
untuk melihat informasi tentang namespace yang ditentukan.
Spark SQL
Untuk melihat semua namespace dalam katalog, gunakan pernyataan berikut:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Ganti SPARK_CATALOG
dengan nama katalog Spark Anda.
Untuk melihat informasi tentang namespace yang ditentukan, gunakan pernyataan berikut:
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace Anda
Melihat tabel
Pilih salah satu opsi berikut:
API
Gunakan
tables.list
method
untuk melihat semua tabel dalam namespace, atau gunakan
tables.get
method
untuk melihat informasi tentang tabel yang ditentukan.
Spark SQL
Untuk melihat semua tabel dalam namespace, gunakan pernyataan berikut:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace Anda
Untuk melihat informasi tentang tabel yang ditentukan, gunakan pernyataan berikut:
DESCRIBE TABLE [EXTENDED] SPARK_CATALOG.NAMESPACE.TABLE;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace AndaTABLE
: nama tabel Anda
Mengubah resource metastore
Bagian berikut menjelaskan cara memodifikasi resource di metastore BigLake.
Memperbarui namespace
Pilih salah satu opsi berikut:
API
Gunakan
metode datasets.patch
,
dan perbarui
kolom ExternalCatalogDatasetOptions
di resource set data. Metode
datasets.update
tidak direkomendasikan karena menggantikan seluruh
resource set data.
Spark SQL
Gunakan pernyataan ALTER DATABASE
.
Memperbarui tabel Iceberg
Pilih salah satu opsi berikut:
API
Gunakan
metode tables.patch
,
dan perbarui
kolom ExternalCatalogTableOptions
di resource tabel. Metode
tables.update
tidak direkomendasikan karena menggantikan seluruh
resource tabel.
Untuk mengupdate skema atau file metadata, gunakan metode tables.patch
dan setel
properti autodetect_schema
ke benar (true):
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi tabel yang ingin Anda perbaruiDATASET_ID
: ID set data yang berisi tabel yang ingin Anda perbaruiTABLE_ID
: ID tabel yang ingin Anda perbarui
Dalam isi permintaan, tentukan nilai yang diperbarui untuk setiap kolom. Misalnya, untuk memperbarui lokasi metadata tabel Iceberg, tentukan nilai yang diperbarui untuk kolom metadata_location
:
{ "externalCatalogTableOptions": { "parameters": {"metadata_location": "METADATA_URI"} }, "schema": null }'
Ganti METADATA_URI
dengan
Cloud Storage URI untuk
file metadata Iceberg terbaru. Contohnya,
gs://mybucket/mytable/metadata/1234.metadata.json
.
Spark SQL
Gunakan pernyataan ALTER TABLE
.
Menghapus resource metastore
Bagian berikut menjelaskan cara menghapus resource di metastore BigLake.
Menghapus namespace
Pilih salah satu opsi berikut:
API
Gunakan
metode datasets.delete
.
Tetapkan parameter deleteContents
ke benar (true) untuk menghapus tabel di namespace Anda.
Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace Anda
Menghapus tabel
Pilih salah satu opsi berikut:
API
Gunakan
metode tables.delete
dan
tentukan nama tabel. Metode ini tidak menghapus file terkait di Cloud Storage.
Spark SQL
Untuk hanya membuang tabel, gunakan pernyataan berikut:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace AndaTABLE
: nama tabel yang akan dihapus
Untuk membuang tabel dan menghapus file terkait di Cloud Storage, gunakan pernyataan berikut:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Ganti kode berikut:
SPARK_CATALOG
: nama katalog Spark AndaNAMESPACE
: nama namespace AndaTABLE
: nama tabel yang akan dihapus
Langkah berikutnya
- Pelajari fitur metastore BigLake tambahan.