具有不同默认PipelineOptions的梁管道

时间:2019-09-16 22:34:41

标签: apache-beam

我正在寻找如何修改在Beam中注册的默认管道选项的方法。具体来说,我正在查看S3Options(和相应的AwsPipelineOptionsRegistrar),并看到如下所示的属性:

  @Default.InstanceFactory(AwsUserCredentialsFactory.class)
  AWSCredentialsProvider getAwsCredentialsProvider();

在这种情况下,我想用自己选择的一个替换 default InstanceFactory(实际上是相同的选择,但是添加了一个更多的备用凭据,以便使用我们的本地Minio默认值进行本地开发)。

我看不到在Beam的@Default.*机制中覆盖PipelineOptions的任何方法。如果我使用新的默认注释将其子类化,则最终得到:

  

java.lang.IllegalArgumentException:属性[awsCredentialsProvider]带有矛盾的注释。在[org.apache.beam.sdk.io.aws.options.AwsOptions#getAwsCredentialsProvider()上找到[[Default.InstanceFactory(value = class org.apache.beam.sdk.io.aws.options.AwsOptions $ AwsUserCredentialsFactory), [p.MyCustomS3PipelineOptionsOverrides#getAwsCredentialsProvider()上的Default.InstanceFactory(value = class MyCustomClassName)]。

即使此操作确实可以按预期工作,也可以使用默认值AwsPipelineOptionsRegistrar来注册我未覆盖的S3Options子类,因此我看不到如何应用替代默认值。

我假设当前的方法是始终提供一个--awsCredentialsProvider=MyOverride参数,但是我希望有一种不需要此参数的方法。这可能吗?

0 个答案:

没有答案