属性 文件中的 Apache Beam 选项

Apache Beam Options from property file

我成功获得了 Apache Beam 管道 运行 作为数据流模板。但是,我有一个选项 class(它扩展了 DataflowPipelineOptions)。此 class 在生成模板时从 pom 或命令行界面获取参数。 我想知道是否存在某些 class 以便我可以直接从属性文件加载这些参数。这样从一个环境切换到另一个环境会更容易,而且会更干净

我不确定我是否理解你的问题。我想你是在问是否有办法将默认模板参数绑定到资源文件而不是命令行或 pom.xml 文件提供的值。

参数指定为 PipelineOptions can be annotated with @Default.InstanceFactory 以指定用户提供的工厂方法来生成参数的默认值。有了这个,您可以从 DefaultValueFactory 实现中的资源文件中读取默认值。

例如,查看 WindowedWordCount 如何定义 DefaultToCurrentSystemTime an 注释 minTimestampMillis 参数:

/** A {@link DefaultValueFactory} that returns the current system time. */
public static class DefaultToCurrentSystemTime implements DefaultValueFactory<Long> {
  @Override
  public Long create(PipelineOptions options) {
    return System.currentTimeMillis();
  }
}

@Description("Minimum randomly assigned timestamp, in milliseconds-since-epoch")
@Default.InstanceFactory(DefaultToCurrentSystemTime.class)
Long getMinTimestampMillis();
void setMinTimestampMillis(Long value);