gpt4 book ai didi

scala - rdd.collect()。toMap与rdd.collectAsMap()之间的区别?

转载 作者:行者123 更新时间:2023-12-04 04:10:36 25 4
gpt4 key购买 nike

当我在RDD上而不是rdd.collect()。toMap上使用collectAsMap时,会对性能产生影响吗?

我有一个关键值rdd,我想转换为HashMap,因为我知道collect()在大型数据集上效率不高,因为它在驱动程序上运行,我可以使用collectAsMap代替吗,会对性能产生影响吗?

原来的:

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)

最佳答案

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
}

因此, collectcollectAsMap之间没有性能差异,因为引擎盖下的 collectAsMap调用也为 collect

关于scala - rdd.collect()。toMap与rdd.collectAsMap()之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33233175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com