可以告诉我如何在Scala中将Spark数据帧转换为Array [String]。
我使用了以下内容。
x =df.select(columns.head, columns.tail: _*).collect()
上面的代码片段给了我一个数组[Row]而不是Array [String]
答案 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() }
谢谢, 巴拉斯