FileInputFormat切片機制和配置引數

2021-10-19 05:48:19 字數 1083 閱讀 2284

(1)簡單地按照檔案的內容長度進行切片 

(2)切片大小,預設等於block大小

(本地模式塊大小32m,yarn模式128m,老的版本64m)

(3)切片時不考慮資料集整體,而是逐個針對每乙個檔案單獨切片

比如待處理資料有兩個檔案:

file1.txt 330m

file2.txt 10m

經過fileinputformat的切片機制運算後,形成的切片資訊如下:

file1.txt.split1--0~

128 file1.txt.split2--

128~

256 file1.txt.split3--

256~

330 file2.txt.split1--0~

10m

通過分析原始碼,在fileinputformat中,計算切片大小的邏輯為 math.max(minsize, math.min(maxsize, blocksize));

切片主要由這幾個值來運算決定

mapreduce.input.fileinputformat.split.minsize=1 預設值為1

mapreduce.input.fileinputformat.split.maxsize= long.maxvalue 預設值long.maxvalue

因此,預設情況下,切片大小=blocksize。

maxsize(切片最大值)

引數如果調得比blocksize小,則會讓切片變小,而且就等於配置的這個引數的值。

minsize(切片最小值)

引數調的比blocksize大,則可以讓切片變得比blocksize還大。

// 根據檔案型別獲取切片資訊

filesplit inputsplit =

(filesplit) context.

getinputsplit()

;// 獲取切片的檔名稱

string name = inputsplit.

getpath()

.getname()

;

MapReduce切片機制及執行流程

在map階段會將讀取進來的資料進行邏輯切片進行處理。此切片與hdfs的切塊不同,hdfs的切塊是將檔案按照block塊的形式儲存起來,mr則是將檔案按照切片數進行計算 預設切片大小等於塊大小,也就是128m切一片,切片數與maptask的數量是一致的,maptask的並行度是由客戶端提交job時的切...

切片和maptask並行度決定機制

maptask指的是在mapreduce執行過程中為每乙個資料切片分配的資料運算例項任務。maptask的並行度也就指的是運算任務例項的數量,影響整個job的處理速度。資料塊 block是hdfs物理上把資料分成一塊一塊。資料切片 資料切片只是在邏輯上對輸入進行分片,並不會在磁碟上將其切分成片進行儲...

setTimeout傳參 和 執行機制

settimeout還允許新增更多的引數。它們將被傳入推遲執行的函式 函式 上面 中,settimeout共有4個引數。最後那兩個引數,將在1000毫秒之後 函式執行時,作為 函式的引數。settimeout和setinterval的執行機制是,將指定的 移出本次執行,等到下一輪event loop...