控制Hadoop的reducer函式輸出檔案命名

2021-06-19 01:45:11 字數 1412 閱讀 4782

hadoop 控制輸出檔案命名

在一般情況下,hadoop 每乙個 reducer 產生乙個輸出檔案,檔案以

part-r-00000、part-r-00001 的方式進行命名。如果需要人為的控制輸出檔案的命

名或者每乙個 reducer 需要寫出多個輸出檔案時,可以採用 multipleoutputs 類來

完成。multipleoutputs 採用輸出記錄的鍵值對(output key 和 output value)或者

任意字串來生成輸出檔案的名字,檔案一般以 name-r-nnnnn 的格式進行命名,

其中 name 是程式設定的任意名字;nnnnn 表示分割槽號。

multipleoutputs 的使用方式 的使用方式: :: :

想要使用 multipeoutputs,需要完成以下四個步驟:

1. 在 reducer 中宣告 multipleoutputs 的變數

private multipleoutputsmultipleoutputs;

2. 在 reducer 的 setup 函式中進行 multipleoutputs 的初始化

protected void setup(context context)throws ioexception, interruptedexception

3. 在 reduce 函式中進行輸出控制

protected void reduce(text key, iterablevalues, context context)throws ioexception,

interruptedexception

}4. 在 cleanup 函式中關閉輸出 multipleoutputs

protected void cleanup(context context)throws ioexception, interruptedexception

注意:multipleoutputs.write(key, value, baseoutputpath)

方法的第三個函式表明了該輸出所在的目錄(相對於使用者指定的輸出目錄)。如果

baseoutputpath

不包含檔案分隔符「/」,那麼輸出的檔案格式為baseoutputpath-r-nnnnn(

name-r-nnnnn)

;如果包含檔案分隔符「

/」,例如baseoutputpath=「

029070-99999/1901/part

」,那麼輸出檔案則為

hive map和reduce的控制

一 控制hive任務中的map數 1.通常情況下,作業會通過input的目錄產生乙個或者多個map任務。主要的決定因素有 input的檔案總個數,input的檔案大小,集群設定的檔案塊大小 目前為128m,可在hive中通過set dfs.block.size 命令檢視到,該引數不能自定義修改 2....

Hive控制Reduce個數

1.hive 自己如何確定reduce數 reduce個數的設定極大影響任務執行效率,不指定reduce個數的情況下,hive會猜測確定乙個reduce個數,基於以下兩個設定 hive.exec.reducers.bytes.per.reducer 每個reduce任務處理的資料量,預設為1000 ...

hadoop學習筆記(七)reduce在16 暫停

reduce在 16 暫停 因為有兩台datanode 但是各台 host 檔案中並沒有新增各自的 ip,在 datanode1 和datanode2 中分別加上各自的 ip位址就行。因為當datanode1 和datanode2 執行完map 後有乙個 shuffle 過程,如果 datanode...