2017-10-28 7 views
0

私はSparkのパーティション分割について理解したいと思います。 私のラップトップは、2つの物理コアと4つの論理コアを持っています。スパーク:パーティション分割の理解 - コア

1 /用語:私には、sparkのコア=スレッド。 Sparkのコアは物理的なコアとは違いますよね? Sparkのコアはタスクに関連付けられていますね。 もしそうなら、私はsparksqlデータフレームに4つのパーティションがある場合、パーティションにスレッドが必要なので、4つのスレッドが必要ですか?

2 /私は4つの論理コアを持っていますが、同時に私のラップトップで同時に4つの同時スレッドを実行できますか?スパークの4は?

3 /パーティション数の設定:データフレームのパーティション数を選択して、変換やアクションをできるだけ早く実行する方法を教えてください。 - 私のラップトップは4つの論理コアを持っているので、4つのパーティションが必要ですか? - 物理コアまたは論理コアに関連するパーティションの数はいくつですか? - スパークのドキュメントでは、1 CPUあたり2〜3のタスクが必要だと書かれています。私は2つの物理的なコアがあるので、パーティションのnbは4または6に等しいでしょうか?

は(私は、パーティションの数は、ローカルモードに大きな影響を持っていないことを知っているが、これは単に理解することです)

答えて

0
  1. 「スパークコア」のようなものをtheresの。 --executor-coresのようなオプションを参照している場合は、各エグゼキュータが同時に実行されるタスクの数を示します。

  2. 並行タスクの数は、任意の値に設定できますが、与えられていないと思われる論理コアの数よりも多く設定できます。

  3. 使用するパーティションの数は状況によって異なります。あなたが行っているデータや変換を知らなくても、数値を与えるのは難しいです。典型的なアドバイスは、あなたの総コアの倍数の直下で使用することです。たとえば、コア数が16の場合は、多分47、79、127などの16の倍数の直下にある同様の数字を使います。この理由は、すべてのコアが動作していることを確認したい場合です(可能な限り時間がかからず、リソースがアイドル状態にあり、他のコアが終了するのを待っています)。投機的な実行を可能にするために少し余計に残しておきます(2回目の試行でそれが速くなるかどうかを確認するためにゆっくりと実行されている場合、同じタスクを2回実行することがあります)。

数字を選ぶのは試行錯誤ですが、スパークジョブサーバーを利用して、タスクの実行状況を監視してください。多くのレコードを持つタスクが少ないということは、おそらくパーティションの数を増やす必要があることを意味します。一方、それぞれ数レコードしかない多くのパーティションも悪いので、これらのケースではパーティションを小さくする必要があります。

+0

nit:Sparkのメイン/コアモジュールをRDDで参照するために "spark core"を使用します。それがSpark Coreです。 –

関連する問題