Template Spanner to 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 teratas yang berjudul
fields
. Konten arrayfields
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 batch Spanner ke BigQuery tidak mendukung impor data ke kolom
STRUCT
(Record) di tabel BigQuery target.
Parameter template
Parameter yang diperlukan
- spannerInstanceId : ID instance database Spanner yang akan dibaca.
- spannerDatabaseId : ID database dari database Spanner yang akan diekspor.
- outputTableSpec : Lokasi tabel output BigQuery yang akan menjadi tujuan penulisan output. Misalnya,
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>
.Bergantung padacreateDisposition
yang ditentukan, tabel output dapat dibuat secara otomatis menggunakan skema Avro yang disediakan pengguna.
Parameter opsional
- spannerProjectId : ID project tempat database Spanner berada. Nilai default untuk parameter ini adalah project tempat pipeline Dataflow berjalan.
- spannerTableId : Nama tabel database Spanner yang akan diekspor. Diabaikan jika sqlQuery ditetapkan.
- spannerRpcPriority : Prioritas permintaan (https://cloud.google.com/spanner/docs/reference/rest/v1/RequestOptions) untuk panggilan Spanner. Nilai yang mungkin adalah
HIGH
,MEDIUM
, danLOW
. Nilai defaultnya adalahHIGH
. - sqlQuery : Kueri SQL yang akan digunakan untuk membaca data dari database Spanner. Wajib jika spannerTableId kosong.
- bigQuerySchemaPath : Jalur Cloud Storage (gs://) ke file JSON yang menentukan skema BigQuery Anda. (Contoh: gs://your-bucket/your-schema.json).
- writeDisposition : Nilai BigQuery WriteDisposition (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Misalnya,
WRITE_APPEND
,WRITE_EMPTY
, atauWRITE_TRUNCATE
. Nilai default-nya adalahWRITE_APPEND
. - createDisposition : CreateDisposition BigQuery (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Misalnya,
CREATE_IF_NEEDED
danCREATE_NEVER
. Setelan defaultnya adalahCREATE_IF_NEEDED
. - useStorageWriteApi : Jika
true
, pipeline akan menggunakan BigQuery Storage Write API (https://cloud.google.com/bigquery/docs/write-api). Nilai defaultnya adalahfalse
. Untuk informasi selengkapnya, lihat Menggunakan Storage Write API (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce : Saat menggunakan Storage Write API, menentukan semantik tulis. Untuk menggunakan semantik minimal satu kali (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), tetapkan parameter ini ke
true
. Untuk menggunakan semantik tepat satu kali, tetapkan parameter kefalse
. Parameter ini hanya berlaku jikauseStorageWriteApi
adalahtrue
. Nilai defaultnya adalahfalse
.
Menjalankan template
Konsol
- Buka halaman Create job from template Dataflow. Buka Buat tugas dari template
- Di kolom Nama tugas, masukkan nama tugas yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region defaultnya adalah
us-central1
.Untuk mengetahui daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Dataflow template, pilih the Spanner to BigQuery template.
- Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
- Klik Run job.
gcloud
Di shell atau terminal, 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 tugas unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket—gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat dalam folder induk bertanggal masing-masing di bucket—gs://dataflow-templates-REGION_NAME/
REGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
SPANNER_INSTANCE_ID
: ID instance SpannerSPANNER_DATABASE_ID
: ID database SpannerSPANNER_TABLE_ID
: nama tabel SpannerSQL_QUERY
: kueri SQLOUTPUT_TABLE_SPEC
: lokasi tabel BigQuery
API
Untuk menjalankan template menggunakan REST API, kirim permintaan POST HTTP. Untuk mengetahui 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 DataflowJOB_NAME
: nama tugas unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket—gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat dalam folder induk bertanggal masing-masing di bucket—gs://dataflow-templates-REGION_NAME/
LOCATION
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
SPANNER_INSTANCE_ID
: ID instance SpannerSPANNER_DATABASE_ID
: ID database SpannerSPANNER_TABLE_ID
: nama tabel SpannerSQL_QUERY
: kueri SQLOUTPUT_TABLE_SPEC
: lokasi tabel BigQuery
Langkah selanjutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.