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

问题描述 投票:1回答:2

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

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

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

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

google-cloud-dataflow
2个回答
1
投票

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

WordCount pipeline为例。

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

@Description("Path of the file to read from")
ValueProvider<String> getInputFile();
void setInputFile(ValueProvider<String> value);

由于inputFile的值在运行时(当模板实际上使用有效输入执行时)是未知的,因此使用ValueProvider的转换将推迟读取参数的值直到运行时(例如在DoFn内部)。

除了从String读取之外,本机TextIO.Read Beam转换provides support用于从ValueProvider读取。


0
投票

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

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

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

请记住,您无法根据传递的值创建具有动态处理步骤的数据流模板。

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

© www.soinside.com 2019 - 2024. All rights reserved.