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」列?

回答

1

嘗試:

df.select("wordList").map(t => shrinkList(t.getSeq[String](0).toList)) 

df.select("wordList").map(t => shrinkList(t.getAs[Seq[String]]("wordList").toList)) 
+0

感謝@LostInOverflow。我的數據塊剛剛死了,現在我不能嘗試,但是當它再次工作時會嘗試它。問題:我可以用某種方式使用列名而不是使用「1」嗎? – MichM

+0

像這樣'getAs [Seq [String]](「some_name」)。toList'我想。 – 2016-08-02 21:50:30

+0

我試過的答案給出了錯誤:'type mismatch; found:java.util.List [String] required:scala.collection.immutable.List [String]'。你的代碼在評論中起作用。你是否想在原始答案中編輯代碼,並保留「(1)」作爲另一個正確的答案,以便我可以接受它? – MichM

相關問題