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 tempat output akan ditulis. 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. Ini diperlukan jika Create Disposition bukan CREATE_NEVER. Misalnya,
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
- 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.
Di shell atau terminal, jalankan template:
gcloud dataflow flex-template runJOB_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
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
Kode sumber template
Langkah berikutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.