【发布时间】:2017-11-27 08:12:12
【问题描述】:
我将 Apache Beam 管道作为数据流模板成功运行。但是,我有一个选项类(它扩展了 DataflowPipelineOptions)。生成模板时,此类从 pom 或命令行界面获取参数。 我想知道是否存在某个类,以便我可以直接从属性文件加载这些参数。这样从一个环境切换到另一个环境会更容易,而且会更干净
【问题讨论】:
标签: google-cloud-dataflow options apache-beam
我将 Apache Beam 管道作为数据流模板成功运行。但是,我有一个选项类(它扩展了 DataflowPipelineOptions)。生成模板时,此类从 pom 或命令行界面获取参数。 我想知道是否存在某个类,以便我可以直接从属性文件加载这些参数。这样从一个环境切换到另一个环境会更容易,而且会更干净
【问题讨论】:
标签: google-cloud-dataflow options apache-beam
我不确定我是否理解您的问题。我想您是在问是否有办法将默认模板参数绑定到资源文件提供的值,而不是命令行或pom.xml 文件提供的值。
指定为PipelineOptions 的参数可以使用@Default.InstanceFactory 进行注释,以指定用户提供的工厂方法来为参数生成默认值。这样,您可以从 DefaultValueFactory 实现中的资源文件中读取默认值。
举个例子,看看WindowedWordCount是如何定义DefaultToCurrentSystemTime一个注解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);
【讨论】: