2017-11-19 10 views
0

RDDはキーと値のペアです。 groupByKey()は、パフォーマンスを損なうシャッフルをたくさん作成する可能性があります。 groupByKey()を使用して不必要なシャッフルを減らす方法が不思議でしたgroupByKey()を使用してシャッフルを減らす方法

最初にRDDを最初に再パーティション化し、次にgroupByKeyを再設定すると役立ちますか?

val inputRdd2 = inputRdd.partitionBy(new HashPartitioner(partitions=500)) 

inputRdd2.groupByKey() 

また、partitionBy()もシャッフルを作成しますか?ありがとう

答えて

0

最初にRDD、次にgroupByKeyを再パーティション化すると役立ちますか?

これはありません。 partitionBy自体はシャッフルであり、reduceByKeyはマップ側の縮小をとにかく適用しないので、全体的にはものを変更しません。

残念ながら、一般的なケースでは、良いニュースはありません。 groupByKeyが必要な場合は、料金を支払う必要があります。適切に設計されたデータの収集と処理プロセスは、データのローカリティを向上させ、下流のコンシューマ(Sparkなど)のシャッフルを減らすことができますが、任意の入力に対して行うことはあまりありません。

明るいところでは、多くの場合、正確な結果が必要ない場合は、アプリケーションをさまざまな方法で表現できます。恐らく、確率的データ構造の異なるタイプが最も顕著な例である。