将RDD传递给实用程序函数

时间:2015-06-18 02:29:29

标签: scala memory apache-spark

为了使代码更加干净,我将主代码中的一些任务/函数放入实用程序类/函数中,然后将整个RDD传递给函数,如:

val myResultRDD = MyUtiltity.processData(myRDD1, myRDD2, myRDD3).saveAsTextFile("output", classOf[GzipCodec])

然后,与保持主代码中的所有内容相比,代码变得非常慢。我想知道我是否有10个执行者,是否将myRDD1,myRDD2和myRDD3复制到每个执行者身上?所以我在记忆中有10个myRDD1,10个myRDD2和10个myRDD3?

1 个答案:

答案 0 :(得分:1)

只要您在实用程序功能中没有浪费cache()collect() RDD,那么您在此处不应该影响性能。

将一系列转换(例如,map,fold,reduce等)应用于任意数量的RDD并将它们组合成一个新的RDD(例如,虽然连接)在collect persist之前不执行任何操作或elestiri-kategorisi-sag RDD。因此,在函数中添加转换序列或将它们分散在“main”中不应影响性能。