【发布时间】:2017-04-26 12:07:03
【问题描述】:
为了重现性,我希望能够构建包含数据流作业的 jar,然后使用不同的参数运行它们(例如,通过不同的帐户推广它们)。这也将简化回滚,因为构建将是不可变的。
我目前正在使用来自 maven 的 DataflowPipelineRunner 运行作业,但由于上述自动部署等原因,这很糟糕。
如何直接从 jar 运行数据流作业?
【问题讨论】:
标签: java maven google-cloud-dataflow
为了重现性,我希望能够构建包含数据流作业的 jar,然后使用不同的参数运行它们(例如,通过不同的帐户推广它们)。这也将简化回滚,因为构建将是不可变的。
我目前正在使用来自 maven 的 DataflowPipelineRunner 运行作业,但由于上述自动部署等原因,这很糟糕。
如何直接从 jar 运行数据流作业?
【问题讨论】:
标签: java maven google-cloud-dataflow
啊,看来我需要templates。
【讨论】:
我认为模板是最有前途的方法,但目前如果你想编写一个批处理作业来写入 BigQuery,你需要在每次运行作业时都创建一个模板,这几乎破坏了模板。 (这个解释here)
正如this Github README 中所写,您可以通过调用mvn package 创建一个bundle jar,然后类似下面的内容应该可以使用该jar 文件提交数据流作业。
java -cp target/google-cloud-dataflow-java-examples-all-bundled-manual_build.jar \
com.google.cloud.dataflow.examples.WordCount \
--project=<YOUR CLOUD PLATFORM PROJECT ID> \
--stagingLocation=<YOUR CLOUD STORAGE LOCATION> \
--runner=BlockingDataflowPipelineRunner
这是我目前选择的方式,因为我需要与 BigQuery 交互。
【讨论】: