[问题] 想在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