Contoh Kueri HBase: Perintah put(), get() & scan()

⚡ Ringkasan Cerdas

Perintah HBase put, get, dan scan adalah perintah inti untuk menulis dan membaca data, memungkinkan Anda menyimpan nilai sel berdasarkan baris dan kolom, mengambil satu baris, atau menelusuri banyak baris dari shell atau Java API.

  • ️ Tulis dengan meletakkan: Perintah put menyimpan nilai pada tabel, baris, kolom, dan stempel waktu (opsional).
  • 🔍 Baca dengan get: Perintah get mengembalikan satu baris atau sel, dengan opsi TIMERANGE, VERSIONS, dan FILTERS.
  • 📜 Telusuri dengan pemindaian: Perintah scan menampilkan banyak baris dan nilai kolomnya di seluruh tabel.
  • ☕ Java Lebah: Operasi yang sama dijalankan di Java menggunakan Put, Get, Scan, dan kelas pembantu Bytes.
  • 🧬 Koordinat: Setiap nilai diidentifikasi berdasarkan kunci baris, famili kolom, dan kualifikasi kolom.
  • 🤖 Bantuan AI: Asisten AI menyusun kode untuk memasukkan, mengambil, dan memindai, serta menyarankan desain tombol baris yang efisien.

Perintah query HBase put(), get() dan scan() di shell dan Java

Tulis Data ke Tabel HBase: Shell

Contoh-contoh ini mengasumsikan HBase adalah terpasang dan berjalan, shell HBase terbuka, dan sebuah tabel bernama guru99 sudah ada pada keluarga kolom pendidikan dan proyek.

Perintah put digunakan untuk menyimpan data ke dalam tabel.

Syntax:  put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

Perintah ini digunakan untuk hal-hal berikut:

  • Ini akan menempatkan 'nilai' sel pada tabel atau baris atau kolom yang ditentukan atau ditentukan.
  • Fitur ini secara opsional akan mengkoordinasikan stempel waktu.

Sebagai contoh, di sini kita memasukkan nilai ke dalam tabel “guru99” pada baris r1 dan kolom c1:

hbase> put 'guru99', 'r1', 'c1', 'value', 10

Kami telah memasukkan tiga nilai, 10, 15, dan 30, ke dalam tabel “guru99”, seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Perintah put shell HBase memasukkan nilai 10, 15, dan 30 ke dalam tabel guru99

Misalkan tabel “guru99” memiliki referensi tabel, misalnya g. Anda juga dapat menjalankan perintah pada referensi tabel tersebut, seperti ini:

hbase> g.put 'guru99', 'r1', 'c1', 'value', 10

Hasilnya akan terlihat seperti yang ditunjukkan pada tangkapan layar di atas setelah memasukkan nilai ke dalam “guru99”.

Baca Data dari Tabel HBase: Shell

Di bagian ini, kita akan memeriksa hal-hal berikut ini: cangkang HBase:

  • Nilai yang dimasukkan ke dalam tabel HBase “guru99”.
  • Nama kolom beserta nilai yang ada di tabel HBase guru99.

Output pemindaian di bawah ini mencantumkan setiap nilai yang dimasukkan ke dalam “guru99”, beserta nama baris dan kolomnya:

Output perintah scan shell HBase yang menampilkan nilai baris dan kolom dalam tabel guru99

Dari tangkapan layar di atas, kita dapat menyimpulkan hal-hal berikut:

  • Jika kita menjalankan perintah “scan” di shell HBase, maka nilai yang dimasukkan ke dalam “guru99” akan ditampilkan sebagai berikut.
  • Di dalam shell HBase, akan ditampilkan nilai-nilai yang dimasukkan oleh kode kita, beserta nama kolom dan barisnya.
  • Di sini kita dapat melihat nama kolom yang dimasukkan adalah “pendidikan” dan “proyek”.
  • Nilai yang dimasukkan adalah “BigData” dan “HBase Tutorials” ke dalam kolom yang disebutkan.

Anda juga dapat menggunakan perintah get untuk membaca data dari sebuah tabel.

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

Di sini, parameter tambahan meliputi TIMERANGE, TIMESTAMP, VERSIONS, dan FILTERS. Dengan menggunakan perintah ini, Anda mendapatkan baris atau isi sel yang ada dalam tabel. Anda dapat menambahkan parameter tambahan, seperti TIMESTAMP, TIMERANGE, VERSIONS, atau FILTERS, untuk mengambil baris atau isi sel tertentu. Tabel di bawah ini merangkum parameter-parameter tersebut:

