2017-02-09 5 views
1

beitreten Wie können wir zwei Datenrahmen ohne doppelte SpaltenWie Spark-Datenrahmen ohne doppelte Spalten in JAVA

a.show() 

+-----+-------------------+--------+------+ 
| Name|   LastTime|Duration|Status| 
+-----+-------------------+--------+------+ 
| Bob|2015-04-23 12:33:00|  1|logout| 
|Alice|2015-04-20 12:33:00|  5| login| 
+-----+-------------------+--------+------+ 

b.show() 
+-----+-------------------+--------+------+ 
| Name|   LastTime|Duration|Status| 
+-----+-------------------+--------+------+ 
| Bob|2015-04-24 00:33:00|  1|login | 
+-----+-------------------+--------+------+ 

ich zusammenführen möchten, indem Sie ganzen Daten in Datenrahmen A, aber Update-Zeilen unter Verwendung von Daten in B einen neuen Datenrahmen bilden

+-----+-------------------+--------+------+ 
| Name|   LastTime|Duration|Status| 
+-----+-------------------+--------+------+ 
| Bob|2015-04-24 00:33:00|  1|login | 
|Alice|2015-04-20 12:33:00|  5| login| 
+-----+-------------------+--------+------+ 

Ich bin in der Lage zu verbinden und bilden Datenrahmen in Scala. Aber nicht in der Lage, in JAVA zu tun.

DataFrame f=a.join(b,a.col("Name").equalsTo(b.col("Name")).and a.col("LastTime).equalsTo(b.col("LastTime).and(a.col("Duration").equalsTo(b.col("Duration"),"outer") 

Ich bekomme doppelte Spalten während der Ausführung von JOIN wie folgt.

Antwort

0

Nach this SO answer lösen eine Seq von Spaltennamen dies in Scala.

Hance, converting a Java List to Scala Seq sollte es oder Sie tun. Hier wäre Ihr korrigierter Beispielcode:

DataFrame f = a.join(b, 
    // Convert Java List to Scala Seq 
    scala.collection.JavaConverters.asScalaIteratorConverter(
     Arrays.asList("Name", "LastTime", "Duration").iterator() 
    ).asScala().toSeq(), 
    "outer" 
) 
Verwandte Themen