【发布时间】:2020-08-11 14:45:03
【问题描述】:
我有几个函数(或转换):func1、func2、func3、...
和一个包含函数的字典
FUNCS = {
'1': func1,
'2': func2,
...
}
我正在考虑的是传递一个参数funcs,它接受一个整数字符串,并使用for循环通过funcs,并执行函数。
例如:
假设我通过funcs="1321",那么函数执行为:
with beam.Pipeline as p:
lines = (
p
| "read file" >> beam.io.ReadFromText('gs://some/inputData.txt')
)
for f in funcs: # 1321
lines = lines | FUNCS[f](#some other params)
函数依次执行:func1、func3、func2、func1。
相比有什么不同:
with ...
lines = ...
lines = lines | func1 | func3 | func2 | func1
我认为这是可能的;但这甚至是个好主意吗?梁的平行物会有什么缺点吗?
真正的问题是:
管道是先构建,然后执行吗?
上面的
for循环和硬编码步骤会以相同的管道结束吗?for循环对效率和最终结果有什么影响?
顺便说一句,我正在使用 Google Dataflow 的 flex 模板。
【问题讨论】:
标签: google-cloud-dataflow apache-beam