Parameter Tujuan
RENTANG WAKTU Mengembalikan sel-sel yang stempel waktunya berada di antara waktu mulai dan waktu akhir yang ditentukan.
URUTAN WAKTU Hanya mengembalikan versi sel yang tersimpan pada stempel waktu yang tepat.
VERSI Menentukan berapa banyak versi sel yang akan dikembalikan (nilai default adalah 1).
FILTER Menerapkan filter untuk membatasi baris atau kolom mana yang akan dikembalikan.
KOLOM Membatasi hasil pada kelompok kolom atau kualifikasi tertentu.

Berikut beberapa contoh penggunaan perintah get:

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

Untuk tabel “guru99”, nilai baris r1 dan kolom c1 akan ditampilkan menggunakan perintah ini, seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Perintah `get` shell HBase mengembalikan satu baris `r1` dari tabel guru99.

hbase> get 'guru99', 'r1'

Untuk tabel “guru99”, nilai baris r1 akan ditampilkan menggunakan perintah ini.

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

Untuk tabel “guru99”, nilai baris r1 dalam rentang waktu ts1 hingga ts2 akan ditampilkan menggunakan perintah ini.

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

Untuk tabel “guru99”, nilai baris r1 dan keluarga kolom c1, c2, dan c3 akan ditampilkan menggunakan perintah ini.

Tulis Data ke Tabel HBase: JAVA API

Pada langkah ini, kita akan menulis data ke dalam tabel HBase “guru99”.

Pertama, kita harus menulis kode untuk memasukkan dan mengambil nilai dari HBase, menggunakan program HBaseLoading.java. Untuk membuat dan memasukkan nilai ke dalam tabel pada tingkat kolom, Anda dapat menulis kode seperti yang ditunjukkan di bawah ini.

Tangkapan layar di bawah ini menunjukkan Java Kode yang membangun konfigurasi HBase dan memasukkan nilai ke dalam “guru99”:

Java Kode yang membuat konfigurasi HBase dan memasukkan nilai menggunakan API Put.

Dari tangkapan layar di atas:

  • Saat kita membuat konfigurasi HBase, konfigurasi tersebut mengarah ke konfigurasi apa pun yang kita tetapkan dalam file hbase-site.xml dan hbase-default.xml selama instalasi HBase.
  • Pembuatan tabel “guru99” menggunakan metode HTable.
  • Menambahkan baris 1 ke tabel “guru99”.
  • Menentukan nama kolom “pendidikan” dan “proyek” dan memasukkan nilai ke dalam nama kolom di baris1 yang bersangkutan. Nilai yang dimasukkan di sini adalah BigData dan “HBaseTutorials”.

Baca Data dari Tabel HBase: Java API

Nilai apa pun yang kita masukkan ke dalam tabel HBase di bagian atas, di sini kita akan mengambil dan menampilkan nilai-nilai tersebut.

Output konsol di bawah ini menunjukkan data yang dibaca kembali dari tabel HBase “guru99”:

Java Output konsol membaca nilai kolom pendidikan dan proyek dari tabel HBase guru99

Untuk mengambil hasil yang tersimpan di “guru99”:

  • Di sini kita akan mengambil nilai-nilai yang tersimpan dalam keluarga kolom, yaitu “pendidikan” dan “proyek”.
  • Dengan menggunakan perintah “get”, kita akan mengambil nilai-nilai yang tersimpan dalam tabel HBase.
  • Memindai hasil menggunakan perintah “scan”. Nilai yang tersimpan di baris 1 akan ditampilkan di konsol.

Setelah kode ditulis, Anda menjalankannya. Java aplikasi seperti ini:

Klik kanan pada HBaseLoading.java -> Jalankan Sebagai -> Java Aplikasi.

Setelah menjalankan “HBaseLoading.java”, nilai-nilai dimasukkan ke dalam “guru99” di setiap kolom di HBase, dan dalam program yang sama, nilai-nilai tersebut juga dapat diambil.

Berikut kode lengkapnya:

