Google cloud dataflow 数据流:在模板中使用运行时参数

Google cloud dataflow 数据流:在模板中使用运行时参数,google-cloud-dataflow,Google Cloud Dataflow,正在尝试为数据流作业创建模板 有没有办法生成带有运行时参数的模板 到目前为止,无论在创建模板时使用了什么参数,但当我尝试为变量传递不同的值时,并没有选择运行时值 如果需要任何其他详细信息,将提供相同的信息。您可以在管道选项中使用值提供程序在管道中包含运行时参数 但我担心这太局限于您可以使用这些参数的地方(主要是在DoFn中) 这种行为是数据流模板所期望的,因为它是管道的表示,而不是代码本身 请记住,您不能基于传递的值创建具有动态处理步骤的数据流模板 这些步骤是硬编码到模板中的,除非再次执行生成模

正在尝试为数据流作业创建模板

有没有办法生成带有运行时参数的模板

到目前为止,无论在创建模板时使用了什么参数,但当我尝试为变量传递不同的值时,并没有选择运行时值


如果需要任何其他详细信息,将提供相同的信息。

您可以在管道选项中使用值提供程序在管道中包含运行时参数

但我担心这太局限于您可以使用这些参数的地方(主要是在DoFn中)

这种行为是数据流模板所期望的,因为它是管道的表示,而不是代码本身

请记住,您不能基于传递的值创建具有动态处理步骤的数据流模板


这些步骤是硬编码到模板中的,除非再次执行生成模板的代码,否则无法更改。

需要将参数包装到ValueProvider对象中,以便模板管道访问该参数的运行时值。提供的所有示例模板都演示了如何使用ValueProvider参数化模板管道

请看一个例子

如您所见,管道使用ValueProvider(而不是简单的字符串)来读取需要执行WordCount的文件路径:

@Description("Path of the file to read from")
ValueProvider<String> getInputFile();
void setInputFile(ValueProvider<String> value);
@Description(“要读取的文件的路径”)
ValueProvider getInputFile();
作废setInputFile(ValueProvider值);
由于inputFile的值在运行时之前是未知的(当模板实际使用有效输入执行时),因此使用ValueProvider的转换将延迟到运行时读取参数值(例如,在DoFn内部)


本机TextIO.Read Beam转换,除了从字符串读取外,还用于从ValueProvider读取。

python中有示例可供参考。