web-dev-qa-db-ja.com

Sparkでパーティション分割はどのように機能しますか?

ApacheSparkでパーティショニングがどのように行われるかを理解しようとしています。助けてくれませんか?

シナリオは次のとおりです。

  • マスターと、それぞれ1コアの2つのノード
  • ファイル count.txtサイズが10MB

次のパーティションはいくつ作成されますか?

rdd = sc.textFile(count.txt)

ファイルのサイズはパーティションの数に影響しますか?

18

デフォルトでは、HDFSパーティションごとにパーティションが作成されます。デフォルトは64MBです( Sparkプログラミングガイド から)。

sparkが作成するパーティションの最小数をオーバーライドする別のパラメーターdefaultMinPartitionsを渡すことができます。この値をオーバーライドしない場合、sparkは少なくともspark.default.parallelismと同じ数のパーティションを作成します。

spark.default.parallelismは、クラスター内のすべてのマシンのコア数であると想定されているため、この場合、少なくとも3つのパーティションが作成されると思います。

RDDをrepartitionまたはcoalesceして、使用可能な並列処理の合計量に影響を与えるパーティションの数を変更することもできます。

21
mrmcgreg