Menjalankan Template Flex di Dataflow

Halaman ini menjelaskan cara menjalankan tugas Dataflow menggunakan Template Flex. Dengan Template Flex, Anda dapat memaketkan 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 Anda 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 penyiapan
  • Akses baca ke image Template Flex

Untuk memberikan akses baca dan tulis ke bucket penyiapan, 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 perintah gcloud dataflow flex-template run:

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 Anda

  • TEMPLATE_FILE_LOCATION: lokasi file template di Cloud Storage

  • REGION: region tempat menjalankan tugas Dataflow

  • STAGING_LOCATION: lokasi Cloud Storage untuk menyimpan file lokal

  • TEMP_LOCATION: lokasi Cloud Storage untuk menulis file sementara. Jika tidak disetel, nilai defaultnya adalah lokasi penyiapan.

  • PARAMETERS: parameter pipeline untuk tugas

  • LABELS: Opsional. Label yang dilampirkan ke tugas Anda, menggunakan format KEY_1=VALUE_1,KEY_2=VALUE_2,....

Selama langkah penyiapan peluncuran template, Dataflow menulis file ke lokasi penyiapan. Dataflow membaca file yang di-staging ini untuk membuat grafik tugas. Selama langkah eksekusi, Dataflow menulis file ke lokasi sementara.

Menetapkan opsi pipeline

Untuk menetapkan opsi pipeline saat Anda menjalankan Template Fleksibel, gunakan flag berikut dalam perintah gcloud dataflow flex-template run:

gcloud

Saat meneruskan parameter jenis List atau Map, Anda mungkin perlu menentukan parameter dalam file YAML dan menggunakan flag flags-file.

API

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 dapat mengabaikan, mengganti, atau membuang 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

  • runner
  • project
  • jobName
  • templateLocation
  • region

Python

  • runner
  • project
  • job_name
  • template_location
  • region

Go

  • runner
  • project
  • job_name
  • template_location
  • region

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 metode 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.

  1. 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_ID dengan project ID Anda.
    • Ganti REGION dengan region Dataflow tugas yang Anda perbarui.
    • Ganti JOB_NAME dengan nama persis tugas yang ingin Anda perbarui.
    • Tetapkan parameters ke daftar key-value pair Anda. Parameter yang tercantum khusus untuk contoh template ini. Jika Anda menggunakan template kustom, ubah parameter sesuai kebutuhan. Jika Anda menggunakan template contoh, ganti variabel berikut.
      • Ganti SUBSCRIPTION_NAME dengan nama langganan Pub/Sub Anda.
      • Ganti DATASET dengan nama set data BigQuery Anda.
      • Ganti TABLE_NAME dengan nama tabel BigQuery Anda.
    • Ganti STORAGE_PATH dengan lokasi Cloud Storage file template. Lokasi harus diawali dengan gs://.
  2. Gunakan parameter environment untuk mengubah setelan lingkungan. Untuk mengetahui informasi selengkapnya, lihat FlexTemplateRuntimeEnvironment.

  3. 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:launch
    

    Ganti FILE_PATH dengan jalur ke file JSON yang berisi isi permintaan.

  4. Gunakan antarmuka pemantauan Dataflow untuk memverifikasi bahwa tugas baru dengan nama yang sama telah dibuat. Tugas ini memiliki status Diperbarui.

Langkah berikutnya