<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                手動拆分有兩種情況:**預拆分(pre-splitting)** 和 **強制拆分(forced splits)**。<br/> [TOC] # 1. 預拆分(pre-splitting) 預拆分(pre-splitting)就是在建表的時候就定義好了拆分點的算法,所以叫預拆分。使用 org.apache.hadoop.hbase.util.RegionSplitter 類來創建表,并傳入拆分點算法就可以在建表的同時定義拆分點算法。 **1. 快速入門** 我們要新建一張表,并且規定了該表的 Region 數量永遠只有 10 個。在 Linux下執行: ```sql [root@hadoop101 hbase]# hbase org.apache.hadoop.hbase.util.RegionSplitter my_split_table HexStringSplit -c 10 -f mycf -- my_split_table:我們指定要新建的表名 -- HexStringSplit:指定的拆分點算法為 HexStringSplit -- -c:要拆分的 Region 數量 -- -f:要建立的列族名稱 ``` 建完后在 hbase shell 看一下結果。執行下面命令查出所有 10 個 Region 的信息: ```sql hbase(main):013:0> scan 'hbase:meta',{STARTROW=>'my_split_table',LIMIT=>10} ``` 可以看到已經建立的 10 個 Region,由于輸出信息太多,我只截取其中關于每一個 Region 的起始 rowkey 和結束 rowkey 的信息,這 10 個 Region 的范圍分別是: ```sql STARTKEY=>'', ENDKEY=>'19999999' STARTKEY=>'19999999', ENDKEY=>'33333332' STARTKEY=>'33333332', ENDKEY=>'4ccccccb' STARTKEY=>'4ccccccb', ENDKEY=>'66666664' STARTKEY=>'66666664', ENDKEY=>'7ffffffd' STARTKEY=>'7ffffffd', ENDKEY=>'99999996' STARTKEY=>'99999996', ENDKEY=>'b333332f' STARTKEY=>'b333332f', ENDKEY=>'ccccccc8' STARTKEY=>'ccccccc8', ENDKEY=>'e6666661' STARTKEY=>'e6666661', ENDKEY=>'' ``` 我們可以在hdfs上看到在my_split_table目錄下創建了10個目下: ![](https://img.kancloud.cn/d7/8a/d78acd703819e89d56b82ebaa92c0a31_1468x670.png) 每個目錄類似 ```sql /hbase/data/default/my_split_table/02e4690b3c5ed79c94d2eb5a625e90f6/mycf ``` 這就是你預定了拆分點后的 Region。 <br/> **2. 拆分算法**(擴展內容) (1)HexStringSplit 拆分算法 在快速入門例子中使用的算法就是 HexStringSplit 算法。HexStringSplit 把數據從"00000000"到"FFFFFFFF"之間的數據長度按照 n 等分之后算出每一段的起始 rowkey 和結束 rowkey,以此作為拆分點。就是這么簡單。<br/> (2)UniformSplit 拆分算法 UniformSplit 有點像 HexStringSplit 的 byte 版,傳參還是 n,唯一不一樣的是起始和結束不是String,而是byte[]。起始rowkey是`ArrayUtils.EMPTY_BYTE_ARRAY`。結束 rowkey 是 `new byte[] {xFF, xFF, xFF, xFF, xFF, xFF, xFF, xFF}`。最后調用 `Bytes.split`方法把起始 rowkey 到結束 rowkey 之間的長度 n 等分,然后取每一段的起始和結束作為拆分點。默認的拆分點算法就這兩個。 還可以通過實現 SplitAlgorithm 接口實現自己的拆分算法。或者干脆手動定出拆分點。 <br/> **3. 手動指定拆分點** 手動指定拆分點的方法就是在建表的時候跟上 SPLITS 參數,比如: ```sql create 'test_split2','mycf2',SPLITS=>['aaa','bbb','ccc','ddd','eee','fff'] ``` 上述語句在 HBase shell 中執行,執行完成后,可以通過 HBase Web UI 中查看相關信息,如下圖。 ![](https://img.kancloud.cn/60/54/6054effe4b8d232b5ad26789208651f3_1254x402.png) ![](https://img.kancloud.cn/73/c6/73c6b0e213d67aee77c3ffa2a25fa31d_1352x150.png) ![](https://img.kancloud.cn/55/f3/55f3700556543308ee44ba896605ba0f_1794x644.png) 上面的手動分區是使用類似數組的形式指定的,除了這種方式外,還可以使用指定預分區文件的方式來操作。 (1)準備文件`splits.txt` ```sql aaa bbb ccc ddd eee fff ``` (2)創建預分區表 ```sql -- /hbase_datas/splits.txt 是存儲在Linux系統上的文件 hbase(main):003:0> create 'students','baseinfo',SPLITS_FILE=>'/hbase_datas/splits.txt' ``` (3)創建好的預分區表通過 HBase Web UI查看如下圖 ![](https://img.kancloud.cn/7a/8c/7a8c65b9a9bfdffac7479458f6c68b34_1841x635.png) <br/> # 2. 強制拆分(forced splits) 除了預拆分和自動拆分以外,有時候可以對運行了一段時間的 Region 進行強制地手動拆分(forced splits)。方法是調用 hbase shell 的 split 方法,比如:對前面的 students 表中的 starkey=aaa,endkey=bbb的region 進行強制拆分。 ```sql -- 'b' 就是新的拆分點 hbase(main):004:0> split '0fcc8f57234467027e825931ed1cb25d','b' ``` 拆分后如下圖 ![](https://img.kancloud.cn/14/4a/144a0d2e4d66518eb05277bab092ff28_1837x694.png) ```sql 查看split的更多用法 hbase(main):013:0> split Examples: split 'tableName' split 'namespace:tableName' split 'regionName' # format: 'tableName,startKey,id' split 'tableName', 'splitKey' split 'regionName', 'splitKey ```
                  <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>

                              哎呀哎呀视频在线观看