關(guān)于在hive任務(wù)中number of reducers的探討:
1.在默認(rèn)情況下(set mapreduce.job.reduces=-1),實際運行計算過程中reducer的數(shù)量會由所讀取文件的大小來決定。文件默認(rèn)大小是256M,即每256M對應(yīng)一個reduce。比如當(dāng)文件大小為1G時,會啟用4個reducer處理數(shù)據(jù);當(dāng)文件大小為400M時,會啟用2個reducer來處理。
2.在進(jìn)行分區(qū)或者sort by 操作時,需要設(shè)置mapreduce.job.reduces的數(shù)量,此時實際啟用的reducer的個數(shù)等于設(shè)置值。
3.1 在進(jìn)行分桶操作的情況下,當(dāng) set mapreduce.job.reduces=-1或0時,此時實際啟用rediucer的數(shù)量會等于桶的個數(shù)i。
3.2在進(jìn)行分桶操作的情況下,當(dāng)桶的個數(shù)是i時,并且0< set mapreduce.job.reduces<=i時,啟用reducer的數(shù)量正好是i的因數(shù)。在i相鄰的兩個因數(shù)之間,啟用reducer的個數(shù)是不變的。詳見下表:
當(dāng)i為偶數(shù)時:
當(dāng)i為奇數(shù)時:
了解更多大數(shù)據(jù)相關(guān)技術(shù)內(nèi)容歡迎關(guān)注尚硅谷教育!