0
Spark的新功能。spark:row to element
我想对org.apache.spark.sql.DataFrame = [id: string, wordList: array<string>]
类型的火花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:列表[字符串]):列表[字符串]是获得一个列表,并返回一个短名单,并想在应用它wordList列。问题是,如何将行转换为列表?
df.select("wordList").map(t => shrinkList(t(1)))
给出错误:type mismatch; found : Any required: List[String]
此外,我不知道 “T(1)” 在这里。我宁愿使用列名而不是索引,以防列未来的顺序发生变化。但我似乎无法使t $“wordList”或t.wordList或t(“wordList”)工作。因此,而不是使用t(1),我可以使用什么选择器来选择“wordList”列?
感谢@LostInOverflow。我的数据块刚刚死了,现在我不能尝试,但是当它再次工作时会尝试它。问题:我可以用某种方式使用列名而不是使用“1”吗? – MichM
像这样'getAs [Seq [String]](“some_name”)。toList'我想。 – 2016-08-02 21:50:30
我试过的答案给出了错误:'type mismatch; found:java.util.List [String] required:scala.collection.immutable.List [String]'。你的代码在评论中起作用。你是否想在原始答案中编辑代码,并保留“(1)”作为另一个正确的答案,以便我可以接受它? – MichM