我正在使用Apache Spark进行项目。我有DataFrame
。我已经能够将其转换为RDD
。我需要将其转换为 2d数组。下面是我写的代码。接下来我该怎么办?
val x: List[List[String]] = df.select(columnNames(0), (columnNames.drop(1): _*)).rdd.collect()
此处 df 为DataFrame
。
答案 0 :(得分:2)
在聊天中讨论了您的问题之后,这是解决方案:
val x : List[List[String]] = df.select(columnNames.head, columnNames.tail: _*).
rdd.map{ case r : Row =>
Row(r.getAs[Long](0).toString,r.getAs[Long](1).toString,r.getAs[String](2)).toSeq.map(v => v.asInstanceOf[String]).toList
}.collect.toList
由于我没有查看实际数据,请记住这是一个示例,您可以根据需要获取列的字段名称。
例如:r.getAs[String]("column1")
另一个我不喜欢的解决方案是:
val x : List[List[String]] = df.select(columnNames.head, columnNames.tail: _*).
rdd.map{ case r : Row =>
r.mkString(",").split(",").toList
}.collect.toList