Dokumen ini menunjukkan cara membuat tabel Apache Iceberg dengan metadata di katalog runtime Lakehouse menggunakan layanan Managed Service untuk Apache Spark Jobs, Spark SQL CLI, atau antarmuka web Zeppelin yang berjalan di cluster Managed Service untuk Apache Spark.
Sebelum memulai
Jika belum melakukannya, buat Google Cloud project, bucket Cloud Storage, dan cluster Managed Service untuk Apache Spark.
Menyiapkan project
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, BigQuery, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, BigQuery, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Buat bucket Cloud Storage di project Anda.
- Di konsol Google Cloud , buka halaman Buckets Cloud Storage.
- Klik Create.
- Di halaman Buat bucket, masukkan informasi bucket Anda. Untuk melanjutkan ke
langkah berikutnya, klik Lanjutkan.
-
Di bagian Mulai, lakukan tindakan berikut:
- Masukkan nama yang unik secara global yang memenuhi persyaratan penamaan bucket.
- Untuk menambahkan
label bucket,
luaskan bagian Label (),
klik add_box
Tambahkan label, lalu tentukan
keydanvalueuntuk label Anda.
-
Di bagian Pilih tempat untuk menyimpan data Anda, lakukan tindakan berikut:
- Pilih Jenis lokasi.
- Pilih lokasi tempat data bucket Anda disimpan secara permanen dari menu drop-down Location type.
- Jika memilih jenis lokasi dual-region, Anda juga dapat memilih untuk mengaktifkan replikasi turbo dengan menggunakan kotak centang yang relevan.
- Untuk menyiapkan replikasi lintas bucket, pilih
Tambahkan replikasi lintas bucket melalui Storage Transfer Service dan
ikuti langkah-langkah berikut:
Menyiapkan replikasi lintas bucket
- Di menu Bucket, pilih bucket.
Di bagian Setelan replikasi, klik Konfigurasi untuk mengonfigurasi setelan bagi tugas replikasi.
Panel Konfigurasi replikasi lintas bucket akan muncul.
- Untuk memfilter objek yang akan direplikasi menurut awalan nama objek, masukkan awalan yang ingin Anda sertakan atau kecualikan objeknya, lalu klik Tambahkan awalan.
- Untuk menetapkan kelas penyimpanan bagi objek yang direplikasi, pilih kelas penyimpanan dari menu Kelas penyimpanan. Jika Anda melewati langkah ini, objek yang direplikasi akan menggunakan kelas penyimpanan bucket tujuan secara default.
- Klik Done.
-
Di bagian Choose how to store your data, lakukan tindakan berikut:
- Pilih kelas penyimpanan default untuk bucket atau Autoclass untuk pengelolaan kelas penyimpanan otomatis untuk data bucket Anda.
- Untuk mengaktifkan namespace hierarkis, di bagian Optimalkan penyimpanan untuk workload intensif data, pilih Aktifkan namespace hierarkis di bucket ini.
- Di bagian Pilih cara mengontrol akses ke objek, pilih apakah bucket Anda menerapkan pencegahan akses publik atau tidak, lalu pilih metode kontrol akses untuk objek bucket Anda.
-
Di bagian Pilih cara melindungi data objek, lakukan
tindakan berikut:
- Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket Anda.
- Untuk mengaktifkan penghapusan sementara, klik kotak centang Kebijakan penghapusan sementara (Untuk pemulihan data), dan tentukan jumlah hari yang Anda inginkan untuk menyimpan objek setelah penghapusan.
- Untuk menyetel Pembuatan Versi Objek, klik kotak centang Pembuatan versi objek (Untuk kontrol versi), dan tentukan jumlah maksimum versi per objek dan jumlah hari setelah versi lama berakhir.
- Untuk mengaktifkan kebijakan retensi pada objek dan bucket, klik kotak centang Retensi (Untuk kepatuhan), lalu lakukan hal berikut:
- Untuk mengaktifkan Penguncian Retensi Objek, klik kotak Aktifkan retensi objek.
- Untuk mengaktifkan Bucket Lock, centang kotak Setel kebijakan retensi bucket, lalu pilih satuan waktu dan durasi untuk periode retensi data Anda.
- Untuk memilih cara mengenkripsi data objek Anda, luaskan bagian Enkripsi data (), lalu pilih metode Enkripsi data.
- Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket Anda.
-
Di bagian Mulai, lakukan tindakan berikut:
- Klik Create.
Buat cluster Managed Service untuk Apache Spark. Untuk menghemat resource dan biaya, Anda dapat membuat cluster Managed Service untuk Apache Spark node tunggal untuk menjalankan contoh yang disajikan dalam dokumen ini.
Subnet di region tempat cluster dibuat harus mengaktifkan Akses Google Pribadi (PGA).
.Jika Anda ingin menjalankan contoh antarmuka web Zeppelin dalam panduan ini, Anda harus menggunakan atau membuat cluster Managed Service untuk Apache Spark dengan komponen opsional Zeppelin diaktifkan.
Memberikan peran ke akun layanan kustom (jika diperlukan): Secara default, VM cluster Managed Service untuk Apache Spark menggunakan akun layanan default Compute Engine untuk berinteraksi dengan Managed Service untuk Apache Spark. Jika Anda ingin menentukan akun layanan kustom saat membuat cluster, akun tersebut harus memiliki peran Managed Service untuk Apache Spark Worker (
roles/dataproc.worker) atau peran kustom dengan izin peran Worker yang diperlukan.
Pemetaan database OSS ke set data BigQuery
Perhatikan pemetaan berikut antara istilah database open source dan set data BigQuery:
| Database OSS | BigQuery dataset |
|---|---|
| Namespace, Database | Set data |
| Tabel Berpartisi atau Tidak Berpartisi | Tabel |
| Lihat | Lihat |
Membuat tabel Iceberg
Bagian ini menunjukkan cara membuat tabel Iceberg dengan metadata di katalog runtime Lakehouse dengan mengirimkan kode Spark SQL ke Managed Service untuk Apache Spark, Spark SQL CLI, dan antarmuka web komponen Zeppelin, yang berjalan di cluster Managed Service untuk Apache Spark.
Managed Service untuk tugas Apache Spark
Anda dapat mengirimkan tugas ke Managed Service untuk Apache Spark dengan mengirimkan tugas ke cluster Managed Service untuk Apache Spark menggunakan konsolGoogle Cloud atau Google Cloud CLI, atau melalui permintaan REST HTTP atau panggilan gRPC Managed Service untuk Apache Spark Cloud Client Libraries terprogram ke Jobs API.
Contoh di bagian ini menunjukkan cara mengirimkan tugas Spark SQL Managed Service untuk Apache Spark ke layanan Managed Service untuk Apache Spark guna membuat tabel Iceberg dengan metadata di BigQuery menggunakan gcloud CLI, Google Cloud konsol, atau REST API.
Menyiapkan file tugas
Lakukan langkah-langkah berikut untuk membuat file tugas Spark SQL. File ini berisi perintah Spark SQL untuk membuat dan memperbarui tabel Iceberg.
Di jendela terminal lokal atau di Cloud Shell, gunakan editor teks, seperti
viataunano, untuk menyalin perintah berikut ke dalam fileiceberg-table.sql, lalu simpan file di direktori saat ini.USE CATALOG_NAME; CREATE NAMESPACE IF NOT EXISTS example_namespace; USE example_namespace; DROP TABLE IF EXISTS example_table; CREATE TABLE example_table (id int, data string) USING ICEBERG LOCATION 'gs://BUCKET/WAREHOUSE_FOLDER'; INSERT INTO example_table VALUES (1, 'first row'); ALTER TABLE example_table ADD COLUMNS (newDoubleCol double); DESCRIBE TABLE example_table;
Ganti kode berikut:
- CATALOG_NAME: Nama katalog Iceberg.
- BUCKET dan WAREHOUSE_FOLDER: Bucket Cloud Storage dan folder yang digunakan untuk gudang Iceberg.
Gunakan gcloud CLI untuk menyalin
iceberg-table.sqllokal ke bucket Anda di Cloud Storage.gcloud storage cp iceberg-table.sql gs://BUCKET/
Selanjutnya, download dan salin file JAR iceberg-spark-runtime-3.5_2.12-1.6.1 ke
Cloud Storage.
Di jendela terminal lokal atau di Cloud Shell, jalankan perintah
curlberikut untuk mendownload file JARiceberg-spark-runtime-3.5_2.12-1.6.1ke direktori saat ini.curl -o iceberg-spark-runtime-3.5_2.12-1.6.1.jar https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar
Menggunakan gcloud CLI untuk menyalin file JAR
iceberg-spark-runtime-3.5_2.12-1.6.1lokal dari direktori saat ini ke bucket Anda di Cloud Storage.gcloud storage cp iceberg-spark-runtime-3.5_2.12-1.6.1.jar gs://BUCKET/
Kirimkan tugas Spark SQL
Pilih tab untuk mengikuti petunjuk guna mengirimkan tugas Spark SQL ke Managed Service untuk Apache Spark menggunakan gcloud CLI, Google Cloud konsol, atau Managed Service untuk Apache Spark REST API.
gcloud
Jalankan perintah gcloud dataproc jobs submit spark-sql berikut secara lokal di jendela terminal lokal atau di Cloud Shell untuk mengirimkan tugas Spark SQL guna membuat tabel Iceberg.
gcloud dataproc jobs submit spark-sql \ --project=PROJECT_ID \ --cluster=CLUSTER_NAME \ --region=REGION \ --jars="gs://BUCKET/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR" \ --properties="spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,spark.sql.catalog.CATALOG_NAME.catalog-impl=org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog,spark.sql.catalog.CATALOG_NAME.gcp_project=PROJECT_ID,spark.sql.catalog.CATALOG_NAME.gcp_location=LOCATION,spark.sql.catalog.CATALOG_NAME.warehouse=gs://BUCKET/WAREHOUSE_FOLDER" \ -f="gs://BUCKETiceberg-table.sql"
Catatan:
- PROJECT_ID: Project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Google Cloud Dasbor konsol.
- CLUSTER_NAME: Nama cluster Managed Service untuk Apache Spark Anda.
- REGION: Region Compute Engine tempat cluster Anda berada.
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage dari plugin katalog kustom Iceberg yang akan digunakan. Bergantung pada nomor versi Iceberg Anda, pilih salah satu opsi berikut:- Iceberg 1.9.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1:
- CATALOG_NAME: Nama katalog Iceberg.
- BUCKET dan WAREHOUSE_FOLDER: Bucket Cloud Storage dan folder yang digunakan untuk gudang Iceberg.
- LOCATION: Lokasi BigQuery yang didukung. Lokasi defaultnya adalah "US".
--jars: JAR yang tercantum diperlukan untuk membuat metadata tabel di katalog runtime Lakehouse.--properties: Properti katalog.-f: File tugasiceberg-table.sqlyang Anda salin ke bucket Anda di Cloud Storage.
Lihat deskripsi tabel di output terminal saat tugas selesai.
Time taken: 2.194 seconds id int data string newDoubleCol double Time taken: 1.479 seconds, Fetched 3 row(s) Job JOB_ID finished successfully.
Untuk melihat metadata tabel di BigQuery
Di konsol Google Cloud , buka halaman BigQuery.
Melihat metadata tabel Iceberg.
Konsol
Lakukan langkah-langkah berikut untuk menggunakan konsol Google Cloud guna mengirimkan tugas Spark SQL ke Managed Service untuk Apache Spark untuk membuat tabel Iceberg dengan metadata di katalog runtime Lakehouse.
Di konsol Google Cloud , buka Managed Service untuk Apache Spark Submit a job.
Buka halaman Kirimkan tugas, lalu lengkapi kolom berikut:
- ID pekerjaan: Terima ID yang disarankan atau masukkan ID Anda sendiri.
- Region: Pilih region tempat cluster Anda berada.
- Cluster: Pilih cluster Anda.
- Jenis pekerjaan: Pilih
SparkSql. - Jenis sumber kueri: Pilih
Query file. - File kueri: Sisipkan
gs://BUCKET/iceberg-table.sql - File JAR: Masukkan kode berikut:
gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR
- BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage dari plugin katalog kustom Iceberg yang akan digunakan. Bergantung pada nomor versi Iceberg Anda, pilih salah satu opsi
berikut:
- Iceberg 1.9.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1:
- Properti: Klik Tambahkan Properti
lima kali untuk membuat daftar lima kolom input
keyvalue, lalu salin pasangan Kunci dan Nilai berikut untuk menentukan lima properti.# Kunci Nilai 1. spark.sql.catalog.CATALOG_NAMEorg.apache.iceberg.spark.SparkCatalog2. spark.sql.catalog.CATALOG_NAME.catalog-implorg.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog3. spark.sql.catalog.CATALOG_NAME.gcp_projectPROJECT_ID4. spark.sql.catalog.CATALOG_NAME.gcp_locationLOCATION5. spark.sql.catalog.CATALOG_NAME.warehousegs://BUCKET/WAREHOUSE_FOLDER
Catatan:
- CATALOG_NAME: Nama katalog Iceberg.
- PROJECT_ID: Project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Google Cloud Dasbor konsol. region tempat cluster Anda berada.
- LOCATION: Lokasi BigQuery yang didukung. Lokasi defaultnya adalah "US".
- BUCKET dan WAREHOUSE_FOLDER: Bucket Cloud Storage dan folder yang digunakan untuk gudang Iceberg.
Klik Kirim
Untuk memantau progres tugas dan melihat output tugas, buka halaman Jobs Managed Service untuk Apache Spark di konsol Google Cloud , lalu klik
Job IDuntuk membuka halaman Job details.
Untuk melihat metadata tabel di BigQuery
Di konsol Google Cloud , buka halaman BigQuery.
Melihat metadata tabel Iceberg.
REST
Anda dapat menggunakan API jobs.submit Managed Service untuk Apache Spark untuk mengirimkan tugas Spark SQL ke Managed Service untuk Apache Spark guna membuat tabel Iceberg dengan metadata dalam katalog runtime Lakehouse.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Dasbor konsol Google Cloud .
- CLUSTER_NAME: Nama cluster Managed Service untuk Apache Spark Anda.
- REGION: Region Compute Engine tempat cluster Anda berada.
- CATALOG_NAME: Nama katalog Iceberg.
- BUCKET dan WAREHOUSE_FOLDER: Bucket dan folder Cloud Storage yang digunakan untuk gudang Iceberg. LOCATION: Lokasi BigQuery yang didukung. Lokasi defaultnya adalah "US".
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage dari plugin katalog kustom Iceberg yang akan digunakan. Bergantung pada nomor versi Iceberg Anda, pilih salah satu opsi berikut:- Iceberg 1.9.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1:
jarFileUris: JAR yang tercantum diperlukan untuk membuat metadata tabel di BigQuery Metastore.properties: Properti katalog.queryFileUri: File tugasiceberg-table.sqlyang Anda salin ke bucket Anda di Cloud Storage.
Metode HTTP dan URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit
Meminta isi JSON:
{
"projectId": "PROJECT_ID",
"job": {
"placement": {
"clusterName": "CLUSTER_NAME"
},
"statusHistory": [],
"reference": {
"jobId": "",
"projectId": "PROJECT_ID"
},
"sparkSqlJob": {
"properties": {
"spark.sql.catalog."CATALOG_NAME": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog."CATALOG_NAME".catalog-impl": "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog",
"spark.sql.catalog."CATALOG_NAME".gcp_project": "PROJECT_ID",
"spark.sql.catalog."CATALOG_NAME".gcp_location": "LOCATION",
"spark.sql.catalog."CATALOG_NAME".warehouse": "gs://BUCKET/WAREHOUSE_FOLDER"
},
"jarFileUris": [
"gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR"
],
"scriptVariables": {},
"queryFileUri": "gs://BUCKET/iceberg-table.sql"
}
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"reference": {
"projectId": "PROJECT_ID",
"jobId": "..."
},
"placement": {
"clusterName": "CLUSTER_NAME",
"clusterUuid": "..."
},
"status": {
"state": "PENDING",
"stateStartTime": "..."
},
"submittedBy": "USER",
"sparkSqlJob": {
"queryFileUri": "gs://BUCKET/iceberg-table.sql",
"properties": {
"spark.sql.catalog.USER_catalog": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.USER_catalog.catalog-impl": "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog",
"spark.sql.catalog.USER_catalog.gcp_project": "PROJECT_ID",
"spark.sql.catalog.USER_catalog.gcp_location": "LOCATION",
"spark.sql.catalog.USER_catalog.warehouse": "gs://BUCKET/WAREHOUSE_FOLDER"
},
"jarFileUris": [
"gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar",
"BIGLAKE_ICEBERG_CATALOG_JAR"
]
},
"driverControlFilesUri": "gs://dataproc-...",
"driverOutputResourceUri": "gs://dataproc-.../driveroutput",
"jobUuid": "...",
"region": "REGION"
}
Untuk memantau progres tugas dan melihat output tugas, buka halaman Jobs Managed Service untuk Apache Spark di konsol Google Cloud , lalu klik Job ID untuk membuka halaman Job details.
Untuk melihat metadata tabel di BigQuery
Di konsol Google Cloud , buka halaman BigQuery.
Melihat metadata tabel Iceberg.
CLI Spark SQL
Langkah-langkah berikut menunjukkan cara membuat tabel Iceberg dengan metadata tabel yang disimpan dalam katalog runtime Lakehouse menggunakan Spark SQL CLI yang berjalan di node master cluster Managed Service untuk Apache Spark.
Gunakan SSH untuk terhubung ke node master cluster Managed Service untuk Apache Spark Anda.
Di terminal sesi SSH, gunakan editor teks
viataunanountuk menyalin perintah berikut ke dalam fileiceberg-table.sql.SET CATALOG_NAME = `CATALOG_NAME`; SET BUCKET = `BUCKET`; SET WAREHOUSE_FOLDER = `WAREHOUSE_FOLDER`; USE `${CATALOG_NAME}`; CREATE NAMESPACE IF NOT EXISTS `${CATALOG_NAME}`.example_namespace; DROP TABLE IF EXISTS `${CATALOG_NAME}`.example_namespace.example_table; CREATE TABLE `${CATALOG_NAME}`.example_namespace.example_table (id int, data string) USING ICEBERG LOCATION 'gs://${BUCKET}/${WAREHOUSE_FOLDER}'; INSERT INTO `${CATALOG_NAME}`.example_namespace.example_table VALUES (1, 'first row'); ALTER TABLE `${CATALOG_NAME}`.example_namespace.example_table ADD COLUMNS (newDoubleCol double); DESCRIBE TABLE `${CATALOG_NAME}`.example_namespace.example_table;Ganti kode berikut:
- CATALOG_NAME: Nama katalog Iceberg.
- BUCKET dan WAREHOUSE_FOLDER: Bucket Cloud Storage dan folder yang digunakan untuk gudang Iceberg.
Di terminal sesi SSH, jalankan perintah
spark-sqlberikut untuk membuat tabel iceberg.spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1 \ --jars https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR \ --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.CATALOG_NAME.catalog-impl=org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog \ --conf spark.sql.catalog.CATALOG_NAME.gcp_project=PROJECT_ID \ --conf spark.sql.catalog.CATALOG_NAME.gcp_location=LOCATION \ --conf spark.sql.catalog.CATALOG_NAME.warehouse=gs://BUCKET/WAREHOUSE_FOLDER \ -f iceberg-table.sql
Ganti kode berikut:
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage dari plugin katalog kustom Iceberg yang akan digunakan. Bergantung pada nomor versi Iceberg Anda, pilih salah satu opsi berikut:- Iceberg 1.9.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1:
- PROJECT_ID: Project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Google Cloud Dasbor konsol.
- LOCATION: Lokasi BigQuery yang didukung. Lokasi defaultnya adalah "US".
Melihat metadata tabel di BigQuery
Di konsol Google Cloud , buka halaman BigQuery.
Melihat metadata tabel Iceberg.
Antarmuka web Zeppelin
Langkah-langkah berikut menunjukkan cara membuat tabel Iceberg dengan metadata tabel yang disimpan dalam katalog runtime Lakehouse menggunakan antarmuka web Zeppelin yang berjalan di node master cluster Managed Service untuk Apache Spark .
Di konsol Google Cloud , buka halaman Clusters Managed Service untuk Apache Spark.
Pilih nama cluster Anda untuk membuka halaman Cluster details.
Klik tab Web Interfaces untuk menampilkan daftar link Component Gateway ke antarmuka web komponen default dan opsional yang diinstal di cluster.
Klik link Zeppelin untuk membuka antarmuka web Zeppelin.
Di antarmuka web Zeppelin, klik menu anonymous, lalu klik Interpreter untuk membuka halaman Interpreters.
Tambahkan dua JAR ke interpreter Zeppelin Spark, sebagai berikut:
- Ketik "Spark" di kotak
Search interpretersuntuk men-scroll ke bagian interpreter Spark. - Klik edit.
Tempelkan kode berikut di kolom spark.jars:
https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR
Tambahkan catatan berikut:
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage dari plugin katalog kustom Iceberg yang akan digunakan. Bergantung pada nomor versi Iceberg Anda, pilih salah satu opsi berikut:- Iceberg 1.9.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1:
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
Klik Simpan di bagian bawah bagian interpreter Spark, lalu klik OK untuk mengupdate interpreter dan memulai ulang interpreter Spark dengan setelan baru.
- Ketik "Spark" di kotak
Dari menu notebook Zeppelin, klik Create new note.
Dalam dialog Create new note, masukkan nama untuk notebook, dan terima interpreter spark default. Klik Buat untuk membuka notebook.
Salin kode PySpark berikut ke dalam notebook Zeppelin Anda setelah mengisi variabel.
%pyspark
from pyspark.sql import SparkSession
project_id = "PROJECT_ID" catalog = "CATALOG_NAME" namespace = "NAMESPACE" location = "LOCATION" warehouse_dir = "gs://BUCKET/WAREHOUSE_DIRECTORY"
spark = SparkSession.builder \ .appName("BigQuery Metastore Iceberg") \ .config(f"spark.sql.catalog.{catalog}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog}.catalog-impl", "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog") \ .config(f"spark.sql.catalog.{catalog}.gcp_project", f"{project_id}") \ .config(f"spark.sql.catalog.{catalog}.gcp_location", f"{location}") \ .config(f"spark.sql.catalog.{catalog}.warehouse", f"{warehouse_dir}") \ .getOrCreate()
spark.sql(f"USE `{catalog}`;") spark.sql(f"CREATE NAMESPACE IF NOT EXISTS `{namespace}`;") spark.sql(f"USE `{namespace}`;")
\# Create table and display schema (without LOCATION) spark.sql("DROP TABLE IF EXISTS example_iceberg_table") spark.sql("CREATE TABLE example_iceberg_table (id int, data string) USING ICEBERG") spark.sql("DESCRIBE example_iceberg_table;")
\# Insert table data. spark.sql("INSERT INTO example_iceberg_table VALUES (1, 'first row');")
\# Alter table, then display schema. spark.sql("ALTER TABLE example_iceberg_table ADD COLUMNS (newDoubleCol double);")
\# Select and display the contents of the table. spark.sql("SELECT * FROM example_iceberg_table").show()Ganti kode berikut:
- PROJECT_ID: Project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Google Cloud Dasbor konsol.
- CATALOG_NAME dan NAMESPACE: Nama katalog dan namespace Iceberg digabungkan untuk mengidentifikasi tabel Iceberg (
catalog.namespace.table_name). - LOCATION: Lokasi BigQuery yang didukung. Lokasi defaultnya adalah "US".
- BUCKET dan WAREHOUSE_DIRECTORY: bucket Cloud Storage dan folder yang digunakan sebagai direktori gudang Iceberg.
Klik ikon jalankan atau tekan
Shift-Enteruntuk menjalankan kode. Setelah tugas selesai, pesan status akan menampilkan "Spark Job Finished", dan output akan menampilkan isi tabel:
Melihat metadata tabel di BigQuery
Di konsol Google Cloud , buka halaman BigQuery.
Melihat metadata tabel Iceberg.