Spark map和flatMap结果类型

时间:2015-03-31 07:22:49

标签: scala apache-spark

看起来map和flatMap会返回不同的类型。

mySchamaRdd.map( p => Row.fromSeq(...))返回org.apache.spark.rdd.RDD [org.apache.spark。 sql.Row ],这是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

1 个答案:

答案 0 :(得分:0)

也许我误解了你创建SchemaRDD的方式,或者你误解了flatMap的工作方式。你试过这个吗?

mySchemaRDD.flatMap( p => p.getString(1).split(" +").map( x => Row((p.getString(0), x))))

我认为mySchamaRdd.flatMap( p => Row.fromSeq(...))不适合flatMap使用,因为您应该在某些内容中返回 embedded 的一系列内容,以便平坦它并提取你真正想要归还的东西。在您的情况下,您嵌入<{1}},而您要返回的结果类型为Row

相关问题