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

标签 java scala apache-spark apache-spark-sql

我有一个包含三列的 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)

最佳答案

那是因为你的 map 返回一个元组。由于您需要一个数组,因此您需要返回一个数组,如下所示。

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)
}

关于java - 我们如何从数据帧在 scala 中创建嵌套数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985177/

相关文章:

apache-spark - 启动容器进程导致\“exec:\\\”驱动程序\\\“: executable file not found in $PATH\”\n“

java - 交换 JComboBox 选择

c# - 通过 .NET Azure HDInsight API 提交 Spark Scala (.jar) 作业

scala - Scala 反射中的去混叠类型

java - 使用java读取spark 2.2中的XML并以键值格式读取预期输出

java - 将(“decimal(32,9)”转换为输入值0的科学值0E-9

java - 无法在 java servlet 中执行更新查询

java - mockito 与密封包装

java - 在 Java 中相对地将 excel 公式设置为整个列?

scala - ClassNotFoundException : com. 数据 block .spark.csv.DefaultSource