使用ComputeSplitsBySize接口可以將全表數據邏輯上劃分成若干接近指定大小的分片,并返回這些分片之間的分割點以及分片所在機器的提示。一般用于計算引擎規劃并發度等執行計劃。
說明
API說明請參見ComputeSplitPointsBySize。
前提條件
- 已初始化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());
}
}
文檔內容是否對您有幫助?