【问题标题】:Is it OK to use for loop for step order in Apache beam可以在 Apache Beam 中使用 for 循环进行步进顺序吗
【发布时间】: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


    【解决方案1】:

    这是一个聪明的问题。

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

    管道仅在您退出 with 块后执行。

    您的for 循环完全没问题。

    【讨论】:

    • 如果您希望我深入了解答案,请告诉我
    • 所以答案很长 ;) 有没有官方文档可以参考?
    猜你喜欢
    • 1970-01-01
    • 2019-01-25
    • 2022-11-19
    • 1970-01-01
    • 2023-03-29
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多