【发布时间】:2015-06-24 17:39:53
【问题描述】:
我正在使用以下代码将广播变量传递给我的所有执行程序。该代码似乎有效,但我不知道我的方法是否足够好。只是想看看有没有人有更好的建议。非常感谢!
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)
那么上面的代码是处理广播变量的好方法吗?或者有没有更好的方法?谢谢!
【问题讨论】:
-
我觉得没问题。一句话:如果数据适合一台机器(如果你可以
collect它就可以),那么就没有必要将它加载到RDD中。你可以在没有 Spark 的情况下加载和解析它并避免一些开销。
标签: scala apache-spark broadcast