我有一个PCollection,我想使用ParDo从中筛选出一些元素。
有什么地方可以找到示例吗?
最佳答案
在Apache Beam Python SDK中,有一个Filter转换,该转换接收一个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
的4
。关于google-cloud-dataflow - 如何使用Apache Beam Python SDK使用ParDo过滤PCollection的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50537657/