Dokumen ini menunjukkan cara menjalankan workload batch Dataproc Serverless untuk Spark SQL dan PySpark untuk membuat tabel Apache Iceberg dengan metadata yang disimpan di BigQuery Metastore. Untuk informasi tentang cara lain menjalankan kode Spark, lihat Menjalankan kode PySpark di notebook BigQuery dan Menjalankan beban kerja Apache Spark
Sebelum memulai
Jika Anda belum melakukannya, buat project Google Cloud dan bucket Cloud Storage.
Menyiapkan project
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Dataproc, BigQuery, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Dataproc, BigQuery, and Cloud Storage APIs.
Buat bucket Cloud Storage di project Anda.
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Berikan peran BigQuery Data Editor (
roles/bigquery.dataEditor
) ke akun layanan default Compute Engine,PROJECT_NUMBER-compute@developer.gserviceaccount.com
. Untuk mengetahui petunjuknya, lihat Memberikan satu peran.Contoh Google Cloud CLI:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role roles/bigquery.dataEditor
Catatan:
- PROJECT_ID dan PROJECT_NUMBER tercantum di bagian Project info di Dasbor konsol Google Cloud.
Pastikan subnet VPC regional tempat Anda akan menjalankan workload batch Dataproc Serverless telah mengaktifkan Akses Google Pribadi. Untuk mengetahui informasi selengkapnya, lihat Membuat tabel Iceberg.
Pemetaan resource OSS ke resource BigQuery
Perhatikan pemetaan berikut antara istilah resource open source dan resource BigQuery:
Referensi OSS | Resource BigQuery |
---|---|
Namespace, Database | Set data |
Tabel yang Dipartisi atau Tidak Dipartisi | Tabel |
Lihat | Lihat |
Membuat tabel Iceberg
Bagian ini menunjukkan cara membuat tabel Iceberg dengan metadata di BigQuery Metastore menggunakan workload batch Spark SQL dan PySpark Dataproc Serverless.
Spark SQL
Menjalankan beban kerja Spark SQL untuk membuat tabel Iceberg
Langkah-langkah berikut menunjukkan cara menjalankan beban kerja batch SQL Spark Serverless Dataproc untuk membuat tabel Iceberg dengan metadata tabel yang disimpan di BigQuery Metastore.
Salin perintah Spark SQL berikut secara lokal atau di Cloud Shell ke dalam file
iceberg-table.sql
.USE CATALOG_NAME; CREATE NAMESPACE IF NOT EXISTS 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 dan folder Cloud Storage yang digunakan sebagai direktori penyimpanan Iceberg.
Jalankan perintah berikut secara lokal atau di Cloud Shell dari direktori yang berisi
iceberg-table.sql
untuk mengirimkan beban kerja Spark SQL.gcloud dataproc batches submit spark-sql iceberg-table.sql \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_NAME \ --version=2.2 \ --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --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"
Catatan:
- PROJECT_ID: project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Dasbor konsol Google Cloud.
- REGION: Region Compute Engine yang tersedia untuk menjalankan beban kerja.
- BUCKET_NAME: Nama bucket Cloud Storage Anda. Spark mengupload dependensi workload ke folder
/dependencies
di bucket ini sebelum menjalankan workload batch. WAREHOUSE_FOLDER terletak di bucket ini. - SUBNET_NAME: Nama subnet VPC di
REGION
yang telah mengaktifkan Akses Google Pribadi dan memenuhi persyaratan subnet sesi lainnya. - LOCATION: Lokasi BigQuery yang didukung. Lokasi defaultnya adalah "US".
--version
: Runtime Dataproc Serverless versi 2.2 atau yang lebih baru.--properties
Properti katalog.
Melihat metadata tabel di BigQuery
Di Konsol Google Cloud, buka halaman BigQuery.
Melihat metadata tabel Iceberg.
PySpark
Langkah-langkah berikut menunjukkan cara menjalankan workload batch PySpark Dataproc Serverless untuk membuat tabel Iceberg dengan metadata tabel yang disimpan di BigQuery Metastore.
- Salin kode PySpark berikut secara lokal atau di
Cloud Shell
ke dalam file
iceberg-table.py
.catalog = "CATALOG_NAME" namespace = "NAMESPACE" spark.sql(f"USE `{catalog}`;") spark.sql(f"CREATE NAMESPACE IF NOT EXISTS `{namespace}`;") spark.sql(f"USE `{namespace}`;") # Create table and display schema 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);") spark.sql("DESCRIBE example_iceberg_table;")
Ganti kode berikut:
- CATALOG_NAME dan NAMESPACE: Nama katalog dan namespace Iceberg digabungkan untuk mengidentifikasi tabel Iceberg (
catalog.namespace.table_name
).
- CATALOG_NAME dan NAMESPACE: Nama katalog dan namespace Iceberg digabungkan untuk mengidentifikasi tabel Iceberg (
-
Jalankan perintah berikut secara lokal atau di Cloud Shell dari direktori yang berisi
iceberg-table.py
untuk mengirimkan beban kerja PySpark.gcloud dataproc batches submit pyspark iceberg-table.py \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_NAME \ --version=2.2 \ --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --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"
Catatan:
- PROJECT_ID: project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Dasbor konsol Google Cloud.
- REGION: Region Compute Engine yang tersedia untuk menjalankan beban kerja.
- BUCKET_NAME: Nama bucket Cloud Storage Anda. Spark mengupload dependensi workload ke folder
/dependencies
di bucket ini sebelum menjalankan workload batch. - SUBNET_NAME: Nama subnet VPC di
REGION
yang telah mengaktifkan Akses Google Pribadi dan memenuhi persyaratan subnet sesi lainnya. --version
: Runtime Dataproc Serverless versi 2.2 atau yang lebih baru.- LOCATION: Lokasi BigQuery yang didukung. Lokasi defaultnya adalah "US".
- BUCKET dan WAREHOUSE_FOLDER: Bucket dan folder Cloud Storage yang digunakan sebagai direktori warehouse Iceberg.
--properties
: Properti katalog.
- Lihat skema tabel di BigQuery.
- Di Konsol Google Cloud, buka halaman BigQuery. Buka BigQuery Studio
- Melihat metadata tabel Iceberg.