Template Cloud Storage ke BigQuery

Gunakan template Serverless for Apache Spark Cloud Storage to BigQuery untuk mengekstrak data dari Cloud Storage ke BigQuery.

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.
  • 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 jalankan gcloud storage ls gs://dataproc-templates-binaries untuk mencantumkan versi template yang tersedia).
  • CLOUD_STORAGE_PATH: Wajib diisi. Jalur Cloud Storage sumber.

    Contoh: gs://dataproc-templates/hive_to_cloud_storage_output"

  • FORMAT: Wajib diisi. Format data input. Opsi: avro, parquet, csv, atau json. Catatan: Jika avro, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar" ke flag gcloud CLI jars 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]
  • DATASET: Wajib diisi. Set data BigQuery tujuan.
  • TABLE: Wajib diisi. Tabel BigQuery tujuan.
  • TEMP_BUCKET: Wajib diisi. Bucket Cloud Storage sementara yang digunakan untuk menyiapkan data sebelum dimuat ke BigQuery.
  • 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

  • TEMPVIEW dan SQL_QUERY: Opsional. Anda dapat menggunakan dua parameter opsional ini untuk menerapkan transformasi Spark SQL saat memuat data ke BigQuery. TEMPVIEW adalah nama tampilan sementara, dan SQL_QUERY adalah pernyataan kueri. TEMPVIEW dan nama tabel di SQL_QUERY harus sama.
  • 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, 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=GCSTOBIGQUERY \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty project.id="PROJECT_ID" \
    --templateProperty gcs.bigquery.input.location="CLOUD_STORAGE_PATH" \
    --templateProperty gcs.bigquery.input.format="FORMAT" \
    --templateProperty gcs.bigquery.output.dataset="DATASET" \
    --templateProperty gcs.bigquery.output.table="TABLE" \
    --templateProperty gcs.bigquery.temp.bucket.name="TEMP_BUCKET" \
    --templateProperty gcs.bigquery.temp.table="TEMPVIEW" \
    --templateProperty gcs.bigquery.temp.query="SQL_QUERY"

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=GCSTOBIGQUERY `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty project.id="PROJECT_ID" `
    --templateProperty gcs.bigquery.input.location="CLOUD_STORAGE_PATH" `
    --templateProperty gcs.bigquery.input.format="FORMAT" `
    --templateProperty gcs.bigquery.output.dataset="DATASET" `
    --templateProperty gcs.bigquery.output.table="TABLE" `
    --templateProperty gcs.bigquery.temp.bucket.name="TEMP_BUCKET" `
    --templateProperty gcs.bigquery.temp.table="TEMPVIEW" `
    --templateProperty gcs.bigquery.temp.query="SQL_QUERY"

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=GCSTOBIGQUERY ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty project.id="PROJECT_ID" ^
    --templateProperty gcs.bigquery.input.location="CLOUD_STORAGE_PATH" ^
    --templateProperty gcs.bigquery.input.format="FORMAT" ^
    --templateProperty gcs.bigquery.output.dataset="DATASET" ^
    --templateProperty gcs.bigquery.output.table="TABLE" ^
    --templateProperty gcs.bigquery.temp.bucket.name="TEMP_BUCKET" ^
    --templateProperty gcs.bigquery.temp.table="TEMPVIEW" ^
    --templateProperty gcs.bigquery.temp.query="SQL_QUERY"

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.
  • 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 jalankan gcloud storage ls gs://dataproc-templates-binaries untuk mencantumkan versi template yang tersedia).
  • CLOUD_STORAGE_PATH: Wajib diisi. Jalur Cloud Storage sumber.

    Contoh: gs://dataproc-templates/hive_to_cloud_storage_output"

  • FORMAT: Wajib diisi. Format data input. Opsi: avro, parquet, csv, atau json. Catatan: Jika avro, Anda harus menambahkan "file:///usr/lib/spark/connector/spark-avro.jar" ke flag gcloud CLI jars 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]
  • DATASET: Wajib diisi. Set data BigQuery tujuan.
  • TABLE: Wajib diisi. Tabel BigQuery tujuan.
  • TEMP_BUCKET: Wajib diisi. Bucket Cloud Storage sementara yang digunakan untuk menyiapkan data sebelum dimuat ke BigQuery.
  • 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

  • TEMPVIEW dan SQL_QUERY: Opsional. Anda dapat menggunakan dua parameter opsional ini untuk menerapkan transformasi Spark SQL saat memuat data ke BigQuery. TEMPVIEW adalah nama tampilan sementara, dan SQL_QUERY adalah pernyataan kueri. TEMPVIEW dan nama tabel di SQL_QUERY harus sama.
  • 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, 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", "GCSTOBIGQUERY",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","project.id=PROJECT_ID",
      "--templateProperty","gcs.bigquery.input.location=CLOUD_STORAGE_PATH",
      "--templateProperty","gcs.bigquery.input.format=FORMAT",
      "--templateProperty","gcs.bigquery.output.dataset=DATASET",
      "--templateProperty","gcs.bigquery.output.table=TABLE",
      "--templateProperty","gcs.bigquery.temp.bucket.name=TEMP_BUCKET",
      "--templateProperty","gcs.bigquery.temp.table=TEMPVIEW",
      "--templateProperty","gcs.bigquery.temp.query=SQL_QUERY"
    ],
    "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"
  }
}