スパークはRDDで論理パーティションを作成します。私はそれに2つの質問があります: -同じノードでパーティションを処理していますか?
1)パーティションは、各パーティションを別々のノードで処理できる並列処理に役立ちます。私の質問は、私はマルチコア マシンを持っている場合、私は同じノード内のパーティションを処理できないのですか?
2)ファイルシステムからファイルを読み込んで、4つのパーティションで1つのRDDを作成したとします。各パーティションをRDDにさらに分割することができますか?例えば: -
firstRDD=sc.textFile("hdfs://...")
//firstRDD contains four partition which are processed on four diff nodes
secondRDD=firstRDD.filter(someFunction);
// Now will each node create separate secondRDD which will have further paritions ?
あなたが言ったのは、最初の読み込みで同じエグゼキュータで評価されます.4つの部分が4つのノードで処理される場合、エグゼキュータは4つありません。 'しかし、あなたは再パーティション化することができます.'パーティションがRDDで作成されると、明示的にパーティションを作成するまで、デフォルトでそれ以上のパーティション分割は行われませんか? –
4つのノードがそれぞれ1つのパーティションで読み取られ、4つのエグゼキュータを意味する場合はYesです。 1つのパーティション内のデータは、変換(つまり、集計)に応じて、より多くのパーティションに分割できます。たとえば、1つの大きなgzipファイルを読み込み、いくつかの列を追加し、集計なしでデータをサニタイズして書き出すと、明示的に再パーティション化するよう指示しない限り、単一のエグゼキュータにワークロード全体が与えられます。 – Garren
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-rdd-partitions.html –