Tabel BigLake untuk Apache Iceberg (selanjutnya disebut tabel BigLake Iceberg) adalah tabel Iceberg yang Anda buat dari mesin open source dan disimpan di Cloud Storage. Seperti semua tabel yang menggunakan metastore BigLake, tabel ini dapat dibaca oleh mesin open source dan BigQuery. Namun, mesin open source yang membuat tabel adalah satu-satunya mesin yang dapat menulis ke tabel tersebut.
Sebelum memulai
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigLake API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengelola tabel Iceberg BigLake, minta administrator Anda untuk memberi Anda peran IAM berikut :
-
Membuat dan menghapus tabel:
-
BigLake Admin (
roles/biglake.admin) di project -
Storage Admin (
roles/storage.admin) di bucket Cloud Storage
-
BigLake Admin (
-
Membaca data tabel dalam mode penyediaan kredensial:
Pelihat BigLake (
roles/biglake.viewer) di project -
Menulis data tabel dalam mode penyediaan kredensial:
BigLake Editor (
roles/biglake.editor) di project -
Membaca data tabel dalam mode penyediaan non-kredensial:
-
Pelihat BigLake (
roles/biglake.viewer) di project -
Storage Object Viewer (
roles/storage.objectViewer) di bucket Cloud Storage
-
Pelihat BigLake (
-
Menulis data tabel dalam mode penyediaan non-kredensial:
-
BigLake Editor (
roles/biglake.editor) di project -
Storage Object User (
roles/storage.objectUser) di bucket Cloud Storage
-
BigLake Editor (
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 tabel Iceberg BigLake
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;") spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Ganti kode berikut:
NAMESPACE_NAME: nama namespace AndaTABLE_NAME: nama untuk tabel Anda
Trino
CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar); DESCRIBE SCHEMA_NAME.TABLE_NAME;
Ganti kode berikut:
SCHEMA_NAME: nama skema AndaTABLE_NAME: nama untuk tabel Anda
Membuat daftar tabel
Spark
spark.sql("SHOW TABLES").show()
Trino
SHOW TABLES;
Menyisipkan data ke dalam tabel
Contoh berikut menyisipkan data sampel ke dalam tabel:
Spark
spark.sql("INSERT INTO TABLE_NAME VALUES (1, \"first row\"), (2, \"second row\"), (3, \"third row\");")
Trino
INSERT INTO TABLE_NAME VALUES (1, 'first row'), (2, 'second row'), (3, 'third row');
Membuat kueri tabel
Contoh berikut memilih semua data dari tabel:
Spark
spark.sql("SELECT * FROM TABLE_NAME;").show()
Trino
SELECT * FROM TABLE_NAME;
BigQuery
Untuk membuat kueri tabel Iceberg BigLake dari BigQuery,
gunakan nama tabel empat bagian dalam kueri Anda dengan format berikut:
PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME.
SELECT * FROM `PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;
Ganti kode berikut:
PROJECT_NAME: Project yang memiliki katalog di BigLake Metastore. Project yang dipilih di konsol Google Cloud akan ditagih untuk kueri tersebut.BIGLAKE_CATALOG_ID: ID katalog BigLake Metastore yang ditentukan saat katalog dibuat. ID ini digunakan sebagai nama katalog dalam kueri BigQuery.
Penting
ID ini juga merupakan nama bucket Cloud Storage Anda.
Misalnya, jika Anda membuat bucket untuk menyimpan katalog dan menamainya iceberg-bucket, nama katalog dan nama bucket Anda adalah iceberg-bucket. Ini akan digunakan nanti
saat Anda mengkueri katalog di BigQuery, menggunakan sintaksis P.C.N.T. Contohnya, my-project.biglake_catalog_id.quickstart_namespace.quickstart_table.
NAMESPACE_OR_SCHEMA_NAME: Namespace tabel jika menggunakan Spark atau nama skema tabel jika menggunakan Trino.TABLE_NAME: Nama tabel Anda.
Mengubah tabel
Contoh berikut menambahkan kolom ke tabel:
Spark
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);") spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Trino
ALTER TABLE TABLE_NAME ADD COLUMN desc varchar; DESCRIBE SCHEMA_NAME.TABLE_NAME;
Menghapus tabel
Spark
spark.sql("DROP TABLE TABLE_NAME;")
Trino
DROP TABLE TABLE_NAME;
Harga
Untuk mengetahui detail harga, lihat harga BigLake.
Langkah berikutnya
- Pelajari katalog REST Iceberg.