为了重现性,我希望能够构建包含数据流作业的jar,然后使用不同的参数运行它们(例如,通过不同的帐户进行推广)。这也将简化回滚,因为构建将是不可变的。
我目前正在使用maven DataflowPipelineRunner
运行作业,但由于上述原因,自动部署等情况很糟糕。
如何直接从jar运行数据流作业?
答案 0 :(得分:2)
啊看起来我需要templates。
答案 1 :(得分:1)
我认为模板是最有前途的方法,但是目前如果你想写一个批处理作业来写BigQuery,你需要在每次想要运行一个工作时创建一个模板,这几乎破坏了模板。 (这解释为here)
如this Github README中所述,您可以通过调用mvn package
来创建一个包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进行交互。