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






