2015-07-21 3 views
0

Я пытаюсь получить доступ к карте из RDD, чем на разных вычислительных узлах, но безуспешно. Карта, как:Как распределить глобальные значения карт среди RDD в Spark?

val map1 = Map("aa"->1,"bb->2,"cc->3,...) 

Весь РД будет проверить против него, чтобы увидеть, если ключ находится в карте или нет, так что кажется, что я должен сделать сам Карта, проблема в том, что если карте хранится как RDD и распространяется по разным узлам, каждый узел будет видеть только кусок Карты, и информация не будет полной для проверки на карте (затем замените ключ соответствующим значением) E, g:

val matchs= Vecs.map(term=>term.map{case (a,b)=>(map1(a),b)}) 

Есть идеи? Благодаря!

+0

Правду сказали я не уверен, если я понимаю, что вы хотите, но вы не можете получить доступ к RDD от преобразования или действий на другом РД. – zero323

ответ

1

Это звучит, как вы просто хотите использовать переменный широковещательный:

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

Спасибо, Джастин, он работает! – user1460691

Смежные вопросы