2016-11-18 7 views
1

私は、いくつかのテキストファイルを読み込むときにSparkによって作成されるタスクの数にちょっと混乱します。ここでスパークはどのようにタスクの数を決定しますか?

コードです:完全bフォルダが読み込まれているので26個のファイルの合計が存在するように

val files = List["path/to/files/a/23", 
       "path/to/files/b/", 
       "path/to/files/c/0"] 
val ds = spark.sqlContext.read.textFile(files :_*) 
ds.count() 

フォルダa, b, cのそれぞれは、24個のファイルが含まれています。今度は、.count()のようなアクションを実行すると、SparkのUIには24のタスクがあることがわかります。しかし、パーティションごとに1つのタスク、ファイルごとに1つのパーティションのように、26のタスクがあると思っていました。

実際に何が起こっているのか誰かが私にもっと洞察を与えることができれば素晴らしいと思います。

+1

あなたが仕事のために使用されているコアの総数は何ですか?そして設定をしましたか? –

+0

理解しやすくするためです。あなたのコードとあなたのスパークUIの詳細を投稿できますか? –

+0

@SimonSchiff私は8つのコアを使いました。しかし、それは正しい方向性のようです。私はもっ​​と大きなマシンでコードを実行しようとしましたが、26のタスクが予想されていました。 –

答えて

0

テキストファイルは、Hadoop形式を使用してロードされます。 (-分割可能ではない/分割可能)存在する場合

  • ブロックサイズ
  • 圧縮を提供した場合

    • mapreduce.input.fileinputformat.split.minsize
    • mapreduce.input.fileinputformat.split.maxsize
    • minPartitions引数:パーティションの数に依存します。

    あなたはここに例の計算を見つけることができます:Behavior of the parameter "mapred.min.split.size" in HDFS

  • 関連する問題