[問題] 想在Scala的RDD物件中更新變量

作者: iwantstronge (...)   2017-03-20 17:50:50
版友們好~
最近剛學Scala, 有個問題卡了很久
當我把檔案用RDD讀進來:
val input = sc.textfile("myfile.txt")
接著逐行讀取這個檔案(RDD),
在裡面用一個容器(HashMap, Array, List之類的)儲存每一行的一些資訊
例如:
input.foreach{line=>
var value = line.toInt
hashmap.put(value,1) // hashmap是在外面先定義好的一個HashMap容器
}
因為RDD本身是分散式被serilize到各個node(?),
所以不會去更新我傳到裡面的hashmap, 這個hashmap在foreach以外依然是空的~
請問我是否有任何辦法能把foreach裡面的hashmap傳出來,以便下一步處理呢~?
小弟新手, stackoverflow跟google找了兩天都沒啥頭緒~
還請高手指點~!! 感謝~!
作者: iwantstronge (...)   2017-03-20 18:00:00
對了,我知道在迴圈前加collect可以辦到,但是檔案很大,用collect的話記憶體無法負荷~ 或是有沒有類似collect的方法,但是只存hashmap出來??
作者: KekeMonster (KekeMonster)   2017-03-20 18:10:00
感覺你想做的事跟 wordcount 範例差不多耶
作者: mars90226 (火星人)   2017-03-20 22:35:00
猜測是Spark,google了一下有collect_set可以用你可以先用map把line轉成int,在collect成set
作者: iwantstronge (...)   2017-03-21 08:27:00
感謝建議~ 我找到癥結了~

Links booklink

Contact Us: admin [ a t ] ucptt.com