[英]How to convert multiples arrays into multiple columns Spark in Scala
[英]Convert Arrays into Spark DataSet in Scala
我正在尝试从 4 arrays 创建一个数据集。 我有这样的 arrays :
// Array 1
val rawValues = rawData.select(collect_list("rawValue")).first().getList[Double](0).asScala.toArray
// Array 2
var trendValues = Array[Double]()
// Array 3
var seasonalValues = Array[Double]()
// Array 4
var remainder = Array[Double]()
我根据第一个数组上的一些计算(此处未包括)填充了最后 3 个 arrays。 所有 4 个 arrays 大小相同,为了填充第一个数组,另一个数据集的 column-rawValue 被转换为一个数组,如上所示。
完成所有计算后,我想创建一个具有 4 个独立列的 DataSet,每列代表 4 个独立的 arrays 以上。
那么,基本上我怎样才能从 arrays 创建一个数据集? 我正在努力做同样的事情。
请帮忙。
你只需要将它们组合成一个序列:
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()
如果 Arrays 的大小不同,请使用zipAll
。
编辑:
我不确定有关数据如何向下流动的用例,但是如果您尝试从 DataFrame 创建所有 4 个 Arrays,我建议您在 DataFrame 中对其进行转换,而不是采用这种方法(尤其是如果数据大小很大) .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.