Menggunakan metastore BigLake dengan katalog REST Iceberg
Katalog REST Apache Iceberg terkelola di metastore BigLake menciptakan interoperabilitas antara semua mesin kueri Anda dengan menawarkan satu sumber tepercaya untuk semua data Iceberg Anda. Dengan demikian, mesin kueri, seperti Apache Spark, dapat menemukan, membaca metadata dari, dan mengelola tabel Iceberg secara konsisten.
Tabel Iceberg yang Anda gunakan dengan katalog REST Iceberg disebut tabel BigLake untuk Apache Iceberg (pratinjau). Ini adalah tabel Iceberg yang Anda buat dari mesin open source dan disimpan di Cloud Storage. Tabel ini dapat dibaca oleh mesin open source atau BigQuery. Penulisan hanya didukung dari mesin open source. Dalam dokumen ini, kita menyebut tabel ini sebagai tabel BigLake Iceberg.
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 BigLake API.
- Opsional: Pahami cara kerja metastore BigLake dan alasan Anda harus menggunakannya.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menggunakan katalog REST Iceberg di metastore BigLake, minta administrator Anda untuk memberi Anda peran IAM berikut di project atau akun layanan Anda:
-
Admin BigLake (
roles/biglake.admin
) -
Storage Admin (
roles/storage.admin
)
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.
Batasan
Katalog REST Iceberg tunduk pada batasan berikut:
- Bucket multi-region, bucket dual-region, dan bucket dengan penempatan region kustom tidak didukung.
Mengonfigurasi mesin kueri dengan katalog REST Iceberg
import google.auth from google.auth.transport.requests import Request from google.oauth2 import service_account import pyspark from pyspark.context import SparkContext from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config("spark.sql.defaultCatalog", catalog_name) \ .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \ .config(f"spark.sql.catalog.{catalog_name}.uri","https://biglake.googleapis.com/iceberg/v1beta/restcatalog") \ .config(f"spark.sql.catalog.{catalog_name}.warehouse", "gs://STORAGE_URI") \ .config(f"spark.sql.catalog.{catalog_name}.token", "TOKEN") \ .config(f"spark.sql.catalog.{catalog_name}.oauth2-server-uri", "https://oauth2.googleapis.com/token") \ .config(f"spark.sql.catalog.{catalog_name}.header.x-goog-user-project", "PROJECT_ID") \ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \ .config(f"spark.sql.catalog.{catalog_name}.io-impl","org.apache.iceberg.hadoop.HadoopFileIO") \ .config(f"spark.sql.catalog.{catalog_name}.rest-metrics-reporting-enabled", "false") \ .getOrCreate()
Ganti kode berikut:
CATALOG_NAME
: nama untuk katalog REST Iceberg Anda.APP_NAME
: nama untuk sesi Spark Anda.STORAGE_URI
: URI bucket Cloud Storage yang berisi tabel Iceberg BigLake Anda.TOKEN
: token autentikasi Anda, yang valid selama satu jam, misalnya,gcloud auth application-default print-access-token
.PROJECT_ID
: project yang ditagih untuk penggunaan katalog REST Iceberg, yang mungkin berbeda dengan project yang memiliki bucket Cloud Storage. Untuk mengetahui detail tentang konfigurasi project saat menggunakan REST API, lihat Parameter sistem.
Buat namespace
spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME;") spark.sql("USE NAMESPACE_NAME;")
Ganti NAMESPACE_NAME
dengan nama untuk namespace Anda.
Membuat tabel
spark.sql("CREATE TABLE 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
Membuat daftar tabel
spark.sql("SHOW TABLES").show()
Menyisipkan data ke dalam tabel
Contoh berikut menyisipkan data sampel ke dalam tabel:
spark.sql("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.sql("SELECT * FROM TABLE_NAME;").show()
Mengubah skema tabel
Contoh berikut menambahkan kolom ke tabel:
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);") spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Menghapus tabel
Contoh berikut menghapus tabel dari namespace tertentu:
spark.sql("DROP TABLE TABLE_NAME;")
Harga
Untuk mengetahui detail harga, lihat Harga BigLake.
Langkah berikutnya
- Pelajari lebih lanjut cara mengelola resource Iceberg dengan metastore BigLake.
- Pelajari fitur metastore BigLake tambahan.