Hello stackoverflow社区。 p>
我请求你的帮助,理解我的想法是否正确,或者我在Spark工作中缺少一些要点。
我目前有两个要减去的rdds。 两个rdd都在同一个父RDD上构建为不同的转换。
首先,父RDD在获得后被缓存:
val fatherRdd = grandFather.repartition(n).mapPartitions(mapping).cache
然后转换了两个rdds。 一个是(伪代码):
son1= rddFather.filter(filtering_logic).map(take_only_key).distinct
另一个是:
son2= rddFather.filter(filtering_logic2).map(take_only_key).distinct
然后减去两个儿子只获得son1中的键:
son1.subtract(son2)
我希望转换的顺序如下:
答案 0 :(得分:3)
你的观察是正确的。 RDD上的转换是惰性的,因此在第一次实际计算RDD之后会发生缓存。
如果您在父RDD上调用操作,则应计算并缓存该操作。然后,您的后续操作将对缓存的数据进行操作。