属性 文件中的 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);
我成功获得了 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);