Vergleichen von zwei RDDs
Ich habe zwei RDD [Array [String]], nennen wir sie rdd1 und rdd2. Ich würde ein neues RDD erstellen, das nur die Einträge von rdd2 enthält, nicht in rdd1 (basierend auf einem Schlüssel). Ich verwende Spark auf Scala über Intellij.
Ich habe rdd1 und rdd2 nach einem Schlüssel gruppiert (ich werde nur die Schlüssel der beiden rdds vergleichen):
val rdd1Grouped = rdd1.groupBy(line => line(0))
val rdd2Grouped = rdd2.groupBy(line => line(0))
Dann habe ich einleftOuterJoin
:
val output = rdd1Grouped.leftOuterJoin(rdd2Grouped).collect {
case (k, (v, None)) => (k, v)
}
aber dies scheint nicht das richtige Ergebnis zu liefern.
Was stimmt damit nicht? Irgendwelche Vorschläge?
Beispiel für RDDS (jede Zeile ist ein Array [String], ofc):
rdd1 rdd2 output (in some form)
1,18/6/2016 2,9/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 1,20/6/2016
3,18/6/2016 1,20/6/2016
3,18/6/2016 1,20/6/2016
3,18/6/2016
3,18/6/2016
3,18/6/2016
In diesem Fall möchte ich nur den Eintrag "2,9 / 6/2016" hinzufügen, da der Schlüssel "2" nicht in rdd1 ist.