它看起来像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