Template Cloud Storage ke Cloud Spanner

Gunakan template Cloud Storage Serverless Dataproc ke Spanner untuk mengekstrak data dari Cloud Storage ke Spanner.

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. 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 jaringan default 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 (buka gs://dataproc-templates-binaries atau jalankan gcloud storage ls gs://dataproc-templates-binaries untuk mencantumkan versi template yang tersedia).
  • CLOUD_STORAGE_INPUT_PATH: Wajib diisi. Jalur Cloud Storage tempat data input akan dibaca.

    Contoh: gs://example-bucket/example-folder/

  • FORMAT: Wajib diisi. Format data input. Opsi: avro, parquet, atau orc. Catatan: Jika avro, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar" ke kolom API atau flag gcloud CLI jars.

    Contoh (awalan file:// mereferensikan file jar Dataproc Serverless):

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... other jars]
  • INSTANCE: Wajib diisi. ID instance Spanner.
  • DATABASE: Wajib diisi. ID database Spanner.
  • TABLE: Wajib diisi. Nama tabel output Spanner.
  • SPANNER_JDBC_DIALECT: Wajib diisi. Dialek JDBC Spanner. Opsi: googlesql atau postgresql. Setelan defaultnya adalah googlesql.
  • MODE: Opsional. Mode tulis untuk output Spanner. Opsi: Append, Overwrite, Ignore, atau ErrorifExists. Nilai default-nya adalah ErrorifExists.
  • PRIMARY_KEY: Wajib diisi. Kolom Kunci utama yang dipisahkan koma diperlukan saat membuat tabel output Spanner.
  • BATCHSIZE: Opsional. Jumlah kumpulan data yang akan disisipkan dalam satu perjalanan bolak-balik ke Tabel Spanner. Setelan defaultnya adalah 1.000.
  • SERVICE_ACCOUNT: Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.
  • PROPERTY dan PROPERTY_VALUE: Opsional. Daftar yang dipisahkan koma dari pasangan Properti Spark=value.
  • 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, atau WARN. 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 GCSTOSPANNER \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty project.id="PROJECT_ID" \
    --templateProperty gcs.spanner.input.format="FORMAT" \
    --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" \
    --templateProperty gcs.spanner.output.instance="INSTANCE" \
    --templateProperty gcs.spanner.output.database="DATABASE" \
    --templateProperty gcs.spanner.output.table="TABLE" \
    --templateProperty gcs.spanner.output.saveMode="MODE" \
    --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" \
    --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" \
    --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 GCSTOSPANNER `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty project.id="PROJECT_ID" `
    --templateProperty gcs.spanner.input.format="FORMAT" `
    --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" `
    --templateProperty gcs.spanner.output.instance="INSTANCE" `
    --templateProperty gcs.spanner.output.database="DATABASE" `
    --templateProperty gcs.spanner.output.table="TABLE" `
    --templateProperty gcs.spanner.output.saveMode="MODE" `
    --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" `
    --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" `
    --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 GCSTOSPANNER ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty project.id="PROJECT_ID" ^
    --templateProperty gcs.spanner.input.format="FORMAT" ^
    --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" ^
    --templateProperty gcs.spanner.output.instance="INSTANCE" ^
    --templateProperty gcs.spanner.output.database="DATABASE" ^
    --templateProperty gcs.spanner.output.table="TABLE" ^
    --templateProperty gcs.spanner.output.saveMode="MODE" ^
    --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" ^
    --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" ^
    --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"

REST

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 dalam jaringan default 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 (buka gs://dataproc-templates-binaries atau jalankan gcloud storage ls gs://dataproc-templates-binaries untuk mencantumkan versi template yang tersedia).
  • CLOUD_STORAGE_INPUT_PATH: Wajib diisi. Jalur Cloud Storage tempat data input akan dibaca.

    Contoh: gs://example-bucket/example-folder/

  • FORMAT: Wajib diisi. Format data input. Opsi: avro, parquet, atau orc. Catatan: Jika avro, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar" ke kolom API atau flag gcloud CLI jars.

    Contoh (awalan file:// mereferensikan file jar Dataproc Serverless):

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... other jars]
  • INSTANCE: Wajib diisi. ID instance Spanner.
  • DATABASE: Wajib diisi. ID database Spanner.
  • TABLE: Wajib diisi. Nama tabel output Spanner.
  • SPANNER_JDBC_DIALECT: Wajib diisi. Dialek JDBC Spanner. Opsi: googlesql atau postgresql. Setelan defaultnya adalah googlesql.
  • MODE: Opsional. Mode tulis untuk output Spanner. Opsi: Append, Overwrite, Ignore, atau ErrorifExists. Nilai default-nya adalah ErrorifExists.
  • PRIMARY_KEY: Wajib diisi. Kolom Kunci utama yang dipisahkan koma diperlukan saat membuat tabel output Spanner.
  • BATCHSIZE: Opsional. Jumlah kumpulan data yang akan disisipkan dalam satu perjalanan bolak-balik ke Tabel Spanner. Setelan defaultnya adalah 1.000.
  • SERVICE_ACCOUNT: Opsional. Jika tidak diberikan, akun layanan Compute Engine default akan digunakan.
  • PROPERTY dan PROPERTY_VALUE: Opsional. Daftar yang dipisahkan koma dari pasangan Properti Spark=value.
  • 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, atau WARN. 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","GCSTOSPANNER",
      "--templateProperty","project.id=PROJECT_ID",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","gcs.spanner.input.format=FORMAT",
      "--templateProperty","gcs.spanner.input.location=CLOUD_STORAGE_INPUT_PATH",
      "--templateProperty","gcs.spanner.output.instance=INSTANCE",
      "--templateProperty","gcs.spanner.output.database=DATABASE",
      "--templateProperty","gcs.spanner.output.table=TABLE",
      "--templateProperty","gcs.spanner.output.saveMode=MODE",
      "--templateProperty","gcs.spanner.output.primaryKey=PRIMARY_KEY",
      "--templateProperty","gcs.spanner.output.batchInsertSize=BATCHSIZE",
      "--templateProperty spanner.jdbc.dialect=SPANNER_JDBC_DIALECT"
    ],
    "jarFileUris":[
      "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"
  }
}