rdd.collect()の代わりにRDBでcollectAsMapを使用すると、パフォーマンスに何か影響はありますか?toMap?rdd.collect()。toMapとrdd.collectAsMap()の違いは?
キー値がrddで、ドライバで実行されているので、大きなデータセットでcollect()が効率的でないことがわかっている限り、HashMapに変換したいのですが、代わりにパフォーマンスが影響しますか?
オリジナル:
val QuoteHashMap=QuoteRDD.collect().toMap
val QuoteRDDData=QuoteHashMap.values.toSeq
val QuoteRDDSet=sc.parallelize(QuoteRDDData.map(x => x.toString.replace("(","").replace(")","")))
QuoteRDDSet.saveAsTextFile(Quotepath)
変更:理由collectAsMap
val QuoteHashMap=QuoteRDD.collectAsMap()
val QuoteRDDData=QuoteHashMap.values.toSeq
val QuoteRDDSet=sc.parallelize(QuoteRDDData.map(x => x.toString.replace("(","").replace(")","")))
QuoteRDDSet.saveAsTextFile(Quotepath)
パフォーマンスに大きな違いはありません。 'collectAsMap'は単に' RDD'を収集し、ドライバに変更可能な 'HashMap'を作成します。 – zero323
ベストプラクティスを使用してハッシュマップを作成する方法はありますか? collectAsMapまたはcollect()。toMapを使用せずに? –
重複したキーが必要な場合は、重複したデータを削除することで、ドライバに転送されるデータの量を減らすことができます。 – zero323