Я хочу выполнить объединение двух Spark-Dataframes, которые имеют разную схему / разное количество столбцов. В качестве результата я хотел бы получить DataFrame, содержащий все строки двух базовых фреймов данных, в которых столбцы заполнены нулем, если не заполнены. Я нашел несколько идей сделать это в Python и Scala, но я не смог заставить это работать в Java.
Кто-нибудь уже имел такую же проблему и нашел решение? То, что я до этого делал в Scala, было:
def getAllColums(myCols: Set[String], allCols: Set[String]) = {
allCols.toList.map(x => x match {
case x if myCols.contains(x) => col(x)
case _ => lit(null).as(x)
})
}
var df1_cols = df1.columns.toSet
var df2_cols = df2.columns.toSet
var total_cols = df1_cols ++ df2_cols // union
val union_df = df1.select(getAllColums(df1_cols, total_cols): _*).union(df2.select(getAllColums(df2_cols, total_cols): _*))
Заранее благодарен за любую помощь!