Menggunakan metastore BigQuery dengan Dataproc Serverless
Dokumen ini menjelaskan cara menggunakan metastore BigQuery dengan Dataproc Serverless.
Sebelum memulai
- Aktifkan penagihan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan diaktifkan pada project.
Aktifkan BigQuery dan Dataproc API.
Opsional: Pahami cara kerja metastore BigQuery dan alasan Anda harus menggunakannya.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menggunakan Spark dan Dataproc Serverless dengan metastore BigQuery sebagai penyimpanan metadata, minta administrator untuk memberi Anda peran IAM berikut:
-
Buat tabel metastore BigQuery di Spark:
-
Dataproc Worker (
roles/dataproc.worker
) di akun layanan Dataproc Serverless dalam project -
BigQuery Data Editor (
roles/bigquery.dataEditor
) di akun layanan Dataproc Serverless dalam project -
Storage Object Admin (
roles/storage.objectAdmin
) di akun layanan Dataproc Serverless dalam project
-
Dataproc Worker (
-
Buat kueri tabel metastore BigQuery di BigQuery:
-
BigQuery Data Viewer (
roles/bigquery.dataViewer
) di project -
Pengguna BigQuery (
roles/bigquery.user
) di project -
Storage Object Viewer (
roles/storage.objectViewer
) di project
-
BigQuery Data Viewer (
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.
Alur kerja umum
Untuk menggunakan BigQuery dengan Dataproc Serverless, Anda harus mengikuti langkah-langkah umum berikut:
- Buat file dengan perintah yang ingin Anda jalankan di metastore BigQuery.
- Hubungkan ke mesin software open source pilihan Anda.
- Kirim tugas batch menggunakan metode pilihan Anda, seperti Spark SQL atau PySpark.
Menghubungkan metastore BigQuery dengan Spark
Petunjuk berikut menunjukkan cara menghubungkan Dataproc Serverless ke metastore BigQuery:
SparkSQL
Untuk mengirimkan tugas batch Spark SQL, selesaikan langkah-langkah berikut.
Buat file SQL dengan perintah Spark SQL yang ingin Anda jalankan di metastore BigQuery. Misalnya, perintah ini membuat namespace dan tabel.
CREATE NAMESPACE `CATALOG_NAME`.NAMESPACE_NAME; CREATE TABLE `CATALOG_NAME`.NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY';
Ganti kode berikut:
CATALOG_NAME
: nama katalog yang mereferensikan tabel Spark Anda.NAMESPACE_NAME
: nama namespace yang mereferensikan tabel Spark Anda.TABLE_NAME
: nama tabel untuk tabel Spark Anda.WAREHOUSE_DIRECTORY
: URI folder Cloud Storage tempat data warehouse Anda disimpan.
Kirim tugas batch Spark SQL, dengan menjalankan perintah gcloud CLI
gcloud dataproc batches submit spark-sql
berikut:gcloud dataproc batches submit spark-sql SQL_SCRIPT_PATH \ --project=PROJECT_ID \ --region=REGION \ --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --deps-bucket=BUCKET_PATH \ --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=WAREHOUSE_DIRECTORY"
Ganti kode berikut:
SQL_SCRIPT_PATH
: jalur ke file SQL yang digunakan oleh tugas batch.PROJECT_ID
: ID project Google Cloud tempat menjalankan tugas batch.REGION
: region tempat workload Anda berjalan.SUBNET_NAME
: opsional: Nama subnet VPC diREGION
yang telah mengaktifkan Akses Google Pribadi dan memenuhi persyaratan subnet sesi lainnya.LOCATION
: lokasi untuk menjalankan tugas batch.BUCKET_PATH
: lokasi bucket Cloud Storage untuk mengupload dependensi beban kerja.WAREHOUSE_FOLDER
berada di bucket ini. Awalan URIgs://
bucket tidak diperlukan. Anda dapat menentukan jalur bucket atau nama bucket, misalnya,mybucketname1
.
Untuk mengetahui informasi selengkapnya tentang cara mengirimkan tugas batch Spark, lihat Menjalankan workload batch Spark.
PySpark
Untuk mengirimkan tugas batch PySpark, selesaikan langkah-langkah berikut.
Buat file python dengan perintah PySpark yang ingin Anda jalankan di metastore BigQuery.
Misalnya, perintah berikut menyiapkan lingkungan Spark untuk berinteraksi dengan tabel Iceberg yang disimpan di metastore BigQuery. Perintah ini kemudian membuat namespace baru dan tabel Iceberg dalam namespace tersebut.
from pyspark.sql import SparkSession spark = SparkSession.builder .appName("BigQuery Metastore Iceberg") \ .config("spark.sql.catalog.CATALOG_NAME", "org.apache.iceberg.spark.SparkCatalog") \ .config("spark.sql.catalog.CATALOG_NAME.catalog-impl", "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog") \ .config("spark.sql.catalog.CATALOG_NAME.gcp_project", "PROJECT_ID") \ .config("spark.sql.catalog.CATALOG_NAME.gcp_location", "LOCATION") \ .config("spark.sql.catalog.CATALOG_NAME.warehouse", "WAREHOUSE_DIRECTORY") \ .getOrCreate() spark.sql("USE `CATALOG_NAME`;") spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME;") spark.sql("USE NAMESPACE_NAME;") spark.sql("CREATE TABLE TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY';")
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud tempat menjalankan tugas batch.LOCATION
: lokasi tempat resource BigQuery berada.CATALOG_NAME
: nama katalog yang mereferensikan tabel Spark Anda.TABLE_NAME
: nama tabel untuk tabel Spark Anda.WAREHOUSE_DIRECTORY
: URI folder Cloud Storage tempat data warehouse Anda disimpan.NAMESPACE_NAME
: nama namespace yang mereferensikan tabel Spark Anda.
Kirim tugas batch menggunakan perintah
gcloud dataproc batches submit pyspark
berikut.gcloud dataproc batches submit pyspark PYTHON_SCRIPT_PATH \ --version=2.2 \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_PATH \ --jars=https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.5.2/iceberg-spark-runtime-3.5_2.12-1.5.2.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.5.2-1.0.0-beta.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=WAREHOUSE_DIRECTORY"
Ganti kode berikut:
PYTHON_SCRIPT_PATH
: jalur ke skrip Python yang digunakan tugas batch.PROJECT_ID
: ID project Google Cloud tempat menjalankan tugas batch.REGION
: region tempat workload Anda berjalan.BUCKET_PATH
: lokasi bucket Cloud Storage untuk mengupload dependensi beban kerja. Awalan URIgs://
bucket tidak diperlukan. Anda dapat menentukan jalur bucket atau nama bucket, misalnya,mybucketname1
.
Untuk mengetahui informasi selengkapnya tentang cara mengirimkan tugas batch PySpark, lihat referensi gcloud PySpark.
Langkah selanjutnya
- Siapkan fitur metastore BigQuery opsional.
- Melihat dan membuat kueri tabel dari Spark di konsol BigQuery.