Lakehouse untuk Apache Iceberg mendukung pengelolaan resource melalui katalog runtime Lakehouse.
Katalog bersama ini menghilangkan persyaratan untuk mempertahankan beberapa katalog untuk workload open source di berbagai mesin pemrosesan data. Operasi yang didukung mencakup pembuatan, melihat, mengubah, dan menghapus resource seperti namespace dan tabel.
Sebelum memulai
-
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
-
Aktifkan BigQuery, BigQuery Storage, dan Managed Service for Apache Spark API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengelola resource Apache Iceberg di katalog runtime Lakehouse, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:
- BigQuery Data Editor (
roles/bigquery.dataEditor) - Storage Object User (
roles/storage.objectUser)
Untuk mengetahui informasi selengkapnya tentang pemberian 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 katalog
Bagian berikut menjelaskan cara membuat resource di katalog runtime Lakehouse.
Membuat namespace
Pilih salah satu opsi berikut:
API
Gunakan metode
datasets.insert,
dan tentukan kolom
ExternalCatalogDatasetOptions
di resource set data yang Anda
teruskan.
{
"datasetReference": {
"projectId": "PROJECT_ID",
"datasetId": "DATASET_ID"
},
"externalCatalogDatasetOptions": {
"defaultStorageLocationUri": "URI",
"parameters": {
...
}
},
"location": "LOCATION"
}Ganti kode berikut:
PROJECT_ID: ID project yang berisi set data target Anda.DATASET_ID: ID set data target Anda.URI: URI Cloud Storage untuk semua tabel dalam set data.LOCATION: lokasi BigQuery tempat Anda ingin membuat set data.
Apache Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Ganti kode berikut:
SPARK_CATALOG: nama katalog Apache Spark Anda.NAMESPACE: 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 target Anda.DATASET_ID: ID set data target Anda.LOCATION: lokasi BigQuery tempat Anda ingin membuat set data.URI: URI Cloud Storage untuk semua tabel dalam set data.
Membuat tabel Apache 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 Apache Iceberg terbaru. Contohnya,gs://mybucket/mytable/metadata/1234.metadata.json.CONNECTION_ID: ID koneksi Anda ke Cloud Storage.
Apache Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Ganti kode berikut:
SPARK_CATALOG: nama katalog Apache Spark Anda.NAMESPACE: nama namespace Anda.TABLE: 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 Apache Iceberg terbaru. Contohnya,gs://mybucket/mytable/metadata/1234.metadata.json.
Melihat resource katalog
Bagian berikut menjelaskan cara melihat resource di katalog runtime Lakehouse.
Melihat namespace
Pilih salah satu opsi berikut:
API
Gunakan metode
datasets.listuntuk melihat semua namespace, atau gunakan metode
datasets.getuntuk melihat informasi tentang namespace yang ditentukan.
Apache Spark SQL
Untuk melihat semua namespace dalam katalog, gunakan pernyataan berikut:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Ganti SPARK_CATALOG dengan nama katalog Apache 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 Apache Spark Anda.NAMESPACE: nama namespace Anda.
Melihat tabel
Pilih salah satu opsi berikut:
API
Gunakan metode
tables.listuntuk melihat semua tabel dalam namespace, atau gunakan metode
tables.getuntuk melihat informasi tentang tabel yang ditentukan.
Apache Spark SQL
Untuk melihat semua tabel dalam namespace, gunakan pernyataan berikut:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Ganti kode berikut:
SPARK_CATALOG: nama katalog Apache Spark Anda.NAMESPACE: 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 Apache Spark Anda.NAMESPACE: nama namespace Anda.TABLE: nama tabel Anda.
Mengubah resource katalog
Bagian berikut menjelaskan cara mengubah resource di katalog runtime Lakehouse.
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.
Apache Spark SQL
Gunakan pernyataan
ALTER DATABASE.
Memperbarui tabel Apache Iceberg
Pilih salah satu opsi berikut:
API
Gunakan metode,
dan perbarui kolom
di resource tabel.tables.patchExternalCatalogTableOptions Metode tables.update tidak direkomendasikan karena menggantikan seluruh resource tabel.
Untuk memperbarui file skema atau metadata, gunakan metode tables.patch dan tetapkan 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 perbarui.DATASET_ID: ID set data yang berisi tabel yang ingin Anda perbarui.TABLE_ID: ID tabel yang ingin Anda perbarui.
Dalam isi permintaan, tentukan nilai yang diperbarui untuk setiap kolom. Misalnya, untuk memperbarui lokasi metadata tabel Apache 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 Apache Iceberg terbaru. Contohnya, gs://mybucket/mytable/metadata/1234.metadata.json.
Apache Spark SQL
Gunakan pernyataan
ALTER TABLE.
Menghapus resource katalog
Bagian berikut menjelaskan cara menghapus resource di katalog runtime Lakehouse.
Menghapus namespace
Pilih salah satu opsi berikut:
API
Gunakan metode
datasets.delete method.
Tetapkan parameter deleteContents ke benar (true) untuk menghapus tabel di namespace Anda.
Apache Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Ganti kode berikut:
SPARK_CATALOG: nama katalog Apache Spark Anda.NAMESPACE: 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.
Apache Spark SQL
Untuk hanya membuang tabel, gunakan pernyataan berikut:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Ganti kode berikut:
SPARK_CATALOG: nama katalog Apache Spark Anda.NAMESPACE: nama namespace Anda.TABLE: 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 Apache Spark Anda.NAMESPACE: nama namespace Anda.TABLE: nama tabel yang akan dihapus.
Langkah berikutnya
- Pelajari tentang fitur katalog runtime Lakehouse tambahan.