Google cloud dataflow 在ApacheBeam中使用for循环for阶跃顺序可以吗

Google cloud dataflow 在ApacheBeam中使用for循环for阶跃顺序可以吗,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,我有几个函数(或变换):func1,func2,func3 还有一个保存函数的dict FUNCS={ “1”:函数1, “2”:功能2, ... } 我考虑的是传递一个参数funcs,该参数接受一个整数字符串,并使用for循环funcs,然后执行函数 例如: 假设我通过funcs=“1321”,则函数的执行方式如下: 带梁。管道为p: 行=( P |“读取文件”>>beam.io.ReadFromText('gs://some/inputData.txt') ) 对于函数中的f:#1321

我有几个函数(或变换):func1,func2,func3

还有一个保存函数的dict

FUNCS={
“1”:函数1,
“2”:功能2,
...
}
我考虑的是传递一个参数
funcs
,该参数接受一个整数字符串,并使用
for
循环
funcs
,然后执行函数

例如:

假设我通过
funcs=“1321”
,则函数的执行方式如下:

带梁。管道为p:
行=(
P
|“读取文件”>>beam.io.ReadFromText('gs://some/inputData.txt')
)
对于函数中的f:#1321
lines=lines | FUNCS[f](#其他一些参数)
函数的执行顺序为:func1,func3,func2,func1

与以下各项相比,是否存在任何差异:

与。。。
行=。。。
直线=直线| func1 | func3 | func2 | func1
我认为这是可能的;但这是个好主意吗?光束平行的东西会有什么缺点吗

真正的问题是:

管道是否先构建,然后执行

上面的
循环和硬编码步骤是否会以相同的管道结束?
for
循环对效率和最终结果有什么影响


顺便说一句,我正在使用谷歌数据流的flex模板。

这是一个聪明的问题

简短的回答是:,首先构建管道,然后执行

管道仅在退出带
块的
后执行


您的
for
循环完全正常。

如果您想让我更深入地回答问题,请告诉我,这样就有一个很长的答案;)有什么官方文件可供我参考吗?