2017-02-09 8 views
1

Как мы можем объединить 2 dataframes без дублирующих колоннКак присоединиться к искровым dataframe без дубликатов колонка в 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 | 
+-----+-------------------+--------+------+ 

Я хочу, чтобы сформировать новую dataframe, используя всю информацию в Dataframe А, но строки обновления с использованием данных в B

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

Я могу объединить и сформировать dataframe в scala. Но не в состоянии сделать это в JAVA.

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") 

Я получаю дубликаты столбцов при выполнении JOIN следующим образом.

ответ

0

this SO answer В соответствии с СтартПослед из имен столбцов решить эту проблему в Scala.

Hance, converting a Java List to Scala Seq должны это сделать или вы. Здесь будет ваш исправленный пример кода:

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

 Смежные вопросы

  • Нет связанных вопросов^_^