2015-07-21 52 views
0

我试图从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)}) 

对此有何想法?谢谢!

+0

说实话我不知道,如果我知道你想什么,但你不能从另一个RDD的转换或动作访问RDD。 – zero323

回答

1

这听起来像你只是想使用广播变量:

val broadCastMap = sc.broadcast(map) 
Vec.map(term=>term.map{case (a,b)=>(broadCastMap.value(a),b)}) 
+0

谢谢贾斯汀,它的工作原理! – user1460691

相关问题