由于 RDD 是不可变的——emptyRDD 的用例是什么

As RDDs are immutable - what will be the use case for emptyRDD

rdd = sparkContext.emptyRDD() 

这个方法需要什么。我们可以用这个空的 RDD 做什么。

任何人都可以提供一些用例或想法。我们可以在哪里使用这个空的 rdd?

由于 RDD 是不可变的 - emptyRDD 的用例是什么

老实说我从来没有用过它,但我猜它在那里是因为一些转换需要一个 RDD 作为参数,不管它是否为空。假设您需要执行外部连接,并且您要连接的 RDD 取决于可以确定其是否为空的条件,例如:

full_rdd.fullOuterJoin(another_full_rdd if condition else sparkContext.emptyRDD())

如果不满足条件,结果显示(key, (full_rdd[key], None)类型的对。我认为这是根据条件执行完全连接的更优雅的方式,但是,正如我所说,我从来不需要这样的东西,我希望其他人能找到更好的例子。

少数病例:

  • 如果你的方法必须return一个RDD(而不是一个空值)即使在没有任何匹配的情况下,那么一个emptyRDD 是准确的,

  • 如果你想做一个循环,从 0 到 n RDD 联合成一个:0 的一个将是空的 rdd,然后 rdd = rdd.union(anotherOne) for每个下一个循环。