Есть ли у Flatten какие-либо эффекты, кроме уплощения коллекций? - PullRequest
0 голосов
/ 11 декабря 2018

В частности, Flatten PTransform в Beam выполняет любой вид:

  • Дедупликация
  • Фильтрация
  • Очистка существующих элементов

Или это просто "объединить" две разные PCollections?

1 Ответ

0 голосов
/ 11 декабря 2018

Преобразование Flatten не выполняет никакой дедупликации или какой-либо фильтрации.Как уже упоминалось, он просто объединяет несколько PCollections в один, который содержит элементы каждого из входов.

Это означает, что:

with beam.Pipeline() as p:
    c1 = p | "Branch1" >> beam.Create([1, 2, 3, 4])
    c2 = p | "Branch2" >> beam.Create([4, 4, 5, 6])

    result = (c1, c2) | beam.Flatten()

В этом случае,result PCollection содержит следующие элементы: [1, 2, 3, 4, 4, 4, 5, 6].

Обратите внимание, как элемент 4 появляется один раз в c1 и дважды в c2.Это не дедуплицируется, не фильтруется и не удаляется каким-либо образом.

В качестве любопытного факта о Flatten некоторые бегуны оптимизируют его и просто добавляют нисходящее преобразование в обеих ветвях.Итак, вкратце, не требует специальной фильтрации или дедупликации.Простое слияние PCollections .

...