2016-12-15 5 views
0

私はsparkタスクの入出力メトリックのいくつかを見ています。これは、基本的に、キーを使用して最後にsaveAsHadoopを設定して、データをDynamoDBに格納するというものです。古典的なmap-reduce。メトリックのいくつかを見てみるとshuffleの前に各パーティションでreduce関数を実行すると、Spark ReduceByKey関数が最適化されますか?

enter image description here

enter image description here マップ後、スパークは盲目的にデータをシャッフルし、各シャッフルparitionに減らす機能を適用することが表示されます。 reduce関数が主に出力を減らした場合は、シャッフル前と後にそれぞれのパーティションにreduceを最初にソートして適用するのが最適です。reduce関数が関連し通勤するので簡単です。これは古典的なHadoopマップです - >結合 - >シャッフル - >パターンを減らす。 Sparkはこの最適化を利用できますか?

答えて

0

ReduceByKeyは:

enter image description here

上記画像では、RDD Xは同じ複数のペアの要素(1)及び(B、1)3つのパーティションをセットしたことを見ることができます。

デフォルトの整数値0で累積変数を初期化する関数(accum, n) => (accum + n)を受け入れ、各キーに要素を追加し、合計数がkeyと対になって最終RDD Yを返します。そしてをシャッフルする前に、パーティション内のデータはと同じです。パーティションごとに同じaggregationも同じです。

は、複数のパーティションからデータをシャッフルし、別のRDDを作成します。

パーティション間でデータを送信する前に、それはまた、merges the data locallyシャッフル最適化されたデータに対して同じ連想機能を使用して

Source

関連する問題