【发布时间】:2017-04-12 17:18:22
【问题描述】:
看看这个sn-p [*]:
val la = List(Array(2, 3, 5), Array(7, 11, 13))
la.flatten
返回
res1: List[Int] = List(2, 3, 5, 7, 11, 13)
现在,我一直在玩 Spark,但偶然发现了一个问题。 sn-p:
val myRdd: RDD[String] = sc.textFile("myFilePath", 10) map (_.split("\n"))
由于右侧表达式的类型为RDD[Array[String]],因此无法编译
就像在 [*] 中一样,我认为扁平化可以解决问题:
val myRdd: RDD[String] = (sc.textFile("myFilePath", 10) map (_.split("\n"))).flatten
但事实证明RDD 没有提供这个操作。我的问题来了:
- RDD 不支持
flatten背后的(设计)原因是什么? - 我是否遗漏了关于 RDD 如何工作/应该使用的重要一点?
附:
我知道我可以使用旧好的flatMap 来实现我想要的
val myRdd: RDD[String] = (sc.textFile("myFilePath", 10) map (_.split("\n"))).flatMap(x => x)
【问题讨论】:
标签: scala apache-spark rdd higher-order-functions