rdd.collect之间的差值()。toMap到rdd.collectAsMap()? [英] difference between rdd.collect().toMap to rdd.collectAsMap()?

查看:1124
本文介绍了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 <之间的性能差异/ code>引擎盖下还要求收集

这篇关于rdd.collect之间的差值()。toMap到rdd.collectAsMap()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