Topik ini menjelaskan cara menggunakan HBase Java API untuk mengakses LindormTable dan menyertakan contoh penggunaannya.
Prasyarat
Java Development Kit (JDK) versi 1.8 atau yang lebih baru telah diinstal.
Anda telah memperoleh titik akhir untuk akses HBase Java API.
Anda telah menambahkan alamat IP klien ke daftar putih Lindorm.
Anda telah menginstal HBase Java SDK.
Prosedur
Konfigurasikan klien agar terhubung ke instans Lindorm dengan salah satu cara berikut.
Tambahkan item konfigurasi berikut ke file konfigurasi
hbase-site.xml.<configuration> <!-- Titik akhir kluster. Peroleh dari halaman Koneksi Database di Konsol. Perhatikan perbedaan antara titik akhir publik dan VPC. --> <property> <name>hbase.zookeeper.quorum</name> <value>ld-xxxx-proxy-hbaseue.lindormue.xxx.rds.aliyuncs.com:30020</value> </property> <!-- Tetapkan nama pengguna dan kata sandi. Nilai default keduanya adalah root. Ubah sesuai kebutuhan. --> <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 baru. Configuration conf = HBaseConfiguration.create(); // Titik akhir instans. Anda dapat memperolehnya dari halaman Koneksi Database di Konsol. conf.set("hbase.zookeeper.quorum", "host:port"); // xml_template.comment.hbaseue.username_password.default conf.set("hbase.client.username", "username"); conf.set("hbase.client.password", "password");Parameter
Contoh
Cara mendapatkan 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 di 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 guna mengakses LindormTable. Anda dapat menggunakan kode Java sampel berikut.
Operasi DDL
try (Admin admin = connection.getAdmin()){ // Buat tabel. HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("tablename")); htd.addFamily(new HColumnDescriptor(Bytes.toBytes("family"))); // Buat tabel dengan hanya satu partisi. // Satu region membatasi kemampuan pemrosesan paralel dan penyeimbangan beban kluster. Oleh karena itu, pra-partisi tabel berdasarkan karakteristik data Anda saat membuatnya. Jika semua data disimpan dalam satu partisi, pemrosesan paralel dan penyeimbangan beban di beberapa partisi tidak dapat dicapai. Hal ini dapat menyebabkan bottleneck performa dan hot spot data. admin.createTable(htd); // Untuk membuat tabel dengan beberapa partisi: // Contoh berikut menunjukkan cara pra-partisi tabel menjadi dua partisi: [-∞, 10) dan [10, ∞). Hasilkan informasi partisi sesuai kebutuhan. // int numRegions = 2; // Tetapkan jumlah region yang akan dibuat. // 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("tablename")); // Truncate tabel untuk menghapus semua data. Anda harus menonaktifkan tabel sebelum melakukan truncate. admin.truncateTable(TableName.valueOf("tablename"), true); // Hapus tabel. Anda harus menonaktifkan tabel sebelum menghapusnya. admin.deleteTable(TableName.valueOf("tablename")); }Operasi DML
// Objek Table tidak thread-safe. Setiap thread harus mendapatkan objek Table-nya sendiri dari Connection saat melakukan operasi tabel. try (Table table = connection.getTable(TableName.valueOf("tablename"))) { // Masukkan data. Put put = new Put(Bytes.toBytes("row")); put.addColumn(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value")); table.put(put); // Baca satu baris. Get get = new Get(Bytes.toBytes("row")); Result res = table.get(get); // Hapus satu baris. Delete delete = new Delete(Bytes.toBytes("row")); table.delete(delete); // Pindai rentang data. Scan scan = new Scan(Bytes.toBytes("startRow"), Bytes.toBytes("endRow")); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // Proses hasil kueri. // ... } scanner.close(); }