如何設定合理的Reduce的個數

2021-09-17 03:26:33 字數 760 閱讀 1456

•reducer個數的設定極大影響執行效率

•不指定reducer個數的情況下,hive分配reducer個數基於以下:

引數1:hive.exec.reducers.bytes.per.reducer(預設為1g) ---------------------- 每個reduce任務處理的資料量

引數2:hive.exec.reducers.max(預設為999) ---------------------- 每個任務最大的reduce數目

•計算reducer數的公式

•n=min(引數2,總輸入資料量/引數1) set mapred.reduce.tasks=13;

•reduce個數並不是越多越好

同map一樣,啟動和初始化reduce也會消耗時間和資源;有多少個reduce,就會有多少個輸出檔案。(當有reduce,檔案個數同reduce數一樣;沒有reduce,檔案個數同map數一樣)

reducer過多:生成了很多個小檔案,那麼如果這些小檔案作為下乙個任務的輸入,則也會出現小檔案過多的問題。

reducer過少:影響執行效率。

•什麼情況下只有乙個reduce

很多時候你會發現任務中不管資料量多大,不管你有沒有設定調整reduce個數的引數,任務中一直都只有乙個reduce任務;

1、 除了資料量小於hive.exec.reducers.bytes.per.reducer引數值的情況外

2、沒有group by的彙總

3、用了order by。

如何合理的設定培訓體系

新員工要適應企業,無論是生活還是工作都必須經過培訓,老員工不被淘汰就必須有所提公升,不斷進步,這也需要培訓。無論這些培訓是否能形成體系,但明確進行哪些培訓,確定合理的培訓內容,才能保證企業的培訓是有用的,才能從根本上保證培訓的效果。首先,按照職位和層級的劃分,整理和分析每個層級每類人員應具備的能力專...

Mysql sql mode的合理設定

sql mode是個很容易被忽視的變數,預設值是空值,在這種設定下是可以允許一些非法操作的,比如允許一些非法資料的插入。在生產環境必須將這個值設定為嚴格模式。所以開發 測試環境的資料庫也必須要設定,這樣在開發測試階段就可以發現問題。值說明 only full group by 對於group by聚...

java執行緒池如何合理的設定大小

任務一般分為 cpu密集型 io密集型 混合型,對於不同型別的任務需要分配不同大小的執行緒池 1 cpu密集型 盡量使用較小的執行緒池,一般cpu核心數 1 因為cpu密集型任務cpu的使用率很高,若開過多的執行緒,只能增加執行緒上下文的切換次數,帶來額外的開銷 2 io密集型 方法一 可以使用較大...