尝试为数据流作业创建模板。
有没有办法生成带有运行时参数的模板?
到目前为止,无论在创建模板时使用了什么参数,但是当我尝试为变量传递不同的值时,它不会选择运行时值。
如果需要任何其他细节,将提供相同的。
需要将参数包装在ValueProvider对象内,以便模板管道访问该参数的运行时值。提供的所有示例模板here演示了如何使用ValueProvider来参数化模板管道。
如您所见,管道使用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读取。
您可以在管道选项中使用值提供程序在管道中包含运行时参数。
但是我担心这太限于你可以使用这些参数的地方(主要是在DoFn中)。
这种行为是数据流模板所期望的,因为它是管道的表示而不是代码本身。
请记住,您无法根据传递的值创建具有动态处理步骤的数据流模板。
这些步骤被硬编码到模板中,除非再次执行生成模板的代码,否则无法更改这些步骤。