我有一个DataFrame,其列为'title_from',如下所示。 。
此列包含一个句子,我想将此列转换为Array [String]。我已经尝试过类似的方法,但是它不起作用。
val newDF = df.select("title_from").map(x => x.split("\\\s+")
我该如何实现?如何将字符串的数据帧转换为Array [string]的数据帧?我希望newDF的每行都是df的单词数组。
感谢您的帮助!
答案 0 :(得分:0)
您可以使用withColumn
函数。
import org.apache.spark.sql.functions._
val newDF = df.withColumn("split_title_from", split(col("title_from"), "\\s+"))
.select("split_title_from")
答案 1 :(得分:-2)
您可以尝试按照以下步骤获取所有作者的列表吗?
scala> val df = Seq((1,"a1,a2,a3"), (2,"a1,a4,a10")).toDF("id","author")
df: org.apache.spark.sql.DataFrame = [id: int, author: string]
scala> df.show()
+---+---------+
| id| author|
+---+---------+
| 1| a1,a2,a3|
| 2|a1,a4,a10|
+---+---------+
scala> df.select("author").show
+---------+
| author|
+---------+
| a1,a2,a3|
|a1,a4,a10|
+---------+
scala> df.select("author").flatMap( row => { row.get(0).toString().split(",")}).show()
+-----+
|value|
+-----+
| a1|
| a2|
| a3|
| a1|
| a4|
| a10|
+-----+