如何在Spark中的RDD之间共享全局映射值?
问题描述:
我试图从RDD访问比在不同计算节点上的映射,但没有成功。该图是这样的:如何在Spark中的RDD之间共享全局映射值?
val map1 = Map("aa"->1,"bb->2,"cc->3,...)
所有RDDS将必须核查,看是否关键是在地图或没有,所以看来我得让地图本身全球性的,问题是,如果在地图作为RDD存储并散布在不同的节点上,每个节点只会看到一块地图,并且信息将不会完整以检查地图(然后用相应的值替换该关键字)E,g:
val matchs= Vecs.map(term=>term.map{case (a,b)=>(map1(a),b)})
对此有何想法?谢谢!
答
这听起来像你只是想使用广播变量:
val broadCastMap = sc.broadcast(map)
Vec.map(term=>term.map{case (a,b)=>(broadCastMap.value(a),b)})
+0
谢谢贾斯汀,它的工作原理! – user1460691
说实话我不知道,如果我知道你想什么,但你不能从另一个RDD的转换或动作访问RDD。 – zero323