Template Pub/Sub Avro to BigQuery adalah pipeline streaming yang menyerap data Avro dari langganan Pub/Sub ke dalam tabel BigQuery. Setiap error yang terjadi saat menulis ke tabel BigQuery di-streaming ke topik Pub/Sub yang belum diproses.
Persyaratan pipeline
- Langganan Pub/Sub input harus ada.
- File skema untuk data Avro harus ada di Cloud Storage.
- Topik Pub/Sub yang belum diproses harus ada.
- Set data BigQuery output harus ada.
Parameter template
Parameter yang diperlukan
- schemaPath: Lokasi Cloud Storage file skema Avro. Contoh,
gs://path/to/my/schema.avsc
. - inputSubscription: Langganan input Pub/Sub yang akan dibaca. Contoh,
projects/<PROJECT_ID>/subscription/<SUBSCRIPTION_ID>
. - 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. - outputTopic: Topik Pub/Sub yang akan digunakan untuk data yang belum diproses. Contoh,
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
.
Parameter opsional
- useStorageWriteApiAtLeastOnce: Saat menggunakan Storage Write API, menentukan semantik tulis. Untuk menggunakan semantik setidaknya satu kali (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), tetapkan parameter ini ke benar. Untuk menggunakan semantik tepat satu kali, tetapkan parameter ke
false
. Parameter ini hanya berlaku jikauseStorageWriteApi
adalahtrue
. Nilai defaultnya adalahfalse
. - 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 benar, pipeline akan menggunakan BigQuery Storage Write API (https://cloud.google.com/bigquery/docs/write-api). Nilai defaultnya adalah
false
. Untuk informasi selengkapnya, lihat Menggunakan Storage Write API (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - numStorageWriteApiStreams: Saat menggunakan Storage Write API, menentukan jumlah aliran tulis. Jika
useStorageWriteApi
adalahtrue
danuseStorageWriteApiAtLeastOnce
adalahfalse
, Anda harus menetapkan parameter ini. Setelan defaultnya adalah: 0. - storageWriteApiTriggeringFrequencySec: Saat menggunakan Storage Write API, menentukan frekuensi pemicuan, dalam detik. Jika
useStorageWriteApi
adalahtrue
danuseStorageWriteApiAtLeastOnce
adalahfalse
, Anda harus menetapkan parameter ini.
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 Pub/Sub Avro 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 \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME /VERSION /flex/PubSub_Avro_to_BigQuery \ --parameters \ schemaPath=SCHEMA_PATH ,\ inputSubscription=SUBSCRIPTION_NAME ,\ outputTableSpec=BIGQUERY_TABLE ,\ outputTopic=DEADLETTER_TOPIC
Ganti kode berikut:
JOB_NAME
: nama tugas unik pilihan AndaREGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
VERSION
: 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/
SCHEMA_PATH
: jalur Cloud Storage ke file skema Avro (misalnya,gs://MyBucket/file.avsc
)SUBSCRIPTION_NAME
: nama langganan input Pub/SubBIGQUERY_TABLE
: nama tabel output BigQueryDEADLETTER_TOPIC
: topik Pub/Sub yang akan digunakan untuk antrean yang belum diproses
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 { "launch_parameter": { "jobName": "JOB_NAME ", "containerSpecGcsPath": "gs://dataflow-templates-LOCATION /VERSION /flex/PubSub_Avro_to_BigQuery", "parameters": { "schemaPath": "SCHEMA_PATH ", "inputSubscription": "SUBSCRIPTION_NAME ", "outputTableSpec": "BIGQUERY_TABLE ", "outputTopic": "DEADLETTER_TOPIC " } } }
Ganti kode berikut:
JOB_NAME
: nama tugas unik pilihan AndaLOCATION
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
VERSION
: 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/
SCHEMA_PATH
: jalur Cloud Storage ke file skema Avro (misalnya,gs://MyBucket/file.avsc
)SUBSCRIPTION_NAME
: nama langganan input Pub/SubBIGQUERY_TABLE
: nama tabel output BigQueryDEADLETTER_TOPIC
: topik Pub/Sub yang akan digunakan untuk antrean yang belum diproses
Kode sumber template
Langkah berikutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.