Как отфильтровать элементы PC-коллекции с помощью ParDo с помощью Apache Beam Python SDK - PullRequest
0 голосов
/ 26 мая 2018

У меня есть PCollection, и я хотел бы использовать ParDo для фильтрации некоторых элементов из него.

Есть ли место, где я могу найти пример для этого?

1 Ответ

0 голосов
/ 26 мая 2018

В Apache Beam Python SDK есть преобразование Filter, которое получает лямбду и отфильтровывает все элементы, которые возвращают False.Вот пример:

filtered_collection = (beam.Create([1, 2, 3, 4, 5])
                       beam.Filter(lambda x: x % 2 == 0))

В этом случае filtered_collection будет PCollection, который содержит 2, и 4.


Если вы хотитечтобы кодировать это как DoFn, который передается в преобразование ParDo, вы должны сделать что-то вроде этого:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...