我试图从RDD访问地图而不是在不同的计算节点上访问地图,但没有成功。地图就像:
val map1 = Map("aa"->1,"bb->2,"cc->3,...)
所有RDD都必须检查它以查看密钥是否在Map中,所以似乎我必须使Map本身全局,问题是如果Map存储为RDD并分布在不同的节点,每个节点只会看到一块Map,并且信息将无法完成以检查Map(然后用相应的值替换键)E,g:
val matchs= Vecs.map(term=>term.map{case (a,b)=>(map1(a),b)})
对此有何想法?谢谢!
答案 0 :(得分:1)
听起来你只想使用广播变量:
val broadCastMap = sc.broadcast(map)
Vec.map(term=>term.map{case (a,b)=>(broadCastMap.value(a),b)})