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

看板java作者 (...)時間8年前 (2017/03/20 09:50), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/3 (看更多)
版友們好~ 最近剛學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找了兩天都沒啥頭緒~ 還請高手指點~!! 感謝~! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 66.189.117.1 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1490003453.A.3F1.html

03/20 18:00, , 1F
對了,我知道在迴圈前加collect可以辦到,但是檔案很
03/20 18:00, 1F

03/20 18:01, , 2F
大,用collect的話記憶體無法負荷~ 或是有沒有類似
03/20 18:01, 2F

03/20 18:02, , 3F
collect的方法,但是只存hashmap出來??
03/20 18:02, 3F

03/20 18:10, , 4F
感覺你想做的事跟 wordcount 範例差不多耶
03/20 18:10, 4F

03/20 22:35, , 5F
猜測是Spark,google了一下有collect_set可以用
03/20 22:35, 5F

03/20 22:36, , 6F
你可以先用map把line轉成int,在collect成set
03/20 22:36, 6F

03/21 08:27, , 7F
感謝建議~ 我找到癥結了~
03/21 08:27, 7F
文章代碼(AID): #1OpwNzFn (java)
討論串 (同標題文章)
文章代碼(AID): #1OpwNzFn (java)