Próbuję wykonać operację związaną z przepływem danych. Czy istnieje przykładowy kod do łączenia dwóch PCollections w Dataflow?Jak wykonać połączenie w przepływie danych?
5
A
Odpowiedz
6
Prostym sposobem na zrobienie tego byłoby połączenie Flatten() z RemoveDuplicates() w taki sposób. W zależności od tego, czy chcesz unię odłączony lub set-teoretyczną unię, wywołanie RemoveDuplicates można pominąć:
PCollection<String> pc1 = ...;
PCollection<String> pc2 = ...;
PCollection<String> union = PCollectionList.of(pc1).and(pc2)
.apply(Flatten.<String>create())
.apply(RemoveDuplicates.<String>create());
-1
Jeśli masz więcej niż dwie kolekcje, wygodnym rozwiązaniem jest, aby wypełnić listę PCollection, zrób PCollectionList na podstawie tego i Spłaszczenia:
Mam nadzieję, że to pomoże.
Zastanawiam się, czy dobrym pomysłem byłoby dodanie kolejnego RemoveDuplicates przed spłaszczeniem, na wypadek gdyby w każdej kolekcji pojawiły się również duplikaty? tj. PCollectionList.of (pc1.apply (RemoveDuplicates)) oraz (pc2.apply (RemoveDuplicates)) - czy optymalizator mógłby się tym zająć? – jkff
Myślę, że "Spłaszcz". Utwórz "powinien być" Spłaszcz. utworzyć " –
redtuna
@redtuna naprawione, dziękuję! –