使用Spark在一次迭代中进行倍数计算

时间:2017-05-26 17:40:22

标签: apache-spark

如何使用Spark在一步中迭代生成不同结果的大量文件?例如:

val tweets : RDD[Tweet] = ...
val topWords : RDD[String] = getTopWords(tweets)
val topHashtags : RDD[String] = getTopHashtags(tweets)

topWords.collect().foreach(println)
topHashtags.collect().foreach(println)

看起来Spark会在tweets数据集上迭代两次。有什么方法可以防止这种情况吗? Spark是否足够聪明以进行这种优化?

提前致谢,

1 个答案:

答案 0 :(得分:3)

Spark会尽可能地将数据加载到CPU缓存中,但这不是你应该依赖的东西,所以你最好的选择是tweets.cache以便在初始加载之后它会正在处理内存存储。您将拥有的唯一解决方案是组合您的两个函数并返回(resultType1, resultType2)

元组