2015-02-12 3 views

Antwort

6

Eine einfache Möglichkeit wäre, Flatten() mit RemoveDuplicates() wie folgt zu kombinieren. Je nachdem, ob Sie die disjunkte Vereinigung oder mengentheoretische Vereinigung wollen, kann der RemoveDuplicates Aufruf weggelassen werden:

PCollection<String> pc1 = ...; 
PCollection<String> pc2 = ...; 
PCollection<String> union = PCollectionList.of(pc1).and(pc2) 
    .apply(Flatten.<String>create()) 
    .apply(RemoveDuplicates.<String>create()); 
+0

Ich frage mich, ob es eine gute Idee wäre, ein weiteres RemoveDuplicates vor der Flatten hinzuzufügen, falls es in jeder Sammlung auch Duplikate geben könnte? B. PCollectionList.of (pc1.apply (RemoveDuplicates)) und (pc2.apply (RemoveDuplicates)) - oder würde der Optimierer sich darum kümmern? – jkff

+0

Ich denke, dass "Flatten. .create" sollte "Flatten. erstellen" – redtuna

+0

@redtuna behoben werden, danke! –

-1

Wenn Sie mehr als zwei Kollektionen, eine bequeme Lösung, die eine Liste von PCollection zu füllen ist, macht einen PCollectionList basierend darauf und die Flatten:

Hoffe, das hilft.