3

提到这个问题: Scala Spark 中的 NullPointerException,似乎是由集合类型引起的?

答案指出“Spark 不支持 RDD 的嵌套(请参阅https://stackoverflow.com/a/14130534/590203以了解另一个相同问题的出现),因此您无法对其他 RDD 内的 RDD 执行转换或操作操作。”

这段代码:

val x = sc.parallelize(List(1 , 2, 3))

def fun1(n : Int) = {
    fun2(n)
}

def fun2(n: Int) = {
    n + 1
}

x.map(v => fun1(v)).take(1)

印刷 :

Array[Int] = Array(2)

这是对的。

但这与“不能在其他 RDD 操作中对 RDD 执行转换或操作”不矛盾吗?因为在 RDD 上发生了嵌套操作?

4

1 回答 1

2

不。在链接的问题中d.filter(...)返回一个 RDD,所以类型

d.distinct().map(x => d.filter(_.equals(x)))

RDD[RDD[String]]。这是不允许的,但它不会发生在您的代码中。如果我理解的答案是正确的,即使你最终没有得到,你也不能引用d或内部的其他 RDD 。mapRDD[RDD[SomeType]]

于 2014-05-22T21:24:07.090 回答