Template Spanner ke BigQuery

Template Spanner ke BigQuery adalah pipeline batch yang membaca data dari tabel Spanner dan menulis data ke BigQuery.

Persyaratan pipeline

  • Tabel Spanner sumber harus ada sebelum menjalankan pipeline.
  • Set data BigQuery harus ada sebelum menjalankan pipeline.
  • File JSON yang mendeskripsikan skema BigQuery Anda.

    File harus berisi array JSON level atas yang berjudul fields. Konten array fields harus menggunakan pola berikut:
    {"name": "COLUMN_NAME", "type": "DATA_TYPE"}.

    JSON berikut menjelaskan contoh skema BigQuery:

    {
      "fields": [
        {
          "name": "location",
          "type": "STRING"
        },
        {
          "name": "name",
          "type": "STRING"
        },
        {
          "name": "age",
          "type": "STRING"
        },
        {
          "name": "color",
          "type": "STRING"
        },
        {
          "name": "coffee",
          "type": "STRING"
        }
      ]
    }
    

    Template Spanner ke batch batch tidak mendukung pengimporan data ke kolom STRUCT (Record) dalam tabel BigQuery target.

Parameter template

Parameter Deskripsi
spannerInstanceId ID instance database Spanner yang akan dibaca.
spannerDatabaseId ID database dari database Spanner yang akan diekspor.
spannerTableId Nama tabel database Spanner yang akan diekspor.
sqlQuery Kueri SQL yang akan digunakan untuk membaca data dari database Spanner.
outputTableSpec Tabel BigQuery yang menjadi tujuan penulisan. Misalnya <project>:<dataset>.<table_name>.
spannerProjectId Opsional: ID project tempat database Spanner berada. Nilai default untuk parameter ini adalah project tempat pipeline Dataflow berjalan.
spannerRpcPriority Opsional: Prioritas permintaan untuk panggilan Spanner. Nilai yang mungkin adalah HIGH, MEDIUM, dan LOW. Nilai defaultnya adalah HIGH.
bigQuerySchemaPath Opsional: Jalur Cloud Storage (gs://) ke file JSON yang menentukan skema BigQuery Anda. Contoh, gs://path/to/my/schema.json.
writeDisposition Opsional: BigQuery WriteDisposition. Nilai yang didukung adalah WRITE_APPEND, WRITE_EMPTY, dan WRITE_TRUNCATE. Nilai defaultnya adalah WRITE_APPEND.
createDisposition Opsional: BigQuery CreateDisposition. Nilai yang didukung adalah CREATE_IF_NEEDED dan CREATE_NEVER. Nilai defaultnya adalah CREATE_IF_NEEDED.
useStorageWriteApi Opsional: Jika true, pipeline akan menggunakan BigQuery Storage Write API. Nilai defaultnya adalah false. Untuk informasi selengkapnya, lihat Menggunakan Storage Write API.
useStorageWriteApiAtLeastOnce Opsional: Saat menggunakan Storage Write API, menentukan semantik penulisan. Untuk menggunakan semantik minimal satu kali, tetapkan parameter ini ke true. Untuk menggunakan semantik tepat satu kali, tetapkan parameter ke false. Parameter ini hanya berlaku jika useStorageWriteApi adalah true. Nilai defaultnya adalah false.

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah us-central1.

    Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

  5. Dari menu drop-down Dataflow template, pilih the Spanner to BigQuery template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal Anda, jalankan template:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       spannerInstanceId=SPANNER_INSTANCE_ID,\
       spannerDatabaseId=SPANNER_DATABASE_ID,\
       spannerTableId=SPANNER_TABLE_ID,\
       sqlQuery=SQL_QUERY,\
       outputTableSpec=OUTPUT_TABLE_SPEC,\

Ganti kode berikut:

  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • SPANNER_INSTANCE_ID: ID instance Spanner
  • SPANNER_DATABASE_ID: ID database Spanner
  • SPANNER_TABLE_ID: nama tabel Spanner
  • SQL_QUERY: kueri SQL
  • OUTPUT_TABLE_SPEC: lokasi tabel BigQuery

API

Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "spannerInstanceId": "SPANNER_INSTANCE_ID",
       "spannerDatabaseId": "SPANNER_DATABASE_ID",
       "spannerTableId": "SPANNER_TABLE_ID",
       "sqlQuery": "SQL_QUERY",
       "outputTableSpec": "OUTPUT_TABLE_SPEC",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex",
     "environment": { "maxWorkers": "10" }
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • SPANNER_INSTANCE_ID: ID instance Spanner
  • SPANNER_DATABASE_ID: ID database Spanner
  • SPANNER_TABLE_ID: nama tabel Spanner
  • SQL_QUERY: kueri SQL
  • OUTPUT_TABLE_SPEC: lokasi tabel BigQuery

Langkah selanjutnya