Topik ini menjelaskan cara menggunakan Tablestore SDK for Java untuk membaca data dari Tablestore dengan menggunakan iterator.
Prasyarat
Klien telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.
Deskripsi metode
public Iterator<Row> createRangeIterator(RangeIteratorParameter rangeIteratorParameter) throws TableStoreException, ClientExceptionContoh kode
Berikut adalah contoh kode yang menunjukkan cara menggunakan iterator untuk membaca data dari tabel test_table mulai dari nilai primary key row1.
public static void createRangeIteratorExample(SyncClient client) {
// Konstruksi kondisi permintaan iteratif.
RangeIteratorParameter rangeIteratorParameter = new RangeIteratorParameter("test_table");
// Tentukan primary key awal untuk permintaan iteratif.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
rangeIteratorParameter.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
// Tentukan primary key akhir untuk permintaan iteratif. Hasilnya tidak termasuk primary key akhir.
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
rangeIteratorParameter.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
// Tentukan versi yang akan diperiksa.
rangeIteratorParameter.setMaxVersions(1);
// Panggil createRangeIterator untuk mendapatkan iterator.
Iterator<Row> iterator = client.createRangeIterator(rangeIteratorParameter);
while(iterator.hasNext()) {
Row row = iterator.next();
System.out.println(row);
}
}Anda dapat merujuk pada contoh kode berikut untuk mengonfigurasi parameter saat membaca data menggunakan iterator.
Tentukan arah pembacaan data.
// Tentukan bahwa data dibaca dalam arah mundur. rangeIteratorParameter.setDirection(Direction.BACKWARD); // Tentukan primary key awal untuk permintaan iteratif. Saat membaca data dalam arah mundur, primary key awal harus lebih besar dari primary key akhir. PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder(); primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX); rangeIteratorParameter.setInclusiveStartPrimaryKey(primaryKeyBuilder.build()); // Tentukan primary key akhir untuk permintaan iteratif. Hasilnya tidak termasuk primary key akhir. primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder(); primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1")); rangeIteratorParameter.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());Tentukan rentang versi untuk data yang dibaca. Hanya data dalam rentang ini yang akan dikembalikan.
// Tetapkan rentang versi untuk memeriksa data dari satu hari yang lalu hingga waktu saat ini. rangeIteratorParameter.setTimeRange(new TimeRange(System.currentTimeMillis() - 86400*1000, System.currentTimeMillis()));Tentukan jumlah maksimum baris yang dibaca menggunakan iterator.
rangeIteratorParameter.setMaxCount(20);Tentukan ukuran buffer.
rangeIteratorParameter.setBufferSize(5);Tentukan kolom atribut yang akan dibaca.
rangeIteratorParameter.addColumnsToGet("col2");