You can call the ComputeSplitsBySize operation to split data in a table into logical shards whose sizes are approximately the specified value. The information about the split points among the shards and the hosts in which the shards reside is returned. In most cases, this operation is used to implement plans on compute engines, such as concurrency plans.
For more information, see ComputeSplitPointsBySize.
Prerequisites
An OTSClient instance is initialized. For more information, see Initialize a client.
A data table is created, and data is written to the data table.
Parameters
Parameter | description |
tableName | The name of the table. |
splitSize | The specified size of each shard. Unit: 100 MB. |
Example
The following code provides an example on how to split data in a table into logical shards whose sizes are approximately 200 MB:
private static void describeTable(SyncClient client) {
// Specify the name of the table. Split the data in the table into logical shards and specify that the size ofeach shard is approximately 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());
// You can inject the split.getLowerBound() and split.getUpperBound() functions into the RangeRowQueryCriteria class, and pass the RangeRowQueryCriteria class to perform the getRange() or createRangeIterator() operation.
System.out.println("split.getLowerBound()=" + split.getLowerBound().jsonize());
System.out.println("split.getUpperBound()=" + split.getUpperBound().jsonize());
}
}