Lakehouse menyediakan interoperabilitas dengan BigQuery dengan merutekan permintaan melalui endpoint katalog REST Apache Iceberg ke katalog BigQuery. Dengan kemampuan ini, Anda dapat mengekspos tabel yang dikelola oleh BigQuery, misalnya tabel yang dikelola Iceberg, ke mesin open source (OSS) eksternal seperti Apache Spark dan Trino.
Alih-alih membuat container katalog Lakehouse khusus untuk menyimpan metadata, endpoint katalog REST Apache Iceberg bertindak murni sebagai gateway proxy. Saat mesin eksternal terhubung menggunakan awalan warehouse bq://, gateway akan merutekan permintaan katalognya langsung ke katalog internal BigQuery.
Dengan begitu, Anda dapat membuat dan mengelola tabel langsung di BigQuery menggunakan DDL atau API BigQuery standar, sekaligus memberi mesin OSS eksternal akses hanya baca untuk mengkueri tabel tersebut melalui endpoint katalog REST.
Cara kerja kueri tabel BigQuery melalui endpoint katalog REST
Dengan merutekan permintaan ke katalog BigQuery, Anda dapat mengekspos tabel BigQuery—seperti tabel terkelola Iceberg dan tabel metastore BigQuery—melalui endpoint katalog REST Apache Iceberg katalog runtime Lakehouse.
Alur kerja beroperasi sebagai berikut:
- Membuat tabel di katalog BigQuery: Anda membuat tabel terkelola Iceberg di BigQuery menggunakan pernyataan DDL. Tabel ini ada di katalog BigQuery, diatur oleh daftar kontrol akses (ACL) BigQuery, dan berfungsi sebagai resource REST BigQuery.
- Federasi ke dalam warehouse BigQuery dari
katalog runtime Lakehouse: Dengan menggunakan
Apache Iceberg REST API katalog runtime Lakehouse, Anda memfederasi
ke dalam warehouse yang ditentukan oleh format jalur warehouse
bq://projects/PROJECT_ID(atau versi regional,bq://projects/PROJECT_ID/locations/LOCATION). Hal ini memungkinkan Anda mengakses tabel BigQuery dari Compute Engine seperti Apache Spark melalui Apache Iceberg REST Catalog API. Dalam konfigurasi ini, Anda mendapatkan pengalaman hanya baca dari Spark, tetapi pengalaman baca-tulis dari BigQuery.
Pertimbangan
Karena permintaan perutean ke katalog BigQuery tidak membuat resource katalog Lakehouse khusus, konsep dan konfigurasi tingkat katalog lainnya—seperti hierarki resource, region bucket dan katalog, serta struktur penamaan P.C.N.T empat bagian—tidak berlaku untuk metode ini. Di API yang mendasarinya, hal ini sesuai dengan konfigurasi
CATALOG_TYPE_BIGQUERY. Delegasi akses penyimpanan (penjualan kredensial) tidak didukung saat merutekan permintaan ke katalog BigQuery.Mengekspos tabel BigQuery melalui endpoint katalog REST berbeda dengan mengakses data lintas cloud. Meskipun alur kerja ini mengekspos tabel Google Cloud ke mesin OSS eksternal, Lakehouse menghubungkan Google Cloud ke katalog eksternal jarak jauh, seperti Databricks Unity Catalog, untuk mengkueri data yang disimpan di penyedia cloud lain langsung dari BigQuery dan mesin OSS tanpa memigrasikan data. Untuk mengetahui informasi selengkapnya tentang alur kerja tersebut, lihat Tentang akses data lintas cloud.
Perbandingan dengan tabel yang dikelola oleh endpoint katalog REST Apache Iceberg
Mengekspos tabel BigQuery melalui endpoint katalog REST berbeda dengan alur kerja saat katalog runtime Lakehouse menggunakan endpoint katalog REST Apache Iceberg dengan cara berikut:
- Pengelolaan resource dan penyimpanan katalog: Tabel di katalog BigQuery berada di sana sebagai resource REST BigQuery, dan katalog runtime Lakehouse bertindak sebagai gateway proxy. Saat katalog runtime Lakehouse menggunakan endpoint katalog REST Apache Iceberg untuk mengelola tabel secara langsung, tabel tersebut disimpan sebagai resource REST Lakehouse.
- Kontrol akses: Tabel dalam katalog BigQuery menggunakan izin IAM BigQuery dan daftar kontrol akses (ACL). Tabel yang dikelola langsung di katalog runtime Lakehouse menggunakan ACL Lakehouse.
- Kemampuan baca dan tulis mesin: Tabel terkelola Iceberg menyediakan akses baca-tulis melalui BigQuery, dan akses hanya baca dari mesin eksternal seperti Spark. Tabel yang dikelola langsung di katalog runtime Lakehouse melalui endpoint katalog Apache Iceberg REST mendukung operasi baca-tulis dari BigQuery dan mesin eksternal seperti Spark.
Sebelum memulai
-
Pastikan penagihan diaktifkan untuk project Google Cloud Anda.
-
Aktifkan BigLake API, jika belum diaktifkan.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengkueri tabel BigQuery melalui endpoint katalog REST Apache Iceberg, minta administrator untuk memberi Anda peran IAM berikut:
-
Membaca resource katalog dan membuat kueri data tabel:
- BigLake Viewer (
roles/biglake.viewer) di project - Storage Object Viewer (
roles/storage.objectViewer) di bucket Cloud Storage
- BigLake Viewer (
-
Membuat namespace atau mengubah tabel yang dibuat mesin eksternal:
- BigQuery Data Editor (
roles/bigquery.dataEditor) di project - Storage Admin (
roles/storage.admin) di bucket Cloud Storage
- BigQuery Data 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.
Jika Anda menggunakan mesin kueri eksternal seperti Managed Service untuk Apache Spark untuk membuat namespace atau mengubah tabel yang dibuat dari mesin eksternal, berikan peran ini ke akun layanan yang menjalankan tugas di mesin tersebut (tabel terkelola Iceberg bersifat hanya baca dari mesin eksternal).
Mengonfigurasi klien untuk BigQuery warehouse
Untuk terhubung ke warehouse BigQuery, konfigurasikan klien Anda
(seperti Apache Spark atau Trino) dengan
format warehouse bq://projects/PROJECT_ID di
kolom WAREHOUSE_PATH dalam contoh konfigurasi klien di
Mengonfigurasi aplikasi klien.
Anda juga dapat memilih untuk menyertakan lokasi BigQuery guna membatasi permintaan mendatang ke satu lokasi menggunakan format bq://projects/PROJECT_ID/locations/LOCATION.
Karena resource ini dikelola oleh BigQuery, Anda harus memiliki izin yang diperlukan yang berlaku.
Membuat namespace di BigQuery warehouse
Setelah mengonfigurasi klien, Anda dapat membuat namespace untuk tabel.
Spark
Untuk membuat namespace di BigQuery warehouse,
sertakan klausa LOCATION dan DBPROPERTIES:
spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME LOCATION 'gs://BUCKET_NAME/NAMESPACE_NAME' WITH DBPROPERTIES ('gcp-region' = 'LOCATION');") spark.sql("USE NAMESPACE_NAME;")
Ganti kode berikut:
NAMESPACE_NAME: nama untuk namespace Anda.BUCKET_NAME: bucket Cloud Storage yang Anda gunakan dengan katalog Anda.LOCATION: lokasi BigQuery. Nilai defaultnya adalah multi-regionUS.
Trino
Untuk membuat skema di BigQuery, sertakan properti LOCATION dan gcp-region:
CREATE SCHEMA IF NOT EXISTS CATALOG_NAME.SCHEMA_NAME WITH ( LOCATION = 'gs://BUCKET_NAME/SCHEMA_NAME', "gcp-region" = 'LOCATION'); USE CATALOG_NAME.SCHEMA_NAME;
Ganti kode berikut:
CATALOG_NAME: nama katalog Trino Anda yang menggunakan endpoint katalog REST Apache Iceberg.SCHEMA_NAME: nama untuk skema Anda.BUCKET_NAME: bucket Cloud Storage yang Anda gunakan dengan katalog Anda.LOCATION: lokasi BigQuery. Nilai defaultnya adalah multi-regionUS.
Membuat kueri tabel di BigQuery
Tabel yang Anda buat di warehouse BigQuery dapat dilihat di BigQuery dan dapat dikueri secara langsung menggunakan SQL BigQuery standar (tanpa memerlukan nama P.C.N.T empat bagian):
SELECT * FROM `NAMESPACE_NAME.TABLE_NAME`;
Ganti kode berikut:
NAMESPACE_NAME: nama namespace Anda.TABLE_NAME: nama tabel Anda.
Langkah berikutnya
- Pelajari cara mengelola katalog di konsol Google Cloud .
- Pelajari tabel Apache Iceberg yang didukung oleh katalog runtime Lakehouse.