Template Cloud Spanner ke Cloud Storage
Gunakan template Serverless for Apache Spark Cloud Spanner to Cloud Storage untuk mengekstrak data dari database Spanner ke Cloud Storage.
Menggunakan template
Jalankan template menggunakan gcloud CLI atau Dataproc API.
gcloud
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- PROJECT_ID: Wajib diisi. ID project Google Cloud Anda tercantum di IAM Settings.
- REGION: Wajib diisi. Region Compute Engine.
- SUBNET: Opsional. Jika subnet tidak ditentukan, subnet
di jaringan
default
di REGION yang ditentukan akan dipilih.Contoh:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- TEMPLATE_VERSION: Wajib diisi. Tentukan
latest
untuk versi template terbaru, atau tanggal versi tertentu, misalnya,2023-03-17_v0.1.0-beta
(kunjungi gs://dataproc-templates-binaries atau jalankangcloud storage ls gs://dataproc-templates-binaries
untuk mencantumkan versi template yang tersedia). - INSTANCE: Wajib diisi. ID instance Spanner.
- DATABASE: Wajib diisi. ID database Spanner.
- TABLE: Wajib diisi. Nama tabel input Spanner atau
kueri SQL pada tabel input Spanner.
Contoh (kueri SQL harus berada dalam tanda kurung):
(select * from TABLE)
- SPANNER_JDBC_DIALECT: Wajib diisi. Dialek JDBC Spanner.
Opsi:
googlesql
ataupostgresql
. Setelan defaultnya adalahgooglesql
. - CLOUD_STORAGE_OUTPUT_PATH: Wajib diisi. Jalur Cloud Storage tempat output akan disimpan.
Contoh:
gs://example-bucket/example-folder/
- FORMAT: Wajib diisi. Format data output. Opsi:
avro
,parquet
,csv
, ataujson
. Catatan: Jikaavro
, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar
" ke flag gcloud CLIjars
atau kolom API.Contoh (awalan
file://
merujuk ke file jar Serverless for Apache Spark):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[ ... jar lainnya] - MODE: Wajib diisi. Mode penulisan untuk output Cloud Storage.
Opsi:
append
,overwrite
,ignore
, atauerrorifexists
. - NUM_PARTITIONS: Opsional. Jumlah maksimum partisi yang dapat digunakan untuk paralelisme operasi baca dan tulis tabel.
- INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND: Opsional. Jika digunakan, semua parameter
berikut harus ditentukan:
- INPUT_PARTITION_COLUMN: Nama kolom partisi tabel input Spanner.
- LOWERBOUND: Batas bawah kolom partisi tabel input Spanner yang digunakan untuk menentukan langkah partisi.
- UPPERBOUND: Batas atas kolom partisi tabel input Spanner yang digunakan untuk menentukan langkah partisi.
- TEMP_VIEW dan TEMP_QUERY: Opsional. Anda dapat menggunakan dua parameter opsional ini untuk menerapkan transformasi Spark SQL saat memuat data ke Cloud Storage. TEMP_VIEW harus sama dengan nama tabel yang digunakan dalam kueri, dan TEMP_QUERY adalah pernyataan kueri.
- SERVICE_ACCOUNT: Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.
- PROPERTY dan PROPERTY_VALUE:
Opsional. Daftar pasangan
properti Spark=
value
yang dipisahkan koma. - LABEL dan LABEL_VALUE:
Opsional. Daftar pasangan
label
=value
yang dipisahkan koma. - LOG_LEVEL: Opsional. Tingkat logging. Dapat berupa salah satu dari
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
, atauWARN
. Default:INFO
. -
KMS_KEY: Opsional. Kunci Cloud Key Management Service yang akan digunakan untuk enkripsi. Jika kunci tidak ditentukan, data akan dienkripsi dalam penyimpanan menggunakan Google-owned and Google-managed encryption key.
Contoh:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud dataproc batches submit spark \ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate \ --version="1.2" \ --project="PROJECT_ID" \ --region="REGION" \ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" \ --subnet="SUBNET" \ --kms-key="KMS_KEY" \ --service-account="SERVICE_ACCOUNT" \ --properties="PROPERTY=PROPERTY_VALUE" \ --labels="LABEL=LABEL_VALUE" \ -- --template=SPANNERTOGCS \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty project.id="PROJECT_ID" \ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" \ --templateProperty spanner.gcs.input.database.id="DATABASE" \ --templateProperty spanner.gcs.input.table.id="TABLE" \ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" \ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" \ --templateProperty spanner.gcs.output.gcs.format="FORMAT" \ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" \ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" \ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" \ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" \ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" \ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" \ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
Windows (PowerShell)
gcloud dataproc batches submit spark ` --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ` --version="1.2" ` --project="PROJECT_ID" ` --region="REGION" ` --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ` --subnet="SUBNET" ` --kms-key="KMS_KEY" ` --service-account="SERVICE_ACCOUNT" ` --properties="PROPERTY=PROPERTY_VALUE" ` --labels="LABEL=LABEL_VALUE" ` -- --template=SPANNERTOGCS ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty project.id="PROJECT_ID" ` --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ` --templateProperty spanner.gcs.input.database.id="DATABASE" ` --templateProperty spanner.gcs.input.table.id="TABLE" ` --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ` --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ` --templateProperty spanner.gcs.output.gcs.format="FORMAT" ` --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ` --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ` --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ` --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ` --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ` --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ` --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
Windows (cmd.exe)
gcloud dataproc batches submit spark ^ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^ --version="1.2" ^ --project="PROJECT_ID" ^ --region="REGION" ^ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ^ --subnet="SUBNET" ^ --kms-key="KMS_KEY" ^ --service-account="SERVICE_ACCOUNT" ^ --properties="PROPERTY=PROPERTY_VALUE" ^ --labels="LABEL=LABEL_VALUE" ^ -- --template=SPANNERTOGCS ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ^ --templateProperty spanner.gcs.input.database.id="DATABASE" ^ --templateProperty spanner.gcs.input.table.id="TABLE" ^ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ^ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ^ --templateProperty spanner.gcs.output.gcs.format="FORMAT" ^ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ^ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ^ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ^ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ^ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ^ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ^ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Wajib diisi. ID project Google Cloud Anda tercantum di IAM Settings.
- REGION: Wajib diisi. Region Compute Engine.
- SUBNET: Opsional. Jika subnet tidak ditentukan, subnet
di jaringan
default
di REGION yang ditentukan akan dipilih.Contoh:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- TEMPLATE_VERSION: Wajib diisi. Tentukan
latest
untuk versi template terbaru, atau tanggal versi tertentu, misalnya,2023-03-17_v0.1.0-beta
(kunjungi gs://dataproc-templates-binaries atau jalankangcloud storage ls gs://dataproc-templates-binaries
untuk mencantumkan versi template yang tersedia). - INSTANCE: Wajib diisi. ID instance Spanner.
- DATABASE: Wajib diisi. ID database Spanner.
- TABLE: Wajib diisi. Nama tabel input Spanner atau
kueri SQL pada tabel input Spanner.
Contoh (kueri SQL harus berada dalam tanda kurung):
(select * from TABLE)
- SPANNER_JDBC_DIALECT: Wajib diisi. Dialek JDBC Spanner.
Opsi:
googlesql
ataupostgresql
. Setelan defaultnya adalahgooglesql
. - CLOUD_STORAGE_OUTPUT_PATH: Wajib diisi. Jalur Cloud Storage tempat output akan disimpan.
Contoh:
gs://example-bucket/example-folder/
- FORMAT: Wajib diisi. Format data output. Opsi:
avro
,parquet
,csv
, ataujson
. Catatan: Jikaavro
, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar
" ke flag gcloud CLIjars
atau kolom API.Contoh (awalan
file://
merujuk ke file jar Serverless for Apache Spark):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[ ... jar lainnya] - MODE: Wajib diisi. Mode penulisan untuk output Cloud Storage.
Opsi:
append
,overwrite
,ignore
, atauerrorifexists
. - NUM_PARTITIONS: Opsional. Jumlah maksimum partisi yang dapat digunakan untuk paralelisme operasi baca dan tulis tabel.
- INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND: Opsional. Jika digunakan, semua parameter
berikut harus ditentukan:
- INPUT_PARTITION_COLUMN: Nama kolom partisi tabel input Spanner.
- LOWERBOUND: Batas bawah kolom partisi tabel input Spanner yang digunakan untuk menentukan langkah partisi.
- UPPERBOUND: Batas atas kolom partisi tabel input Spanner yang digunakan untuk menentukan langkah partisi.
- TEMP_VIEW dan TEMP_QUERY: Opsional. Anda dapat menggunakan dua parameter opsional ini untuk menerapkan transformasi Spark SQL saat memuat data ke Cloud Storage. TEMP_VIEW harus sama dengan nama tabel yang digunakan dalam kueri, dan TEMP_QUERY adalah pernyataan kueri.
- SERVICE_ACCOUNT: Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.
- PROPERTY dan PROPERTY_VALUE:
Opsional. Daftar pasangan
properti Spark=
value
yang dipisahkan koma. - LABEL dan LABEL_VALUE:
Opsional. Daftar pasangan
label
=value
yang dipisahkan koma. - LOG_LEVEL: Opsional. Tingkat logging. Dapat berupa salah satu dari
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
, atauWARN
. Default:INFO
. -
KMS_KEY: Opsional. Kunci Cloud Key Management Service yang akan digunakan untuk enkripsi. Jika kunci tidak ditentukan, data akan dienkripsi dalam penyimpanan menggunakan Google-owned and Google-managed encryption key.
Contoh:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Metode HTTP dan URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches
Meminta isi JSON:
{ "environmentConfig":{ "executionConfig":{ "subnetworkUri":"SUBNET", "kmsKey": "KMS_KEY", "serviceAccount": "SERVICE_ACCOUNT" } }, "labels": { "LABEL": "LABEL_VALUE" }, "runtimeConfig": { "version": "1.2", "properties": { "PROPERTY": "PROPERTY_VALUE" } }, "sparkBatch":{ "mainClass":"com.google.cloud.dataproc.templates.main.DataProcTemplate", "args":[ "--template","SPANNERTOGCS", "--templateProperty","log.level=LOG_LEVEL", "--templateProperty","project.id=PROJECT_ID", "--templateProperty","spanner.gcs.input.spanner.id=INSTANCE", "--templateProperty","spanner.gcs.input.database.id=DATABASE", "--templateProperty","spanner.gcs.input.table.id=TABLE", "--templateProperty","spanner.gcs.output.gcs.path=CLOUD_STORAGE_OUTPUT_PATH", "--templateProperty","spanner.gcs.output.gcs.saveMode=MODE", "--templateProperty","spanner.gcs.output.gcs.format=FORMAT", "--templateProperty","spanner.gcs.input.sql.partitionColumn=INPUT_PARTITION_COLUMN", "--templateProperty","spanner.gcs.input.sql.lowerBound=LOWERBOUND", "--templateProperty","spanner.gcs.input.sql.upperBound=UPPERBOUND", "--templateProperty","spanner.gcs.input.sql.numPartitions=NUM_PARTITIONS", "--templateProperty","spanner.gcs.temp.table=TEMP_VIEW", "--templateProperty","spanner.gcs.temp.query=TEMP_QUERY", "--templateProperty spanner.jdbc.dialect=SPANNER_JDBC_DIALECT" ], "jarFileUris":[ "file:///usr/lib/spark/connector/spark-avro.jar", "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ] } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
{ "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata", "batch": "projects/PROJECT_ID/locations/REGION/batches/BATCH_ID", "batchUuid": "de8af8d4-3599-4a7c-915c-798201ed1583", "createTime": "2023-02-24T03:31:03.440329Z", "operationType": "BATCH", "description": "Batch" } }