我正在开发谷歌应用程序引擎项目,我为谷歌云数据流作业创建了一个类,并尝试按照步骤 https://cloud.google.com/dataflow/docs/guides/templates/creating-templates#creating-and-staging-templates 进行操作。 ? 但是,当我尝试执行链接中提供的命令时,我的数据流作业立即开始执行,我不想开始执行,我只想创建一个模板并稍后执行
我尝试执行并创建模板的命令:
mvn 编译执行:java -Dexec.mainClass=com.testUtils.TimeSpentDataFlow -Dexec.args="--runner=DataflowRunner --project=my-project-id --stagingLocation=gs://staging --templateLocation =gs://MyTemplateData16Apr19"
我也尝试过自定义选项类,但没有成功。 下面是我的代码片段
public static void main(String[] args) {
logger.info("main start");
init();
logger.info("main end");
}
private static void init() {
DataflowPipelineOptions dataflowOptions = PipelineOptionsFactory.as(DataflowPipelineOptions.class);
dataflowOptions.setGcpTempLocation("gs://gcpTempLocation/");
dataflowOptions.setProject("my-project-id");
dataflowOptions.setStagingLocation("gs://stagingLocation/");
dataflowOptions.setRunner(DataflowRunner.class);
FileSystems.setDefaultPipelineOptions(dataflowOptions);
Pipeline p = Pipeline.create(dataflowOptions);
p.apply(Create.of("5435798895722496"))
.apply(new PrintData());
p.run().waitUntilFinish();
}
当我尝试执行默认字数统计程序的命令时,模板会被创建,但如果我尝试使用自定义类执行相同的命令,它就会开始执行
最佳答案
您的命令行参数未传递到管道选项中。如果您想使用命令行参数,请将初始化“dataflowOptions”的 block 替换为:
DataflowPipelineOptions dataflowOptions =
PipelineOptionsFactory.fromArgs(args)
.withValidation()
.as(DataflowPipelineOptions.class);
另一个选项是设置模板位置:
dataflowOptions.setTemplateLocation("gs://MyTemplateData16Apr19");
关于java - 无法使用 Java 通过 CLI 命令创建 Google 云数据流模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55714001/