全部產品
Search
文件中心

Tablestore:劃分資料分區

更新時間:Aug 06, 2026

Java SDK 按指定大小將全表資料邏輯劃分為若干分區,並返回各分區的主鍵範圍和位置提示。

前提條件

安裝 Tablestore Java SDK並初始化用戶端。

功能說明

在服務端按指定大小將全表資料邏輯劃分為若干分區。分區大小為近似值,返回結果包含每個分區的主鍵範圍(lowerBound / upperBound)和分區所在機器的位置提示(location)。可將返回的主鍵範圍傳入 RangeRowQueryCriteria,通過範圍讀取資料迭代讀取資料平行處理各分區。

public ComputeSplitsBySizeResponse computeSplitsBySize(ComputeSplitsBySizeRequest request) throws TableStoreException, ClientException

以下樣本將資料表 split_demo 的全表資料按 200 MB 劃分為若干分區,並列印每個分區的位置和主鍵範圍。

String tableName = "split_demo";

// 按 200 MB(2 * 100 MB)將全表資料劃分為若干分區
ComputeSplitsBySizeRequest request =
        new ComputeSplitsBySizeRequest(tableName, 2);

ComputeSplitsBySizeResponse response = client.computeSplitsBySize(request);

System.out.println("PrimaryKeySchema: " + response.getPrimaryKeySchema());
List<Split> splits = response.getSplits();
System.out.println("Splits size: " + splits.size());

Iterator<Split> iterator = splits.iterator();
while (iterator.hasNext()) {
    Split split = iterator.next();
    // getLowerBound()/getUpperBound() 返回的主鍵範圍可直接傳入
    // RangeRowQueryCriteria,交給 getRange 或 createRangeIterator 並行讀取
    System.out.println("Location: " + split.getLocation());
    System.out.println("LowerBound: " + split.getLowerBound().jsonize());
    System.out.println("UpperBound: " + split.getUpperBound().jsonize());
}

參數說明

名稱

類型

說明

tableName(必選)

String

資料表名稱。

splitSize(必選)

long

每個分區的近似大小,單位為 100 MB。例如傳入 2 表示按 200 MB 劃分。

傳回值

分區劃分結果

ComputeSplitsBySizeResponse 包含以下業務欄位。

名稱

類型

說明

splits

List<Split>

邏輯分區列表。通過 getSplits() 擷取。

primaryKeySchema

List<PrimaryKeySchema>

資料表的主鍵結構。通過 getPrimaryKeySchema() 擷取。

分區資訊

ComputeSplitsBySizeResponse.splits[] 中每個元素的類型為 Split

名稱

類型

說明

lowerBound

PrimaryKey

分區主鍵範圍的下界。

upperBound

PrimaryKey

分區主鍵範圍的上界。

location

String

分區所在機器的位置提示,部分情境可能為空白字串。