Scala 将spark数据帧转换为数组[字符串]

Scala 将spark数据帧转换为数组[字符串],scala,apache-spark,spark-dataframe,Scala,Apache Spark,Spark Dataframe,有谁能告诉我如何在scala中将Spark dataframe转换为Array[String] 我使用了以下方法 x =df.select(columns.head, columns.tail: _*).collect() 上面的代码片段给了我一个数组[Row],而不是数组[String]答案是由一个名为cricket_007的用户提供的。 data.collect.map(_.toSeq).flatten 可以使用以下命令将数组[行]转换为数组[字符串]: x =df.select(col

有谁能告诉我如何在scala中将Spark dataframe转换为Array[String]

我使用了以下方法

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

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

答案是由一个名为cricket_007的用户提供的。
data.collect.map(_.toSeq).flatten
可以使用以下命令将数组[行]转换为数组[字符串]:

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

这应该可以做到:

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

数据帧到数组[字符串]

data.collect.map(_.toSeq).flatten
您还可以使用以下命令

data.collect.map(row=>row.getString(0)) 
如果您有更多的列,那么最好使用最后一列

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

如果计划逐行读取数据集,则可以在数据集上使用迭代器:

 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(",");    
}
Datasetcsv=session.read();
for(迭代器iter=csv.tolocaterator();iter.hasNext();){
字符串[]项=((iter.next()).toString().split(“,”);
}

.map{row=>row.toString()}
谢谢您的回复。这样就可以了。您能告诉我我们是否使用.map{row=>row.toString().mkString(“,”)}删除括号“[”和“]”当我们打印出来时。mkString从数组生成字符串…这都是Scala的知识。您如何在Java或Python中使数组成为sting?我的观点是,您的问题/问题完全不在数据帧上的Spark
collect()
范围之内。通常,您不会如何使用它。相反,您
show()
itHello cricket_007,我认为在这种情况下,当你想给它分配一个变量时,show是没有用的。这不是我的观点……将数据帧或RDD收集到Scala数据类型会成为驱动程序进程的瓶颈。如果你只想显示输出,你可以选择,然后在没有收集的情况下显示它,你可以替换。map(.toSeq).flatte to.flatMap(.toSeq)如何解决
生成的
无法解决符号
编译问题?