Sto cercando di eseguire un'operazione unione in Dataflow. Esiste un codice di esempio per l'unione di due PCollections in Dataflow?Come si esegue un'unione nel flusso di dati?
5
A
risposta
6
Un modo semplice per farlo sarebbe quello di combinare Flatten() con RemoveDuplicates() in questo modo. A seconda se si desidera l'unione disgiunta o l'unione di set-teorica, la chiamata RemoveDuplicates può essere omesso:
PCollection<String> pc1 = ...;
PCollection<String> pc2 = ...;
PCollection<String> union = PCollectionList.of(pc1).and(pc2)
.apply(Flatten.<String>create())
.apply(RemoveDuplicates.<String>create());
-1
Se si dispone di più di due collezioni, una soluzione conveniente è quello di compilare un elenco di PCollection, fare un PCollectionList sulla base di questo e l'Appiattisci:
Spero che questo aiuti.
Mi chiedo se sarebbe una buona idea aggiungere un altro RemoveDuplicates prima del Flatten, nel caso ci fossero dei duplicati all'interno di ogni raccolta? Ad esempio, PCollectionList.of (pc1.apply (RemoveDuplicates)). e (pc2.apply (RemoveDuplicates)) - o l'ottimizzatore si prenderà cura di questo? – jkff
Penso che "Flatten. .create" dovrebbe essere "Flatten. creare" –
redtuna
@redtuna corretto, grazie! –