All Products
Search
Document Center

Tablestore:Pemisahan data untuk pemindaian paralel

Last Updated:Aug 06, 2026

Tablestore SDK for Java membagi seluruh data dalam sebuah tabel secara logis menjadi split berukuran tertentu dan mengembalikan rentang kunci primary serta petunjuk lokasi setiap split.

Prasyarat

Instal Tablestore SDK for Java dan inisialisasi client.

Deskripsi

Tablestore membagi sebuah tabel secara logis menjadi split dengan ukuran perkiraan yang ditentukan di sisi server. Setiap split mencakup rentang kunci primary (lowerBound / upperBound) dan petunjuk lokasi mesin yang menyimpan split tersebut (location). Teruskan rentang kunci primary ini ke RangeRowQueryCriteria, lalu proses split tersebut secara paralel dengan membaca data berdasarkan rentang atau membaca data menggunakan iterator.

public ComputeSplitsBySizeResponse computeSplitsBySize(ComputeSplitsBySizeRequest request) throws TableStoreException, ClientException

Contoh berikut membagi tabel split_demo menjadi split berukuran sekitar 200 MB dan mencetak lokasi serta rentang kunci primary setiap split.

String tableName = "split_demo";

// Membagi seluruh data tabel menjadi split berukuran sekitar 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("Jumlah split: " + splits.size());

Iterator<Split> iterator = splits.iterator();
while (iterator.hasNext()) {
    Split split = iterator.next();
    // Rentang kunci primary yang dikembalikan oleh getLowerBound() dan getUpperBound() dapat langsung
    // diteruskan ke RangeRowQueryCriteria untuk pembacaan paralel menggunakan getRange atau createRangeIterator.
    System.out.println("Location: " + split.getLocation());
    System.out.println("LowerBound: " + split.getLowerBound().jsonize());
    System.out.println("UpperBound: " + split.getUpperBound().jsonize());
}

Parameter

Nama

Type

Deskripsi

tableName (wajib)

String

Nama tabel.

splitSize (wajib)

long

Ukuran perkiraan setiap split, dalam satuan 100 MB. Misalnya, nilai 2 akan membagi data menjadi split berukuran masing-masing 200 MB.

Respons

Hasil split

ComputeSplitsBySizeResponse berisi bidang-bidang spesifik operasi berikut.

Nama

Type

Deskripsi

splits

List<Split>

Split logis. Panggil getSplits() untuk mendapatkan daftarnya.

primaryKeySchema

List<PrimaryKeySchema>

Skema kunci primary tabel. Panggil getPrimaryKeySchema() untuk mendapatkan nilainya.

Informasi split

Setiap elemen dalam ComputeSplitsBySizeResponse.splits[] bertipe Split.

Nama

Tipe

Deskripsi

lowerBound

PrimaryKey

Batas bawah rentang kunci primary dari split.

upperBound

PrimaryKey

Batas atas rentang kunci primary dari split.

location

String

Petunjuk lokasi mesin yang menyimpan split. Nilainya bisa berupa string kosong.