2017-06-09 8 views
0

Ich habe zwei Datenfelder in Spark Scala, aber eine davon besteht aus einer eindeutigen Spalte. Ich muss mich ihnen anschließen, aber sie haben keine gemeinsame Spalte. Die Anzahl der Zeilen ist gleich.Join zwei Dataframe ohne ein gemeinsames Feld in Spark-Scala

val userFriends=userJson.select($"friends",$"user_id") 
val x = userFriends("friends") 
     .rdd 
     .map(x => x.getList(0).toArray.map(_.toString)) 
val y = x.map(z=>z.count(z=>true)).toDF("friendCount") 

muss ich userFriends mit y verbinden

+0

Was ist die Frage? Was hast du bis jetzt gemacht ? – Badda

+0

val userFriends = userJson.select ($ "freunde", $ "user_id") val x = userFriends ("Freunde"). Rdd.map (x => x.getList (0) .toArray.map (_. toString)) val y = x.map (z => z.count (z => true)). toDF ("friendCount") ich habe beitreten userFriends mit y – mastMarvizz

+1

@mastMarvizz Willkommen SO. Ich habe den Code zu der Frage hinzugefügt. Folgen Sie dem Beispiel beim nächsten Mal :-) – maasg

Antwort

0

Es ist nicht möglich, sie ohne gemeinsame Felder zu verbinden, außer wenn Sie auf eine Bestellung, in diesem Fall verlassen können, können Sie die Zeilennummer (mit Fenster verwenden Funktion) auf beiden Datenrahmen und verbinden Sie sich mit der Zeilennummer.

Aber in Ihrem Fall dies nicht notwendig erscheint, halten Sie einfach die user_id Spalt in dem Datenrahmen, so etwas wie dies funktionieren soll:

val userFriends=userJson.select($"friends",$"user_id") 

val result_df = 
    userFriends.select($"friends",$"user_id") 
    .rdd 
    .map(x => (x.getList(0).toArray.map(_.toString).count(z=>true)),x.getInt(1))) 
    .toDF("friendsCount","user_id") 
+0

vielen dank !! – mastMarvizz

Verwandte Themen