本文介绍了rdd.collect之间的差值()。toMap到rdd.collectAsMap()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有当我用collectAsMap我RDD而不是rdd.collect()。toMap任何性能影响?
Is there any performance impact when I use collectAsMap on my RDD instead of rdd.collect().toMap ?
我有一个键值RDD,我要转换为HashMap类,据我所知收集()是没有效率的大型数据集,因为它运行在驱动程序我可以用collectAsMap,而不是有任何的性能影响?
I have a key value rdd and I want to convert to HashMap as far I know collect() is not efficient on large data sets as it runs on driver can I use collectAsMap instead is there any performance impact ?
原文:
val QuoteHashMap=QuoteRDD.collect().toMap
val QuoteRDDData=QuoteHashMap.values.toSeq
val QuoteRDDSet=sc.parallelize(QuoteRDDData.map(x => x.toString.replace("(","").replace(")","")))
QuoteRDDSet.saveAsTextFile(Quotepath)
修改
val QuoteHashMap=QuoteRDD.collectAsMap()
val QuoteRDDData=QuoteHashMap.values.toSeq
val QuoteRDDSet=sc.parallelize(QuoteRDDData.map(x => x.toString.replace("(","").replace(")","")))
QuoteRDDSet.saveAsTextFile(Quotepath)
谢谢
斯里兰卡
Thanks Sri
推荐答案
collectAsMap
的实施是以下
def collectAsMap(): Map[K, V] = self.withScope {
val data = self.collect()
val map = new mutable.HashMap[K, V]
map.sizeHint(data.length)
data.foreach { pair => map.put(pair._1, pair._2) }
map
}
因此,有收集
和 collectAsMap
,因为 collectAsMap 引擎盖下还要求
收集
。
这篇关于rdd.collect之间的差值()。toMap到rdd.collectAsMap()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!