我正在使用Apache Spark进行项目。我有一个DataFrame
.我已经能够将其转换为RDD
.我需要将其转换为 2d 数组。下面是我编写的代码。接下来我应该怎么做?
val x: List[List[String]] = df.select(columnNames(0), (columnNames.drop(1): _*)).rdd.collect()
这里 df 是DataFrame
.
在聊天中讨论您的问题后,这是解决方案:
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