Преобразование 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 .