繁体   English   中英

将 Arrays 转换为 Scala 中的 Spark DataSet

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM