如何使用Apache Beam Python SDK使用ParDo过滤PCollection的元素

时间:2018-05-25 22:38:24

标签: google-cloud-dataflow apache-beam

我有一个PCollection,我想用ParDo过滤掉它中的一些元素。

有没有可以找到这个例子的地方?

1 个答案:

答案 0 :(得分:6)

在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将是包含PCollection2的{​​{1}}。

如果你想将它编码为传递给ParDo变换的DoFn,你可以这样做:

4

你可以这样申请:

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,其中包含PCollection2