Topik ini menjelaskan cara menggunakan API ApsaraDB for HBase untuk Java guna terhubung ke LindormTable, serta menyediakan contoh penggunaannya.
Prasyarat
Java Development Kit (JDK) V1.8 atau yang lebih baru telah diinstal.
Titik akhir LindormTable yang ditampilkan setelah Access by Using HBase Java API pada tab Wide Table Engine dari konsol Lindorm telah diperoleh. Untuk informasi lebih lanjut, lihat Lihat titik akhir.
Alamat IP klien Anda telah ditambahkan ke daftar putih instance Lindorm. Untuk informasi lebih lanjut, lihat Konfigurasi daftar putih.
ApsaraDB for HBase SDK untuk Java telah diinstal. Untuk informasi lebih lanjut, lihat Instal ApsaraDB for HBase SDK untuk Java.
Prosedur
Konfigurasikan klien untuk terhubung ke instance Lindorm.
Tambahkan item konfigurasi berikut ke file konfigurasi hbase-site.xml:
<configuration> <!-- // Tentukan titik akhir yang dapat Anda gunakan untuk terhubung ke instance Lindorm. Anda dapat melihat titik akhir di halaman Koneksi Database dari konsol Lindorm. Jika Anda ingin terhubung ke instance Lindorm melalui Internet, gunakan titik akhir publik. Jika Anda ingin terhubung ke instance Lindorm melalui virtual private cloud (VPC), gunakan titik akhir VPC. --> <property> <name>hbase.zookeeper.quorum</name> <value>ld-xxxx-proxy-hbaseue.lindormue.xxx.rds.aliyuncs.com:30020</value> </property> <!-- Tentukan nama pengguna dan kata sandi sebenarnya yang Anda gunakan untuk terhubung ke instance Lindorm. Nama pengguna dan kata sandi default adalah root. --> <property> <name>hbase.client.username</name> <value>testuser</value> </property> <property> <name>hbase.client.password</name> <value>password</value> </property> </configuration>Tambahkan potongan kode berikut ke proyek Anda untuk membuat objek Configuration dan mengonfigurasi parameter yang dijelaskan dalam tabel berikut.
// Buat objek Configuration. Configuration conf = HBaseConfiguration.create(); // Tentukan titik akhir publik instance Lindorm. Anda bisa mendapatkan titik akhir publik di halaman Koneksi Database dari konsol Lindorm. conf.set("hbase.zookeeper.quorum", "host:port"); // xml_template.comment.hbaseue.username_password.default conf.set("hbase.client.username", "Nama Pengguna"); conf.set("hbase.client.password", "Kata Sandi");Anotasi
Contoh
Cara memperoleh nilai parameter
host:port
ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30020
Titik akhir LindormTable yang ditampilkan setelah Access by Using HBase Java API pada tab Wide Table Engine dari konsol Lindorm. Untuk informasi lebih lanjut, lihat Lihat titik akhir.
Nama pengguna.
testuser
Nama pengguna dan kata sandi yang Anda gunakan untuk terhubung ke instance Lindorm. Jika Anda lupa kata sandi, Anda dapat mengubah kata sandi di sistem manajemen kluster LindormTable. Untuk informasi lebih lanjut, lihat Ubah kata sandi pengguna.
Kata Sandi
password
Buat koneksi antara klien Lindorm dan database.
Connection connection = ConnectionFactory.createConnection(conf);CatatanKoneksi hanya dibuat sekali selama siklus hidup program. Koneksi bersifat thread-safe dan dapat dibagikan di antara semua thread. Setelah program berhenti berjalan, tutup objek Connection untuk mencegah kebocoran koneksi. Anda juga dapat mengeksekusi pernyataan try-finally untuk mencegah kebocoran koneksi.
Setelah koneksi dibuat, gunakan API ApsaraDB for HBase untuk Java untuk mengakses LindormTable. Anda dapat menggunakan kode Java sampel berikut.
Operasi DDL
try (Admin admin = connection.getAdmin()){ // Buat tabel. HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("namatabel")); htd.addFamily(new HColumnDescriptor(Bytes.toBytes("keluarga"))); // Buat tabel yang hanya memiliki satu partisi. // Kemampuan pemrosesan paralel dan penyeimbangan beban kluster terbatas jika tabel hanya memiliki satu partisi. Oleh karena itu, kami sarankan Anda mempartisi tabel terlebih dahulu berdasarkan karakteristik data. Jika semua data disimpan di partisi yang sama, pemrosesan paralel dan penyeimbangan beban di antara partisi tidak dapat dilakukan. Ini dapat menyebabkan hambatan kinerja dan data panas. admin.createTable(htd); // Untuk membuat tabel yang memiliki beberapa partisi, lihat kode sampel berikut. // Dalam kode sampel, tabel dipartisi sebelumnya menjadi dua partisi: [-∞, 10) dan [10, ∞). Tentukan rentang partisi berdasarkan bisnis aktual Anda. // int numRegions = 2; // Tentukan jumlah partisi. // byte[][] splitKeys = new byte[numRegions-1][]; // for (int i = 1; i < numRegions; i++) { // splitKeys[i-1] = new byte[]{(byte)(i * 10)}; // } // admin.createTable(tableDescriptor, splitKeys); // Nonaktifkan tabel. admin.disableTable(TableName.valueOf("namatabel")); // Bersihkan semua data dalam tabel. Anda harus menonaktifkan tabel sebelum membersihkan semua datanya. admin.truncateTable(TableName.valueOf("namatabel"), true); // Hapus tabel. Anda harus menonaktifkan tabel sebelum menghapusnya. admin.deleteTable(TableName.valueOf("namatabel")); }Operasi DML
// Tabel adalah objek non-thread-safe. Saat sebuah thread melakukan operasi pada tabel, thread tersebut harus mendapatkan tabel yang diperlukan dari objek Connection. try (Table table = connection.getTable(TableName.valueOf("namatabel"))) { // Masukkan data. Put put = new Put(Bytes.toBytes("baris")); put.addColumn(Bytes.toBytes("keluarga"), Bytes.toBytes("kualifikasi"), Bytes.toBytes("nilai")); table.put(put); // Baca satu baris data. Get get = new Get(Bytes.toBytes("baris")); Result res = table.get(get); // Hapus satu baris data. Delete delete = new Delete(Bytes.toBytes("baris")); table.delete(delete); // Pindai data dalam rentang tertentu. Scan scan = new Scan(Bytes.toBytes("barisAwal"), Bytes.toBytes("barisAkhir")); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // Proses hasilnya. // ... } scanner.close(); }