Spark map 和 flatMap 结果类型

Spark map and flatMap result types

看起来像 map 和 flatMap return 不同的类型。

mySchamaRdd.map( p => Row.fromSeq(...)) returns org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] applySchema 函数需要(或在 spark 1.3 中创建数据框)。

但是,mySchamaRdd.flatMap( p => Row.fromSeq(...) returns org.apache.spark.rdd.RDD[Any] 并且我无法调用 applySchema()。

如何在 flatMap() 之后使用 applySchema()?

一个示例(输入模式:名称、描述)

Bob, "Software developer"
John, "I like spaghetti"

结果:

Bob, Software
Bob, Developer
John, I
John, like
John, spaghetti

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

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

我认为 mySchamaRdd.flatMap( p => Row.fromSeq(...)) 不适合使用 flatMap,因为你应该 return 一系列东西 嵌入 在某些方面,为了 扁平化 它并提取您真正想要的东西 return。在您的情况下,您将 嵌入 它在 Row 中,而您想要 return 的结果类型是 Row 本身。