[英]How to convert a non-templated beam job to templated job and run it on GCP Dataflow runner?
通過使用以下命令,我能夠直接在 GCP 數據流運行器上運行非模板化的梁作業:
java -jar <jar_name>
--runner=DataFlowRunner
--gcpTempLocation=gs://some/gcs/location
--stagingLocation=gs://some/gcs/location/stage
--tempLocation=gs://some/gcs/location/temp
--region=<region_name>
--project=<project_name>
--subnetwork=<subnet_name>
--jobName=<job_name>
我想通過使用以下命令在 gcs 存儲桶中暫存模板來模板化相同的作業:
java -jar <jar_name>
--runner=DataFlowRunner
--gcpTempLocation=gs://some/gcs/location
--stagingLocation=gs://some/gcs/location/stage
--templateLocation=gs://some/gcs/location/templates/<job_name>
--region=<region_name>
--project=<project_name>
但我在創建作業模板實例時收到以下錯誤:
18:11:05.004 [main] INFO org.apache.beam.runners.dataflow.DataflowRunner - Template successfully created.
Exception in thread "main" java.lang.UnsupportedOperationException: The result of template creation should not be used.
at org.apache.beam.runners.dataflow.util.DataflowTemplateJob.getJobId(DataflowTemplateJob.java:41)
at org.apache.beam.runners.dataflow.DataflowPipelineJob.getJobWithRetries(DataflowPipelineJob.java:559)
at org.apache.beam.runners.dataflow.DataflowPipelineJob.getStateWithRetries(DataflowPipelineJob.java:540)
at org.apache.beam.runners.dataflow.DataflowPipelineJob.waitUntilFinish(DataflowPipelineJob.java:324)
at org.apache.beam.runners.dataflow.DataflowPipelineJob.waitUntilFinish(DataflowPipelineJob.java:253)
at org.apache.beam.runners.dataflow.DataflowPipelineJob.waitUntilFinish(DataflowPipelineJob.java:212)
at org.apache.beam.runners.dataflow.DataflowPipelineJob.waitUntilFinish(DataflowPipelineJob.java:206)
at com.gojek.de.jobs.EventFilterJob.main(EventFilterJob.java:72)
並且在從 GCS 模板運行數據流作業時,數據流作業運行器無法從模板啟動作業實例。
我能夠在 GCS 存儲桶中看到模板創建。 我不確定,為什么作業運行失敗。 另外,我們可以直接將非模板梁作業轉換為模板作業嗎?
注意:我無法運行文檔中給出的 maven 命令,因為我們的項目基於 Gradle。
創建模板時,您不能使用DataflowPipelineJob::waitUntilFinish ,因為該run
沒有附加作業 - 這里似乎就是這種情況。
查看WordCount 示例以查看工作模板的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.