2
看一看这个片段[*]:为什么不星火RDD支持 “扁平化”
val la = List(Array(2, 3, 5), Array(7, 11, 13))
la.flatten
回报
res1: List[Int] = List(2, 3, 5, 7, 11, 13)
现在,我一直在玩Spark和我迷迷糊糊遇到问题。该片段:
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
? - 就是我失踪RDDS如何工作的一个重要点/应使用?
P.S. 我知道我可以只使用旧的好flatMap
达到我想要的
val myRdd: RDD[String] = (sc.textFile("myFilePath", 10) map (_.split("\n"))).flatMap(x => x)
THX!好的言论。这个问题回答了我的问题。不过,我不相信,为什么'scala'自己提供它,如果'flatten'是多余的?我认为应该提供,因为其他更高级的功能。 – GA1
@ GA1 Scala集合和火花是由不同的团队有不同的想法进行的,而且是RDD从定期收集有点不同。如果你阅读相关的问题和拉链请求,你会发现它已经被尝试过了,但根据开发者的说法,这将很难实现,他们认为没有任何实际的好处,因为flatmap证明了相同的功能,所以他们会宁愿将资源花在更有影响力的东西上。 – puhlen