它看起來像map和flatMap返回不同的類型。Spark map和flatMap結果類型
mySchamaRdd.map(p => Row.fromSeq(...))
返回org.apache.spark.rdd.RDD [org.apache.spark。這是applySchema函數(或spark 1.3中的createDataFrame)所必需的。
但是,mySchamaRdd.flatMap(p => Row.fromSeq(...)
返回org.apache.spark.rdd.RDD [任何],我無法調用applySchema()。
如何在flatMap()之後使用applySchema()?
一個例子(輸入模式:名稱,描述)
Bob, "Software developer"
John, "I like spaghetti"
結果:
Bob, Software
Bob, Developer
John, I
John, like
John, spaghetti
爲什麼你必須使用flatMap如果你的地圖函數返回一個標量?如果您可能會爲每個傳入記錄從地圖函數輸出多個或偶爾沒有記錄,則flatMap非常有用。 – 2015-03-31 07:25:38
對於每一行我想返回多行。這就像文字標記器。 爲表名稱的一個例子,AboutMe 鮑勃, 「軟件開發」 約翰, 「我喜歡意大利麪條」 結果: 鮑勃,軟件 鮑勃,開發 約翰,我 約翰一樣, John,意大利麪條 – 2015-03-31 07:53:09
@Dmitry如果將'flatMap'的映射嵌入到'Seq'中怎麼辦?像這樣的'mySchamaRdd.flatMap(p => Seq(Row.fromSeq(...)))'? – ale64bit 2015-03-31 08:05:57