Вам просто нужно объединить их вместе в Sequnce:
case class ArrayMap(rawValues: Double, trendValues: Double, seasonalValues: Double, remainder: Double)
import spark.implicits._
val data = for(i <- arr1.indices) yield ArrayMap(arr1(i), arr2(i) ,arr3(i) ,arr4(i))
data.toDF()
//or else, but takes more steps
arr1.zip(arr2).zip(arr3).zip(arr4)
.map(a => ArrayMap(a._1._1._1, a._1._1._2, a._1._2, a._2))
.toSeq.toDF()
Используйте zipAll
, если массивы имеют разный размер.
EDIT:
Я не уверен в том, как поток данных течет вниз, но если вы пытаетесь создать все 4 массива из DataFrame, я бы посоветовал вам преобразовать их в DataFrame вместо того, чтобы использовать этот подход (особенно если Data размер большой).