Template Cloud Storage ke JDBC
Gunakan template Cloud Storage Serverless Dataproc ke JDBC untuk mengekstrak data dari Cloud Storage ke database JDBC.
Menggunakan template
Jalankan template menggunakan gcloud CLI atau Dataproc API.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
PROJECT_ID : Wajib diisi. Google Cloud Project ID Anda yang tercantum di IAM Settings.REGION : Wajib diisi. Region Compute Engine.SUBNET : Opsional. Jika subnet tidak ditentukan, subnet di REGION yang ditentukan dalam jaringandefault
akan dipilih.Contoh:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
JDBC_CONNECTOR_CLOUD_STORAGE_PATH : Wajib diisi. Jalur Cloud Storage lengkap, termasuk nama file, tempat jar konektor JDBC disimpan. Anda dapat menggunakan perintah berikut untuk mendownload konektor JDBC guna diupload ke Cloud Storage:- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- Postgres SQL:
wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
- Microsoft SQL Server:
wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
- Oracle:
wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
- MySQL:
CLOUD_STORAGE_PATH : Wajib diisi. Jalur Cloud Storage tempat file input disimpan.Contoh:
gs://dataproc-templates/cloud_storage_to_jdbc_input
FORMAT : Wajib diisi. Format data output. Opsi:avro
,parquet
,csv
, atauorc
. Default:avro
. Catatan: Jikaavro
, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar
" ke kolom API atau flag gcloud CLIjars
.Contoh (awalan
file://
mereferensikan file jar Dataproc Serverless):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[, ... other jars]MODE : Opsional. Mode tulis untuk output Cloud Storage. Opsi:Append
,Overwrite
,Ignore
, atauErrorIfExists
. Default:ErrorIfExists
.- Variabel berikut digunakan untuk membuat
JDBC_CONNECTION_URL yang diperlukan:JDBC_HOST JDBC_PORT JDBC_DATABASE , atau, untuk Oracle,JDBC_SERVICE JDBC_USERNAME JDBC_PASSWORD
Buat JDBC_CONNECTION_URL menggunakan salah satu format khusus konektor berikut:
- MySQL:
jdbc:mysql://
JDBC_HOST :JDBC_PORT /JDBC_DATABASE ?user=JDBC_USERNAME &password=JDBC_PASSWORD - Postgres SQL:
jdbc:postgresql://
JDBC_HOST :JDBC_PORT /JDBC_DATABASE ?user=JDBC_USERNAME &password=JDBC_PASSWORD - Microsoft SQL Server:
jdbc:sqlserver://
JDBC_HOST :JDBC_PORT ;databaseName=JDBC_DATABASE ;user=JDBC_USERNAME ;password=JDBC_PASSWORD - Oracle:
jdbc:oracle:thin:@//
JDBC_HOST :JDBC_PORT /JDBC_SERVICE ?user=JDBC_USERNAME &password=
JDBC_TABLE : Wajib diisi. Nama tabel tempat output akan ditulis.DRIVER : Wajib diisi. Driver JDBC yang digunakan untuk koneksi:- MySQL:
com.mysql.cj.jdbc.Driver
- Postgres SQL:
org.postgresql.Driver
- Microsoft SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
TEMPLATE_VERSION : Wajib diisi. Tentukanlatest
untuk versi template terbaru, atau tanggal versi tertentu, misalnya,2023-03-17_v0.1.0-beta
(buka gs://dataproc-templates-binaries atau jalankangcloud storage ls gs://dataproc-templates-binaries
untuk mencantumkan versi template yang tersedia).LOG_LEVEL : Opsional. Tingkat logging. Dapat berupa salah satu dariALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
, atauWARN
. Default:INFO
.NUM_PARTITIONS : Opsional. Jumlah maksimum partisi yang dapat digunakan untuk paralelisme penulisan tabel. Jika ditentukan, nilai ini akan digunakan untuk koneksi output JDBC. Setelan defaultnya adalah partisi awal yang ditetapkan oleh Sparkread()
.BATCH_SIZE : Opsional. Jumlah data yang akan disisipkan per perjalanan bolak-balik. Default:1000
.SERVICE_ACCOUNT : Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.PROPERTY danPROPERTY_VALUE : Opsional. Daftar yang dipisahkan koma dari pasangan Properti Spark=value
.LABEL danLABEL_VALUE : Opsional. Daftar pasanganlabel
=value
yang dipisahkan koma.-
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 \ --project="PROJECT_ID " \ --region="REGION " \ --version="1.2" \ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION /java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH " \ --subnet="SUBNET " \ --kms-key="KMS_KEY " \ --service-account="SERVICE_ACCOUNT " \ --properties="PROPERTY =PROPERTY_VALUE " \ --labels="LABEL =LABEL_VALUE " \ -- --template=GCSTOJDBC \ --templateProperty project.id="PROJECT_ID " \ --templateProperty log.level="LOG_LEVEL " \ --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH " \ --templateProperty gcs.jdbc.input.format="FORMAT " \ --templateProperty gcs.jdbc.output.saveMode="MODE " \ --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL " \ --templateProperty gcs.jdbc.output.table="JDBC_TABLE " \ --templateProperty gcs.jdbc.output.driver="DRIVER " \ --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS " \ --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE "
Windows (PowerShell)
gcloud dataproc batches submit spark ` --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ` --project="PROJECT_ID " ` --region="REGION " ` --version="1.2" ` --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION /java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH " ` --subnet="SUBNET " ` --kms-key="KMS_KEY " ` --service-account="SERVICE_ACCOUNT " ` --properties="PROPERTY =PROPERTY_VALUE " ` --labels="LABEL =LABEL_VALUE " ` -- --template=GCSTOJDBC ` --templateProperty project.id="PROJECT_ID " ` --templateProperty log.level="LOG_LEVEL " ` --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH " ` --templateProperty gcs.jdbc.input.format="FORMAT " ` --templateProperty gcs.jdbc.output.saveMode="MODE " ` --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL " ` --templateProperty gcs.jdbc.output.table="JDBC_TABLE " ` --templateProperty gcs.jdbc.output.driver="DRIVER " ` --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS " ` --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE "
Windows (cmd.exe)
gcloud dataproc batches submit spark ^ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^ --project="PROJECT_ID " ^ --region="REGION " ^ --version="1.2" ^ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION /java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH " ^ --subnet="SUBNET " ^ --kms-key="KMS_KEY " ^ --service-account="SERVICE_ACCOUNT " ^ --properties="PROPERTY =PROPERTY_VALUE " ^ --labels="LABEL =LABEL_VALUE " ^ -- --template=GCSTOJDBC ^ --templateProperty project.id="PROJECT_ID " ^ --templateProperty log.level="LOG_LEVEL " ^ --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH " ^ --templateProperty gcs.jdbc.input.format="FORMAT " ^ --templateProperty gcs.jdbc.output.saveMode="MODE " ^ --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL " ^ --templateProperty gcs.jdbc.output.table="JDBC_TABLE " ^ --templateProperty gcs.jdbc.output.driver="DRIVER " ^ --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS " ^ --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE "
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID : Wajib diisi. Google Cloud Project ID Anda yang tercantum di IAM Settings.REGION : Wajib diisi. Region Compute Engine.SUBNET : Opsional. Jika subnet tidak ditentukan, subnet di REGION yang ditentukan di jaringandefault
akan dipilih.Contoh:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
JDBC_CONNECTOR_CLOUD_STORAGE_PATH : Wajib diisi. Jalur Cloud Storage lengkap, termasuk nama file, tempat jar konektor JDBC disimpan. Anda dapat menggunakan perintah berikut untuk mendownload konektor JDBC guna diupload ke Cloud Storage:- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- Postgres SQL:
wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
- Microsoft SQL Server:
wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
- Oracle:
wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
- MySQL:
CLOUD_STORAGE_PATH : Wajib diisi. Jalur Cloud Storage tempat file input disimpan.Contoh:
gs://dataproc-templates/cloud_storage_to_jdbc_input
FORMAT : Wajib diisi. Format data output. Opsi:avro
,parquet
,csv
, atauorc
. Default:avro
. Catatan: Jikaavro
, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar
" ke kolom API atau flag gcloud CLIjars
.Contoh (awalan
file://
mereferensikan file jar Dataproc Serverless):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[, ... other jars]MODE : Opsional. Mode tulis untuk output Cloud Storage. Opsi:Append
,Overwrite
,Ignore
, atauErrorIfExists
. Default:ErrorIfExists
.- Variabel berikut digunakan untuk membuat
JDBC_CONNECTION_URL yang diperlukan:JDBC_HOST JDBC_PORT JDBC_DATABASE , atau, untuk Oracle,JDBC_SERVICE JDBC_USERNAME JDBC_PASSWORD
Buat JDBC_CONNECTION_URL menggunakan salah satu format khusus konektor berikut:
- MySQL:
jdbc:mysql://
JDBC_HOST :JDBC_PORT /JDBC_DATABASE ?user=JDBC_USERNAME &password=JDBC_PASSWORD - Postgres SQL:
jdbc:postgresql://
JDBC_HOST :JDBC_PORT /JDBC_DATABASE ?user=JDBC_USERNAME &password=JDBC_PASSWORD - Microsoft SQL Server:
jdbc:sqlserver://
JDBC_HOST :JDBC_PORT ;databaseName=JDBC_DATABASE ;user=JDBC_USERNAME ;password=JDBC_PASSWORD - Oracle:
jdbc:oracle:thin:@//
JDBC_HOST :JDBC_PORT /JDBC_SERVICE ?user=JDBC_USERNAME &password=
JDBC_TABLE : Wajib diisi. Nama tabel tempat output akan ditulis.DRIVER : Wajib diisi. Driver JDBC yang digunakan untuk koneksi:- MySQL:
com.mysql.cj.jdbc.Driver
- Postgres SQL:
org.postgresql.Driver
- Microsoft SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
TEMPLATE_VERSION : Wajib diisi. Tentukanlatest
untuk versi template terbaru, atau tanggal versi tertentu, misalnya,2023-03-17_v0.1.0-beta
(buka gs://dataproc-templates-binaries atau jalankangcloud storage ls gs://dataproc-templates-binaries
untuk mencantumkan versi template yang tersedia).LOG_LEVEL : Opsional. Tingkat logging. Dapat berupa salah satu dariALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
, atauWARN
. Default:INFO
.NUM_PARTITIONS : Opsional. Jumlah maksimum partisi yang dapat digunakan untuk paralelisme penulisan tabel. Jika ditentukan, nilai ini akan digunakan untuk koneksi output JDBC. Setelan defaultnya adalah partisi awal yang ditetapkan oleh Sparkread()
.BATCH_SIZE : Opsional. Jumlah data yang akan disisipkan per perjalanan bolak-balik. Default:1000
.SERVICE_ACCOUNT : Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.PROPERTY danPROPERTY_VALUE : Opsional. Daftar yang dipisahkan koma dari pasangan Properti Spark=value
.LABEL danLABEL_VALUE : Opsional. Daftar pasanganlabel
=value
yang dipisahkan koma.-
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=GCSTOJDBC", "--templateProperty","project.id=PROJECT_ID ", "--templateProperty","log.level=LOG_LEVEL ", "--templateProperty","gcs.jdbc.input.location=CLOUD_STORAGE_PATH ", "--templateProperty","gcs.jdbc.input.format=FORMAT ", "--templateProperty","gcs.jdbc.output.saveMode=MODE ", "--templateProperty","gcs.jdbc.output.url=JDBC_CONNECTION_URL ", "--templateProperty","gcs.jdbc.output.table=JDBC_TABLE ", "--templateProperty","gcs.jdbc.output.driver=DRIVER ", "--templateProperty","gcs.jdbc.spark.partitions=NUM_PARTITIONS ", "--templateProperty","gcs.jdbc.output.batchInsertSize=BATCH_SIZE " ], "jarFileUris": [ "gs://dataproc-templates-binaries/TEMPLATE_VERSION /java/dataproc-templates.jar", "JDBC_CONNECTOR_CLOUD_STORAGE_PATH " ] } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
curl (Linux, macOS, atau Cloud Shell)
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataproc.googleapis.com/v1/projects/PROJECT_ID /locations/REGION /batches"
PowerShell (Windows)
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataproc.googleapis.com/v1/projects/PROJECT_ID /locations/REGION /batches" | Select-Object -Expand Content
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" } }