Topik ini menjelaskan cara menggunakan Tablestore HBase Client untuk mengembangkan program yang dapat mengakses Tablestore.
Prasyarat
Data HBase telah dimigrasi ke Tablestore. Untuk informasi lebih lanjut, lihat Data Integration.
Pengguna RAM telah dibuat dan izin untuk melakukan operasi pada Tablestore diberikan kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Gunakan pasangan AccessKey dari pengguna RAM untuk memulai permintaan.
Prosedur
Dalam contoh ini, Tablestore HBase Client yang kompatibel dengan HBase V2.x.x digunakan.
Langkah 1: Impor Tablestore HBase Client dependencies
Tambahkan dependensi berikut ke file pom.xml proyek Anda:
<dependencies>
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>tablestore-hbase-client</artifactId>
<version>2.0.12</version>
</dependency>
</dependencies> Langkah 2: Konfigurasikan file HBase
Tambahkan parameter berikut ke file hbase-site.xml dan konfigurasikan titik akhir instance Tablestore, nama instance Tablestore, dan pasangan AccessKey dari pengguna RAM sesuai dengan kebutuhan bisnis Anda.
<configuration>
<property>
<name>hbase.client.connection.impl</name>
<value>com.alicloud.tablestore.hbase.TablestoreConnection</value>
</property>
<property>
<name>tablestore.client.endpoint</name>
<value>endpoint</value>
</property>
<property>
<name>tablestore.client.instancename</name>
<value>instance_name</value>
</property>
<property>
<name>tablestore.client.accesskeyid</name>
<value>access_key_id</value>
</property>
<property>
<name>tablestore.client.accesskeysecret</name>
<value>access_key_secret</value>
</property>
<property>
<name>hbase.client.tablestore.family</name>
<value>f1</value>
</property>
<property>
<name>hbase.client.tablestore.table</name>
<value>ots_adaptor</value>
</property>
</configuration> Langkah 3: Hubungkan ke Tablestore
Kode sampel berikut memberikan contoh tentang cara membuat objek TableStoreConnection untuk terhubung ke Tablestore:
Configuration config = HBaseConfiguration.create();
// Buat objek Koneksi Tablestore.
Connection connection = ConnectionFactory.createConnection(config);
// Admin digunakan untuk membuat, mengelola, dan menghapus tabel.
Admin admin = connection.getAdmin(); Langkah 4: Lakukan operasi tabel
Buat tabel
Kode sampel berikut memberikan contoh tentang cara membuat tabel dengan nama tertentu. Dalam contoh ini, nilai default dari parameter MaxVersion dan TimeToLive digunakan.
// Buat HTableDescriptor, yang hanya berisi satu ColumnFamily.
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
// Buat ColumnFamily yang menggunakan nilai default dari parameter MaxVersion dan TimeToLive. Nilai default dari parameter MaxVersion adalah 1. Nilai default dari parameter TimeToLive adalah Integer.INF_MAX.
descriptor.addFamily(new HColumnDescriptor(COLUMN_FAMILY_NAME));
// Gunakan operasi createTable dari Admin untuk membuat tabel.
System.out.println("Buat tabel " + descriptor.getNameAsString());
admin.createTable(descriptor); Hapus tabel
Kode sampel berikut memberikan contoh tentang cara menggunakan API Admin untuk menghapus tabel:
System.out.println("Hapus tabel");
admin.disableTable(table.getName());
admin.deleteTable(table.getName()); Langkah 5: Lakukan operasi data dasar
Tulis data
Kode sampel berikut memberikan contoh tentang cara menulis baris data ke Tablestore.
// Buat tabel Tablestore untuk melakukan operasi seperti membaca, menulis, memperbarui, dan menghapus data.
Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
// Buat objek PUT untuk menulis baris yang nilai kunci primernya adalah row_1.
System.out.println("Tulis satu baris ke tabel");
Put put = new Put(ROW_KEY);
// Tambahkan kolom atribut dari baris ke Tablestore. Tablestore hanya mendukung keluarga kolom tunggal. Anda perlu menentukan nama keluarga di file konfigurasi hbase-site.xml. Jika Anda tidak menentukan nama keluarga di file konfigurasi hbase-site.xml, nilai default f digunakan. Oleh karena itu, saat Anda menulis data ke Tablestore, parameter COLUMN_FAMILY_NAME dapat dibiarkan kosong.
put.addColumn(COLUMN_FAMILY_NAME, COLUMN_NAME, COLUMN_VALUE);
// Gunakan API HBase untuk memanggil operasi PUT untuk menulis baris ke Tablestore.
table.put(put); Baca data
Baca satu baris data
Kode sampel berikut memberikan contoh tentang cara membaca data dari baris:
// Buat objek GET untuk membaca baris yang nilai kunci primernya adalah ROW_KEY. Result getResult = table.get(new Get(ROW_KEY)); Result result = table.get(get); // Tampilkan hasilnya. String value = Bytes.toString(getResult.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME)); System.out.println("Dapatkan satu baris berdasarkan kunci baris"); System.out.printf("\t%s = %s\n", Bytes.toString(ROW_KEY), value);Pindai data
Baca data yang nilai kunci primernya berada dalam rentang tertentu.
// Pindai data dari semua baris dalam tabel. System.out.println("Pindai untuk semua baris:"); Scan scan = new Scan(); ResultScanner scanner = table.getScanner(scan); // Cetak hasil secara siklik. for (Result row : scanner) { byte[] valueBytes = row.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME); System.out.println('\t' + Bytes.toString(valueBytes)); }
Kode sampel lengkap
Program sampel dalam topik ini menggunakan API HBase untuk mengakses Tablestore. Kode program sampel lengkap dapat ditemukan di direktori src/test/java/samples/HelloWorld.java pada proyek HBase di GitHub.
package samples;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class HelloWorld {
/** Tentukan nama tabel data. **/
private static final byte[] TABLE_NAME = Bytes.toBytes("HelloTablestore");
/** Tentukan kunci primer dari baris. **/
private static final byte[] ROW_KEY = Bytes.toBytes("row_1");
/** Tentukan keluarga kolom. **/
private static final byte[] COLUMN_FAMILY_NAME = Bytes.toBytes("f");
/** Tentukan nama kolom. **/
private static final byte[] COLUMN_NAME = Bytes.toBytes("col_1");
/** Tentukan nilai kolom. **/
private static final byte[] COLUMN_VALUE = Bytes.toBytes("col_value");
public static void main(String[] args) {
helloWorld();
}
private static void helloWorld() {
try {
// Hubungkan ke Tablestore.
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin();
// Buat tabel data.
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
descriptor.addFamily(new HColumnDescriptor(COLUMN_FAMILY_NAME));
System.out.println("Buat tabel " + descriptor.getNameAsString());
admin.createTable(descriptor);
// Tulis data ke Tablestore.
Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
System.out.println("Tulis satu baris ke tabel");
Put put = new Put(ROW_KEY);
put.addColumn(COLUMN_FAMILY_NAME, COLUMN_NAME, COLUMN_VALUE);
table.put(put);
Result getResult = table.get(new Get(ROW_KEY));
// Baca satu baris data.
String value = Bytes.toString(getResult.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME));
System.out.println("Dapatkan satu baris berdasarkan kunci baris");
System.out.printf("\t%s = %s\n", Bytes.toString(ROW_KEY), value);
// Pindai data.
Scan scan = new Scan();
System.out.println("Pindai untuk semua baris:");
ResultScanner scanner = table.getScanner(scan);
for (Result row : scanner) {
byte[] valueBytes = row.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME);
System.out.println('\t' + Bytes.toString(valueBytes));
}
// Hapus tabel data.
System.out.println("Hapus tabel");
admin.disableTable(table.getName());
admin.deleteTable(table.getName());
// Tutup koneksi.
table.close();
admin.close();
connection.close();
} catch (IOException e) {
System.err.println("Pengecualian saat menjalankan HelloTablestore: " + e.toString());
System.exit(1);
}
}
} Referensi
Anda dapat menggunakan versi lain HBase Client atau Tablestore SDK untuk Java. Untuk informasi lebih lanjut, lihat Ikhtisar Tablestore HBase Client.
Untuk informasi tentang parameter lainnya dalam file HBase, lihat Migrasi dari HBase Client ke Tablestore HBase Client.