Template Cloud Storage ke JDBC
Gunakan template Serverless for Apache Spark Cloud Storage to JDBC untuk mengekstrak data dari Cloud Storage ke database JDBC.
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 
defaultdi REGION yang ditentukan 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 penyimpanan jar konektor JDBC. Anda dapat menggunakan perintah berikut untuk mendownload
    konektor JDBC untuk 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 flag gcloud CLIjarsatau 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: Opsional. Mode penulisan 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. Tentukan 
latestuntuk 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-binariesuntuk mencantumkan versi template yang tersedia). - LOG_LEVEL: Opsional. Tingkat logging. Dapat berupa salah satu dari
 
ALL,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 digunakan untuk koneksi output JDBC. Secara default, setelan ini adalah partisi awal yang ditetapkan oleh Spark 
read(). - BATCH_SIZE: Opsional. Jumlah data yang akan disisipkan per perjalanan pulang pergi. Default: 
1000. - SERVICE_ACCOUNT: Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.
 - PROPERTY dan PROPERTY_VALUE:
  Opsional. Daftar pasangan
  properti Spark=
valueyang dipisahkan koma. - LABEL dan LABEL_VALUE:
  Opsional. Daftar pasangan 
label=valueyang 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"
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 
defaultdi REGION yang ditentukan 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 penyimpanan jar konektor JDBC. Anda dapat menggunakan perintah berikut untuk mendownload
    konektor JDBC untuk 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 flag gcloud CLIjarsatau 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: Opsional. Mode penulisan 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. Tentukan 
latestuntuk 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-binariesuntuk mencantumkan versi template yang tersedia). - LOG_LEVEL: Opsional. Tingkat logging. Dapat berupa salah satu dari
 
ALL,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 digunakan untuk koneksi output JDBC. Secara default, setelan ini adalah partisi awal yang ditetapkan oleh Spark 
read(). - BATCH_SIZE: Opsional. Jumlah data yang akan disisipkan per perjalanan pulang pergi. Default: 
1000. - SERVICE_ACCOUNT: Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.
 - PROPERTY dan PROPERTY_VALUE:
  Opsional. Daftar pasangan
  properti Spark=
valueyang dipisahkan koma. - LABEL dan LABEL_VALUE:
  Opsional. Daftar pasangan 
label=valueyang 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:
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"
  }
}