關于在hive任務中number of reducers的探討:
1.在默認情況下(set mapreduce.job.reduces=-1),實際運行計算過程中reducer的數量會由所讀取文件的大小來決定。文件默認大小是256M,即每256M對應一個reduce。比如當文件大小為1G時,會啟用4個reducer處理數據;當文件大小為400M時,會啟用2個reducer來處理。
2.在進行分區或者sort by 操作時,需要設置mapreduce.job.reduces的數量,此時實際啟用的reducer的個數等于設置值。
3.1 在進行分桶操作的情況下,當 set mapreduce.job.reduces=-1或0時,此時實際啟用rediucer的數量會等于桶的個數i。
3.2在進行分桶操作的情況下,當桶的個數是i時,并且0< set mapreduce.job.reduces<=i時,啟用reducer的數量正好是i的因數。在i相鄰的兩個因數之間,啟用reducer的個數是不變的。詳見下表:
當i為偶數時:

當i為奇數時:

了解更多大數據相關技術內容歡迎關注尚硅谷教育!