<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 合理設置Map數 1. 通常情況下,作業會通過input的目錄產生一個或者多個map任務 主要的決定因素有: input的文件總個數,input的文件大小,集群設置的文件塊大小 2. 是不是map數越多越好? 不是的,如果一個任務有很多小文件(遠遠小于塊大小128m),則每個小文件也會被當做一個塊,用一個map任務來完成,而一個map任務啟動和初始化的時間遠遠大于邏輯處理的時間,就會造成很大的資源浪費.而且,同時可執行的map數是受限的 3. 是不是保證每個map處理接近128M的文件塊,就高枕無憂了? 不一定.比如有一個127m的文件,正常會用一個map去完成,當這個文件只有一個或者兩個小字段,缺有幾千萬的記錄.如果map處理的邏輯比較復雜,用一個map任務去做,肯定也比較耗時 # 小文件合并 在map執行前合并小文件,減少map數: CombineHiveInputFormat具有對小文件進行合并的功能(系統默認的格式). HiveInputFormat沒有對小文件合并功能 ~~~ set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; ~~~ # 復雜文件增加map數 當input的文件都很大,任務邏輯很復雜,map執行非常慢的時候,可以考慮增加Map數,來使得每個map處理的數據量減少,從而提高任務的執行效率. 增加map的方法為: 根據 ~~~ computeSliteSize(Math.max(minSize, Math.min(maxSize, blocksize)))=blocksize=128M公式 ~~~ 調整maxSize最大值.讓maxSize最大值低于blocksize就可以增加map的個數 **例子** 1. 執行查詢 ~~~ hive> select count(*) from emp; ~~~ 發現是一個map 2. 設置最大切片值為100個字節 ~~~ hive> set mapreduce.input.fileinputformat.split.maxsize=100; hive> select count(*) from emp; ~~~ 發現是6個map # 合理設置Reduce數 ## 方法一 1. 每個Reduce處理的數據量默認是256MB ~~~ hive.exec.reducers.bytes.per.reducer=256000000 ~~~ 2. 每個任務最大的reduce數,默認為1009 ~~~ hive.exec.reducers.max=1009 ~~~ 3. 計算reducer數的公式 ~~~ N=min(參數2, 總輸入數據量/參數1) ~~~ ## 方法二 在hadoop的mapred-default.xml文件中修改 設置每個job的Reducer個數 ~~~ set mapreduce.job.reduces=15; ~~~ # reduce個數并不是越多越好 1. 過多的啟動和初始化reduce也會消耗時間和資源 2. 另外,有多少個reduce,就會有多少個輸出文件,如果生成了很多個小文件,那么這些小文件作為下一個任務的輸入,則也會出現小文件過多的問題 在設置reduce個數的時候也需要考慮這兩個原則:處理大數據量利用合適的reduce數.使單個reduce任務處理數據量大小要合適
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看