Spark新手。
我想对类型为org.apache.spark.sql.DataFrame = [id: string, wordList: array<string>]
的spark DataFrame df的“wordList”列进行一些转换。
我使用dataBricks。 df看起来像:
+--------------------+--------------------+
| id| wordList|
+--------------------+--------------------+
|08b0a9b6-3b9a-47a...| [a]|
|23c2ef79-8dce-4ad...|[ag, adfg, asdfgg...|
|26a7682f-2ce6-4eb...|[ghe, gener, ghee...|
|2ab530b5-04bc-463...|[bap, pemm, pava,...|
+--------------------+--------------------+
更具体地说,我已经定义了一个函数shrinkList(ol:List [String]):List [String],它接受一个列表并返回一个较短的列表,并希望将它应用于wordList列。问题是,如何将行转换为列表?
df.select("wordList").map(t => shrinkList(t(1)))
提供错误:type mismatch;
found : Any
required: List[String]
另外,我不确定“t(1)”在这里。我宁愿使用列名而不是索引,以防将来列的顺序发生变化。但我似乎无法使t $“wordList”或t.wordList或t(“wordList”)工作。因此,我可以使用哪个选择器来选择“wordList”列而不是使用t(1)?
答案 0 :(得分:1)
尝试:
df.select("wordList").map(t => shrinkList(t.getSeq[String](0).toList))
或
df.select("wordList").map(t => shrinkList(t.getAs[Seq[String]]("wordList").toList))