import java.io.IOException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseLoading
{
public static void main(String[] args) throws IOException
{
/* When you create a HBaseConfiguration, it reads in whatever you've set into your hbase-site.xml and in hbase-default.xml, as long as these can be found on the CLASSPATH*/

org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();

/*This instantiates an HTable object that connects you to the "test" table*/

HTable table = new HTable(config, "guru99");

/* To add to a row, use Put. A Put constructor takes the name of the row you want to insert into as a byte array.*/

Put p = new Put(Bytes.toBytes("row1"));

/*To set the value you'd like to update in the row 'row1', specify the column family, column qualifier, and value of the table cell you'd like to update. The column family must already exist in your table schema. The qualifier can be anything.*/

p.add(Bytes.toBytes("education"), Bytes.toBytes("col1"),Bytes.toBytes("BigData"));
p.add(Bytes.toBytes("projects"),Bytes.toBytes("col2"),Bytes.toBytes("HBaseTutorials"));

// Once you've adorned your Put instance with all the updates you want to make, to commit it do the following

table.put(p);

// Now, to retrieve the data we just wrote.

Get g = new Get(Bytes.toBytes("row1"));
Result r = table.get(g);

byte [] value = r.getValue(Bytes.toBytes("education"),Bytes.toBytes("col1"));
byte [] value1 = r.getValue(Bytes.toBytes("projects"),Bytes.toBytes("col2"));
String valueStr = Bytes.toString(value);

String valueStr1 = Bytes.toString(value1);
System.out.println("GET: " +"education: "+ valueStr+"projects: "+valueStr1);

Scan s = new Scan();

s.addColumn(Bytes.toBytes("education"), Bytes.toBytes("col1"));
s.addColumn(Bytes.toBytes("projects"), Bytes.toBytes("col2"));
ResultScanner scanner = table.getScanner(s);
try
{
for (Result rr = scanner.next(); rr != null; rr = scanner.next())
{
System.out.println("Found row : " + rr);
}
} finally
{
// Make sure you close your scanners when you are done!

scanner.close();
}
}
}

Catatan tentang versi API: Contoh di atas menggunakan kelas HTable dan metode add(), yang mencerminkan API klien HBase yang lebih lama. Sejak HBase 1.0, HTable sudah usang. Kode modern mendapatkan Tabel melalui ConnectionFactory.createConnection(…).getTable(…) dan membangun Put dengan addColumn() alih-alih add(). Logika put, get, dan scan tetap sama.

Pertanyaan Umum Demo Slot

Perintah `get` mengambil satu baris berdasarkan kunci barisnya dan segera kembali. Perintah `scan` membaca banyak baris secara berurutan di seluruh tabel atau rentang kunci, yang secara opsional difilter berdasarkan kolom atau waktu. Gunakan `get` untuk pencarian tunggal dan `scan` untuk menelusuri atau mengekspor beberapa baris.

Family kolom adalah kelompok kolom bernama yang disimpan bersama dan didefinisikan saat Anda membuat tabel. Kualifikasi kolom adalah nama kolom individual di dalam family tersebut, seperti education:col1. Family harus ada dalam skema; ​​kualifikasi dapat ditambahkan secara bebas pada saat penulisan.

Gunakan perintah delete untuk menghapus satu sel, misalnya delete 'guru99', 'r1', 'c1'. Gunakan deleteall untuk menghapus seluruh baris: deleteall 'guru99', 'r1'. Untuk mengosongkan tabel sepenuhnya, nonaktifkan tabel tersebut, lalu jalankan truncate 'guru99', yang akan menghapus dan membuat ulang tabel tersebut.

HBase menyimpan beberapa versi sel yang diberi stempel waktu. Jumlah yang disimpan ditentukan per keluarga kolom oleh atribut VERSIONS, yang secara default bernilai 1. Tambahkan {VERSIONS => 3} ke perintah get atau scan untuk mengembalikan beberapa versi, atau TIMESTAMP untuk mengambil satu versi yang tepat.

Jalankan perintah `list` untuk melihat semua tabel di HBase. Jalankan `count 'guru99'` untuk menghitung jumlah baris dalam sebuah tabel, opsional dengan `INTERVAL` untuk melihat progres. Gunakan `describe 'guru99'` untuk melihat keluarga kolom, dan `status 'simple'` untuk memeriksa kesehatan klaster.

HBase tidak memiliki SQL bawaan, tetapi Apache Phoenix menambahkan lapisan SQL yang mengkompilasi kueri menjadi operasi put, get, dan scan bawaan. Ini mendukung sintaks SELECT, UPSERT, dan JOIN yang sudah dikenal, sehingga memudahkan tim yang sudah mahir dalam SQL untuk melakukan kueri di HBase.

Asisten pengkodean AI dan model bahasa besar dapat menyusun perintah shell HBase dan Java Kode klien dari perintah bahasa sederhana, menyarankan desain kunci baris, dan menjelaskan filter pemindaian. Pembelajaran mesin juga membantu menyempurnakan kinerja dengan memprediksi area yang sering diakses, meskipun seorang insinyur harus memverifikasi setiap kueri yang dihasilkan.

Ya. Kopilot GitHub dapat menghasilkan cuplikan HBase put, get, dan scan di Java atau shell dari komentar singkat, termasuk panggilan Bytes.toBytes dan filter Scan. RevPeriksa output untuk nama tabel, keluarga kolom, dan API Tabel yang benar sebelum menjalankannya.

Ringkaslah postingan ini dengan: