作者iwantstronge (...)
看板java
标题[问题] 想在Scala的RDD物件中更新变量
时间Mon Mar 20 17:50:50 2017
版友们好~
最近刚学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://webptt.com/cn.aspx?n=bbs/java/M.1490003453.A.3F1.html
1F:→ iwantstronge: 对了,我知道在回圈前加collect可以办到,但是档案很 03/20 18:00
2F:→ iwantstronge: 大,用collect的话记忆体无法负荷~ 或是有没有类似 03/20 18:01
3F:→ iwantstronge: collect的方法,但是只存hashmap出来?? 03/20 18:02
4F:推 KekeMonster: 感觉你想做的事跟 wordcount 范例差不多耶 03/20 18:10
5F:推 mars90226: 猜测是Spark,google了一下有collect_set可以用 03/20 22:35
6F:→ mars90226: 你可以先用map把line转成int,在collect成set 03/20 22:36
7F:→ iwantstronge: 感谢建议~ 我找到症结了~ 03/21 08:27