Spark:将广播变量传递给执行者

时间:2015-06-24 17:39:54

标签: scala apache-spark broadcast

我使用以下代码将广播变量传递给所有执行程序。代码似乎有效,但我不知道我的方法是否足够好。只是想看看是否有人有更好的建议。非常感谢你!

val myRddMap = sc.textFile("input.txt").map(t => myParser.parse(t))
val myHashMapBroadcastVar = sparkContext.broadcast(myRddMap.collect().toMap)

其中myRddMap的类型为org.apache.spark.rdd.RDD[(String, (String, String))]

然后我有一个实用函数,我传入RDD和变量,如:

val myOutput = myUtiltityFunction.process(myRDD1, myHashMapBroadcastVar)

上面代码是处理广播变量的好方法吗?或者有更好的方法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

  

广播变量允许程序员在每台机器上保留一个只读变量,而不是随副本一起发送它的副本。

广播变量实际上发送到所有节点。因此,在实用功能或任何地方使用它们并不重要。至于我认为你做的是正确的事情,似乎没有什么错误导致表现不佳。