[FIXED] Wie verbinde ich zwei RDDs mit unterschiedlicher Länge in Spark?

Ausgabe

Ich habe 2 RDDs. Das erste RDD ist das Original-RDD und das zweite ist ein RDD, das ich aus dem Original herausgefiltert und einige Prozesse darauf ausgeführt habe. Nachdem ich Prozesse durchgeführt habe, möchte ich ihnen beitreten. Das ursprüngliche RDD sieht wie folgt aus:

(1,5)
(2,60)
(3,7)
(4,1)
(5,1)
...
(10,8)

und das gefilterte und manipulierte RDD ist:

(4,3)
(5,10)
(6,6)
(7,9)

wie soll ich mich ihnen anschließen?? Wenn ich fullouterjoin oder andere Join-Methoden verwende, gibt es einen Fehler

Bearbeitet

Ich habe Code geschrieben, wie Sie sagten, wie folgt:

        original_RDD=original_RDD.fullOuterJoin(new_RDD).foreach { case (joinKey, (oldOption, newOption)) =>
        newOption match {
          case None => (joinKey,oldOption)
          case Some(newOption) => (joinKey,newOption)
        }
      }

aber ich bekomme diesen Fehler:

Error:(232, 55) type mismatch;
 found   : Unit
 required: org.apache.spark.rdd.RDD[(Long, Int)]
        nodes=nodes.fullOuterJoin(joined_new).foreach { case (joinKey, (oldOption, newOption)) =>

Lösung

Siehe Join-Syntax

Gibt beim Aufruf von Datensätzen des Typs (K, V) und (K, W) einen Datensatz von (K, (V, W))-Paaren mit allen Paaren von Elementen für jeden Schlüssel zurück. Äußere Verknüpfungen werden durch leftOuterJoin, rightOuterJoin und fullOuterJoin unterstützt.

originalRdd
  .fullOuterJoin(joinRdd)
  .foreach { case (joinKey, (oldOption, newOption)) =>
    newOption match {
      case None => println("new value is None")
      case Some(joinValue) => println(s"new value = $joinValue")
    }
  }


Beantwortet von –
User9123


Antwort geprüft von –
Timothy Miller (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like