Menggunakan tabel BigLake untuk Apache Iceberg

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

  1. Verify that billing is enabled for your Google Cloud project.

  2. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengelola tabel Iceberg BigLake, minta administrator Anda untuk memberi Anda peran IAM berikut :

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 Anda
  • TABLE_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 Anda
  • TABLE_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