我使用以下代码将广播变量传递给所有执行程序。代码似乎有效,但我不知道我的方法是否足够好。只是想看看是否有人有更好的建议。非常感谢你!
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)
上面代码是处理广播变量的好方法吗?或者有更好的方法吗?谢谢!
答案 0 :(得分:0)
广播变量允许程序员在每台机器上保留一个只读变量,而不是随副本一起发送它的副本。
广播变量实际上发送到所有节点。因此,在实用功能或任何地方使用它们并不重要。至于我认为你做的是正确的事情,似乎没有什么错误导致表现不佳。