我们如何在数据帧的scala中创建嵌套数组?

时间:2017-02-01 16:47:38

标签: java scala apache-spark spark-dataframe

我有一个包含三列的DataFrame;如何将其转换为Scala中的嵌套数组 - Array[Array[Double]]

我在尝试映射时收到Array[(Double, Double)]

val x= dataframe.select("time","sex")
  .collect()
  .map(x=>x(0).toString.toDouble ,x(1).toString.toDouble)

1 个答案:

答案 0 :(得分:1)

那是因为你的地图正在返回一个元组。因为你需要一个数组,你需要返回一个数组,如下所示。

val df = dataframe.collect().map(x => Array(x.getDouble(0), x.getDouble(1)))

访问结果使用df.headdf(0)

中的第一项(嵌套数组)

修改

以柱状方式生成数据集Array [Array [Double]],其中每列都有自己的数组。

df.foldLeft((Array[Double](),Array[Double]())) {
  case ((col1,col2),(x,y)) => (col1 :+ x) -> (col2 :+ y)
} match {
    case (arr1,arr2) => Array(arr1,arr2)
}