google-cloud-dataflow - 如何使用 Apache Beam Python SDK 使用 ParDo 过滤 PCollection 的元素
问题描述
我有一个 PCollection,我想使用 ParDo 从中过滤掉一些元素。
有没有地方可以找到这个例子?
解决方案
在 Apache Beam Python SDK 中,有一个过滤器转换,它接收一个 lambda,并过滤掉所有返回的元素False
。这是一个例子:
filtered_collection = (beam.Create([1, 2, 3, 4, 5])
beam.Filter(lambda x: x % 2 == 0))
在这种情况下,filtered_collection
将是一个PCollection
包含2
和的4
。
如果要将其编码为传递给 ParDo 变换的 DoFn,则可以执行以下操作:
class FilteringDoFn(beam.DoFn):
def process(self, element):
if element % 2 == 0:
yield element
else:
return # Return nothing
你可以像这样应用它:
filtered_collection = (beam.Create([1, 2, 3, 4, 5])
beam.ParDo(FilteringDoFn()))
其中,和以前一样,filtered_collection
是一个PCollection
包含2
和的 a 4
。
推荐阅读
- kotlin - 通配符导入分组
- html - 如何更改预填充文本输入 html 的颜色?
- c++ - OpenGL中的线框立方体渲染空白
- javascript - 是否可以通过单击最后一列上的按钮从表中的第一列获取 innerhtml 值
- c# - 显示包含特定整数类型字段的最大值的整行。返回错误
- java - 如何在java中释放查询间隔
- unity3d - 设置相机视口的 X 会导致渲染黑色条带
- angular - 错误 TS2339:“typeof Observable”类型上不存在属性“timer”。“switchMap”和“takeUntil”中断流程
- php - 如何增加'的高度和宽度
' 自动基于内容?我想增加 高度和宽度自动? - node.js - 构建时将 Nuxt.js 转译为 CommonJs