Halaman ini menjelaskan cara menjalankan tugas Dataflow menggunakan Template Flex. Template Flex memungkinkan Anda mengemas pipeline Dataflow sehingga Anda dapat menjalankan pipeline tanpa memiliki lingkungan pengembangan Apache Beam.
Izin yang diperlukan
Saat Anda menjalankan Template Flex, Dataflow akan membuat tugas untuk Anda. Untuk membuat tugas, akun layanan Dataflow memerlukan izin berikut:
dataflow.serviceAgent
Saat pertama kali menggunakan Dataflow, layanan akan menetapkan peran ini untuk Anda, sehingga Anda tidak perlu memberikan izin ini.
Secara default, akun layanan Compute Engine digunakan untuk VM peluncur dan VM pekerja. Akun layanan memerlukan peran dan kemampuan berikut:
- Storage Object Admin (
roles/storage.objectAdmin) - Pelihat (
roles/viewer) - Dataflow Worker (
roles/dataflow.worker) - Akses baca dan tulis ke bucket staging
- Akses baca ke image Template Flex
Untuk memberikan akses baca dan tulis ke bucket staging, Anda dapat menggunakan peran
Storage Object Admin (roles/storage.objectAdmin). Untuk mengetahui informasi selengkapnya,
lihat Peran IAM untuk Cloud Storage.
Untuk memberikan akses baca ke image Template Flex, Anda dapat menggunakan peran
Storage Object Viewer (roles/storage.objectViewer). Untuk mengetahui informasi selengkapnya,
lihat Mengonfigurasi kontrol akses.
Menjalankan Template Flex
Untuk menjalankan Template Flex, gunakan
gcloud dataflow flex-template run
perintah:
gcloud dataflow flex-template run JOB_ID \ --template-file-gcs-location gs://TEMPLATE_FILE_LOCATION \ --region REGION \ --staging-location STAGING_LOCATION \ --temp-location TEMP_LOCATION \ --parameters PARAMETERS \ --additional-user-labels LABELS \
Ganti kode berikut:
JOB_ID: ID untuk tugas AndaTEMPLATE_FILE_LOCATION: lokasi Cloud Storage dari file templateREGION: region tempat menjalankan tugas DataflowSTAGING_LOCATION: lokasi Cloud Storage untuk melakukan staging file lokalTEMP_LOCATION: lokasi Cloud Storage untuk menulis file sementara. Jika tidak ditetapkan, nilai defaultnya adalah lokasi staging.PARAMETERS: parameter pipeline untuk tugasLABELS: Opsional. Label yang dilampirkan ke tugas Anda, menggunakan formatKEY_1=VALUE_1,KEY_2=VALUE_2,....
Selama langkah staging saat meluncurkan template, Dataflow akan menulis file ke lokasi staging. Dataflow membaca file yang di-staging ini untuk membuat grafik tugas. Selama langkah eksekusi, Dataflow akan menulis file ke lokasi sementara.
Menetapkan opsi pipeline
Untuk menetapkan opsi pipeline saat menjalankan Template Flex, gunakan flag berikut dalam perintah gcloud dataflow flex-template run:
parameters: Gunakan flag ini untuk menetapkan jenis opsi pipeline berikut:Opsi pipeline yang didukung oleh Template Flex. Untuk mengetahui daftar opsi yang didukung oleh Template Flex, lihat Opsi pipeline.
Opsi pipeline yang dideklarasikan dalam metadata template.
additional-pipeline-options: Gunakan flag ini untuk menetapkan opsi pipeline Apache Beam lainnya yang tidak didukung langsung oleh Template Flex.additional-experiments: Gunakan flag ini untuk menetapkan opsi pipeline eksperimental (setara dengan opsiexperiments).
gcloud
Sertakan opsi pipeline menggunakan
parametersflag.Sertakan eksperimen runtime dan opsi pipeline menggunakan flag
additional-experimentsdanadditional-pipeline-options.
Saat meneruskan parameter jenis List atau Map, Anda mungkin perlu menentukan
parameter dalam file YAML dan menggunakan flag flags-file.
API
Sertakan opsi pipeline menggunakan
parameterskolom.Sertakan eksperimen runtime dan opsi pipeline menggunakan kolom
additionalExperimentsdanadditionalPipelineOptions.
Contoh berikut menunjukkan cara menyertakan opsi pipeline, eksperimen, dan opsi tambahan dalam isi permintaan:
{
"jobName": "my-flex-template-job",
"parameters": {
"option_defined_in_metadata": "value"
},
"environment": {
"additionalExperiments": [
"use_runner_v2"
],
"additionalPipelineOptions": {
"common_pipeline_option": "value"
}
}
}
Saat menggunakan Template Flex, Anda dapat mengonfigurasi beberapa opsi pipeline selama inisialisasi pipeline, tetapi opsi pipeline lainnya tidak dapat diubah. Jika argumen command line yang diperlukan oleh Template Flex ditimpa, tugas mungkin akan mengabaikan, mengganti, atau menghapus opsi pipeline yang diteruskan oleh peluncur template. Tugas mungkin gagal diluncurkan, atau tugas yang tidak menggunakan Template Flex mungkin diluncurkan. Untuk mengetahui informasi selengkapnya, lihat Gagal membaca file tugas.
Selama inisialisasi pipeline, jangan ubah opsi pipeline berikut: :
Java
runnerprojectjobNametemplateLocationregion
Python
runnerprojectjob_nametemplate_locationregion
Go
runnerprojectjob_nametemplate_locationregion
Memblokir kunci SSH project dari VM yang menggunakan kunci SSH berbasis metadata
Anda dapat mencegah VM menerima kunci SSH yang disimpan dalam metadata project dengan memblokir kunci SSH project dari VM. Gunakan flag additional-experiments dengan opsi layanan block_project_ssh_keys:
--additional-experiments=block_project_ssh_keys
Untuk mengetahui informasi selengkapnya, lihat Opsi layanan Dataflow.
Memperbarui tugas Template Flex
Contoh permintaan berikut menunjukkan cara memperbarui tugas streaming template menggunakan projects.locations.flexTemplates.launch. Jika Anda ingin menggunakan gcloud CLI, lihat Memperbarui pipeline yang ada.
Jika Anda ingin memperbarui template klasik, gunakan projects.locations.templates.launch sebagai gantinya.
Ikuti langkah-langkah untuk membuat tugas streaming dari Template Flex. Kirim permintaan POST HTTP berikut dengan nilai yang diubah:
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launch { "launchParameter": { "update": true "jobName": "JOB_NAME", "parameters": { "input_subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME", "output_table": "PROJECT_ID:DATASET.TABLE_NAME" }, "containerSpecGcsPath": "STORAGE_PATH" }, }- Ganti
PROJECT_IDdengan project ID Anda. - Ganti
REGIONdengan region Dataflow tugas yang Anda perbarui. - Ganti
JOB_NAMEdengan nama persis tugas yang ingin Anda perbarui. - Tetapkan
parameterske daftar key-value pair Anda. Parameter yang tercantum bersifat khusus untuk contoh template ini. Jika Anda menggunakan template kustom, ubah parameter sesuai kebutuhan. Jika Anda menggunakan template contoh, ganti variabel berikut.- Ganti
SUBSCRIPTION_NAMEdengan nama langganan Pub/Sub Anda. - Ganti
DATASETdengan nama set data BigQuery Anda. - Ganti
TABLE_NAMEdengan nama tabel BigQuery Anda.
- Ganti
- Ganti
STORAGE_PATHdengan lokasi Cloud Storage dari file template. Lokasi harus dimulai dengangs://.
- Ganti
Gunakan parameter
environmentuntuk mengubah setelan lingkungan. Untuk mengetahui informasi selengkapnya, lihatFlexTemplateRuntimeEnvironment.Opsional: Untuk mengirim permintaan menggunakan curl (Linux, macOS, atau Cloud Shell), simpan permintaan ke file JSON, lalu jalankan perintah berikut:
curl -X POST -d "@FILE_PATH" -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launchGanti FILE_PATH dengan jalur ke file JSON yang berisi isi permintaan.
Gunakan antarmuka pemantauan Dataflow untuk memverifikasi bahwa tugas baru dengan nama yang sama telah dibuat. Tugas ini memiliki status Diperbarui.
Langkah berikutnya
- Pelajari cara membuat Template Flex untuk pipeline Apache Beam Anda.
- Untuk mengetahui lebih lanjut tentang Template Klasik, Template Flex, dan skenario kasus penggunaannya, lihat Template Dataflow.
- Untuk mengetahui informasi pemecahan masalah Template Flex, lihat Memecahkan masalah waktu tunggu Template Flex.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.