gpt4 book ai didi

python - 关于在 Apache Beam for python 中过滤返回值和预期返回类型的问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:33 27 4
gpt4 key购买 nike

关于使用 Apache Beam for Python (Google Cloud Dataflow) 开发 Map-Reduce 管道,我有两个问题。

首先,每当我执行任何类型的 beam.DoFn()beam.Map() 函数时,都会发生类似的情况

def function(input):
if not input > 0:
return None
else:
return input*2

p = beam.Pipeline()

(p
| 'read some input from a source'
>> read_from_datastore(some_query)
| 'perform an operation on the input'
>> beam.Map(function)
| 'filter out invalid values'
>> beam.Filter(lambda x: x is not None)
)

某种错误情况是在映射函数内处理的,我返回 None 而不是预期的映射值。然后,我必须添加一个 beam.Filter() 步骤来删除所有 None 值,使其无法进入管道的下一阶段。在具有许多不同阶段的管道中处理起来会变得非常冗长和烦人。是否有某种类型的方法可以告诉函数自动过滤任何 None 返回值?或者只是告诉函数根本不返回任何内容?

其次,beam.Mapbeam.DoFn 的返回类型应该是一个列表吗?似乎每当我接受一个值并返回一个值时,事情就会开始崩溃。我经常发现自己将单个返回值(如 int)封装在括号中以将其转换为列表,这样管道的下一阶段仅接收该单个 int。我一定错过了有关映射缩减管道的预期结构和流程的一些信息,管道中的单个阶段是否应该返回类似列表的对象?

最佳答案

  • beam.Map和beam.DoFn的返回类型应该是一个列表吗?
    • 不,这对于 .Map 来说是不正确的。如果您正在实现 ParDo,则 pardo 预计会输出列表。
  • 告诉函数根本不返回任何内容?

关于python - 关于在 Apache Beam for python 中过滤返回值和预期返回类型的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57938359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com