如何在Scala中将RDD转换为2d数组?

时间:2016-02-01 05:30:47

标签: scala apache-spark apache-spark-sql rdd

我正在使用Apache Spark进行项目。我有DataFrame。我已经能够将其转换为RDD。我需要将其转换为 2d数组。下面是我写的代码。接下来我该怎么办?

val x: List[List[String]] = df.select(columnNames(0), (columnNames.drop(1): _*)).rdd.collect()

此处 df DataFrame

1 个答案:

答案 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