sparkがどのようにしてパーティションをエグゼキュータに割り当てるか。スパークでエクセキュータ上でパーティションを配布するとき
Iは1つのドライバおよび5つのエグゼキュータとスパークシェルの次の行を実行した:
> var data = sc.textFile("file") // auto generates 2 partitions
> data.count() // materialize partitions on two nodes
> data = data.repartition(10) // repartition data.count()
> data.count() // 10 partitions still on original 2 nodes
再分割した後、10のパーティションは依然として元の2つのノード(5点満点)です。ノード間で均等に分散するのではなく、パーティションを含むノードのそれぞれで5つのタスクが繰り返し実行されるため、これは非常に非効率的です。非効率性は、同じrddで何度も繰り返す反復タスクで最も顕著です。
私の質問は、どのノードがどのパーティションを持っているかをどのように決定するのですか?データを他のノードに移動させる方法がありますか?
あなたは2つのノードについて話しますが、あなたは1つのExecutorを持っていますが、これはあまり意味がありません。彼は私たちについて話していますか? –
申し訳ありませんが、これは編集されたばかりのタイプミスです。 – Yituo
Sparksタスクの配布に問題がありますか?それとも一般的な質問ですか?エグゼクティブはいくつのコアを持っていますか? –