DataflowPipelineOptions:在 arg 解析后使用 .setRunner 显式设置运行器
DataflowPipelineOptions: set runner explicitly using .setRunner after arg parsing
在dataflow SDK 2.4.0中,我曾经能够运行:
PipelineOptionsFactory.register(MyPipelineOptions.class);
MyPipelineOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().create().as(MyPipelineOptions.class);
options.setRunner(DataflowRunner.class);
但是,在 Apache Beam SDK 2.9.0 中,我需要使用 --runner=DataflowRunner
在 args 中设置 运行ner,否则它会在 create()
上失败(第二行) .这是期望的行为还是在从 args 读取其他选项后仍然可以使用 setRunner
设置 运行ner?
使用的 Maven 依赖项:
<dependencies>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
显然,如果在创建选项对象时没有指定运行器,则默认为DirectRunner。因此,即使稍后使用 setRunner 来定义另一个运行器,只是为了能够创建没有指定运行器的选项对象,DirectRunner 也需要在类路径中。
要使其正常工作,您只需添加依赖项即可在类路径中安装 DirectRunner
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-direct-java</artifactId>
<version>2.9.0</version>
</dependency>
在dataflow SDK 2.4.0中,我曾经能够运行:
PipelineOptionsFactory.register(MyPipelineOptions.class);
MyPipelineOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().create().as(MyPipelineOptions.class);
options.setRunner(DataflowRunner.class);
但是,在 Apache Beam SDK 2.9.0 中,我需要使用 --runner=DataflowRunner
在 args 中设置 运行ner,否则它会在 create()
上失败(第二行) .这是期望的行为还是在从 args 读取其他选项后仍然可以使用 setRunner
设置 运行ner?
使用的 Maven 依赖项:
<dependencies>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
显然,如果在创建选项对象时没有指定运行器,则默认为DirectRunner。因此,即使稍后使用 setRunner 来定义另一个运行器,只是为了能够创建没有指定运行器的选项对象,DirectRunner 也需要在类路径中。
要使其正常工作,您只需添加依赖项即可在类路径中安装 DirectRunner
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-direct-java</artifactId>
<version>2.9.0</version>
</dependency>