将spark数据帧转换为Array [String]

时间:2017-09-09 20:42:39

标签: scala apache-spark spark-dataframe

可以告诉我如何在Scala中将Spark数据帧转换为Array [String]。

我使用了以下内容。

x =df.select(columns.head, columns.tail: _*).collect()

上面的代码片段给了我一个数组[Row]而不是Array [String]

4 个答案:

答案 0 :(得分:8)

这应该可以解决问题:

df.select(columns: _*).collect.map(_.toSeq)

答案 1 :(得分:1)

DataFrame到数组[String]

data.collect.map(_.toSeq).flatten

您还可以使用以下内容

data.collect.map(row=>row.getString(0)) 

如果您有更多列,那么最好使用最后一列

 data.rdd.map(row=>row.getString(0)).collect

答案 2 :(得分:1)

如果您打算逐行读取数据集,则可以对数据集使用迭代器:

 Dataset<Row>csv=session.read().format("csv").option("sep",",").option("inferSchema",true).option("escape, "\"").option("header", true).option("multiline",true).load(users/abc/....);

for(Iterator<Row> iter = csv.toLocalIterator(); iter.hasNext();) {
    String[] item = ((iter.next()).toString().split(",");    
}

答案 3 :(得分:0)

答案由名为cricket_007的用户提供。 您可以使用以下命令将Array [Row]转换为Array [String]:

x =df.select(columns.head, columns.tail: _*).collect().map { row => row.toString() }

谢谢, 巴拉斯