全部產品
Search
文件中心

Tablestore:指定大小計算分區

更新時間:Jun 30, 2024

使用ComputeSplitsBySize介面可以將全表資料邏輯上劃分成若干接近指定大小的分區,並返回這些分區之間的分割點以及分區所在機器的提示。一般用於計算引擎規劃並發度等執行計畫。

說明

API說明請參見ComputeSplitPointsBySize

前提條件

  • 已初始化OTSClient。具體操作,請參見初始化OTSClient

  • 已建立資料表並寫入資料。

參數

參數

說明

tableName

資料表名稱。

splitSize

每個分區的近似大小。

單位為百兆(即100 MB)。

樣本

以下樣本用於將全表的資料在邏輯上劃分成接近200 MB的若干分區。

private static void describeTable(SyncClient client) {
    //設定資料表名稱,並以200 MB劃分分區。
    ComputeSplitsBySizeRequest request = new ComputeSplitsBySizeRequest("<TABLE_NAME>", 2);
    ComputeSplitsBySizeResponse response = client.computeSplitsBySize(request);
    System.out.println("ConsumedCapacity=" + response.getConsumedCapacity().jsonize());
    System.out.println("PrimaryKeySchema=" + response.getPrimaryKeySchema());
    System.out.println("RequestId=" + response.getRequestId());
    System.out.println("TraceId=" + response.getTraceId());
    List<Split> splits = response.getSplits();
    System.out.println("splits.size=" + splits.size());
    Iterator<Split> iterator = splits.iterator();
    while (iterator.hasNext()) {
        Split split = iterator.next();
        System.out.println("split.getLocation()=" + split.getLocation());
        //split.getLowerBound()和split.getUpperBound()可以直接灌進RangeRowQueryCriteria交給getRange()或createRangeIterator()
        System.out.println("split.getLowerBound()=" + split.getLowerBound().jsonize());
        System.out.println("split.getUpperBound()=" + split.getUpperBound().jsonize());
    }
}