尝试为数据流作业创建模板。
有什么方法可以生成带有运行时参数的模板吗?
到目前为止,在创建模板时使用了什么参数,但是当我尝试为变量传递不同的值时,它并没有选择运行时值。
如果需要任何其他详细信息,将提供相同的信息。
答案 0 :(得分:1)
需要将一个参数包装在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内部)。
本机TextIO.Read Beam转换provides support除了从String中读取外,还用于从ValueProvider中读取。
答案 1 :(得分:0)
您可以在管道选项中使用值提供程序,以在管道中具有运行时参数。
但是,我担心这仅限于可以使用这些参数的位置(大多数在DoFn中使用)。
从数据流模板中可以预料到这种行为,因为它是管道的表示形式而不是代码本身。
请记住,您不能基于传递的值来创建具有动态处理步骤的数据流模板。
这些步骤被硬编码到模板中,除非再次执行生成模板的代码,否则无法更改这些步骤。