这里已经讨论了如何使用unionAll
按行合并两个数据帧。
假设我不知道序列的长度,有没有一种方法可以在不循环和定义var
的情况下将unionAll
(或类似函数)应用于数据帧序列?
谢谢!
private def unionAll(dataFrames: Seq[DataFrame], sqlContext: SQLContext): DataFrame = dataFrames match {
case Nil => sqlContext.emptyDataFrame
case head :: Nil => head
case head :: tail => head.unionAll(unionAll(tail, sqlContext))
}
第二种情况是为了防止试图将空DF(没有正确的模式)与非空DF联合。
此确实假设如果列表不为空,则所有DataFrames共享相同的架构。