2016-11-18 40 views
1

我在閱讀大量文本文件時由Spark創建的任務數量有點困惑。火花如何確定任務數量?

下面是代碼:

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個文件,以便有因爲完整b文件夾中共有26個文件被讀出。現在,如果我執行一個動作,例如.count(),則Spark UI會顯示我有24個任務。但是,我認爲有26個任務,如每個分區1個任務和每個文件1個分區。

如果有人能夠讓我更深入地瞭解實際發生的事情,那將會很棒。

+1

什麼是你正在使用作業核心的總數是多少?你有沒有設置任何配置? –

+0

爲了便於理解。你可以發佈你的代碼和你的spark ui細節。 –

+0

@SimonSchiff我使用了8個內核,而且我沒有配置我知道的任何東西。但是,這似乎是正確的方向。我試着在一個更大的機器上執行代碼,它有預期的26個任務。 –

回答

0

使用Hadoop格式加載文本文件。分區的數量取決於:如果

  • mapreduce.input.fileinputformat.split.minsize
  • mapreduce.input.fileinputformat.split.maxsize
  • minPartitions論點提供
  • 塊大小
  • 壓縮如果存在的話(splitable /不splitable)。

你會發現這裏例如計算:Behavior of the parameter "mapred.min.split.size" in HDFS