Anda dapat memanggil operasi ComputeSplitsBySize untuk membagi data dalam tabel menjadi shard logis dengan ukuran yang mendekati nilai yang ditentukan. Informasi mengenai titik-titik pemisah antar-shard dan host tempat shard berada akan dikembalikan. Operasi ini sering digunakan untuk mengimplementasikan rencana pada mesin komputasi, seperti rencana konkurensi.
Untuk informasi lebih lanjut, lihat ComputeSplitPointsBySize.
Prasyarat
Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien.
Sebuah tabel data telah dibuat, dan data telah ditulis ke tabel tersebut.
Parameter
Parameter | deskripsi |
tableName | Nama tabel. |
splitSize | Ukuran tertentu dari setiap shard. Satuan: 100 MB. |
Contoh
Berikut adalah contoh kode untuk membagi data dalam tabel menjadi shard logis dengan ukuran mendekati 200 MB:
private static void describeTable(SyncClient client) {
// Tentukan nama tabel. Bagi data dalam tabel menjadi shard logis dan tentukan bahwa ukuran setiap shard mendekati 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());
// Anda dapat menyuntikkan fungsi split.getLowerBound() dan split.getUpperBound() ke dalam kelas RangeRowQueryCriteria, dan meneruskan kelas RangeRowQueryCriteria untuk melakukan operasi getRange() atau createRangeIterator().
System.out.println("split.getLowerBound()=" + split.getLowerBound().jsonize());
System.out.println("split.getUpperBound()=" + split.getUpperBound().jsonize());
}
}