Persiapan
Baca topik Memulai Cepat, unduh versi terbaru HBase Shell, lalu konfigurasikan HBase Shell.
Buat pemetaan antara tabel HBase dan indeks Pencarian
Anda dapat menggunakan file JavaScript Object Notation (JSON) untuk membuat pemetaan antara tabel HBase dan indeks Pencarian. Contoh berikut menunjukkan contoh konfigurasi.
{
"sourceNamespace": "default",
"sourceTable": "testTable",
"targetIndexName": "democollection",
"indexType": "SOLR",
"rowkeyFormatterType": "STRING",
"fields": [
{
"source": "f:name",
"targetField": "name_s",
"type": "STRING"
},
{
"source": "f:age",
"targetField": "age_i",
"type": "INT"
}
]
}Dalam contoh sebelumnya, data dalam tabel testTable disinkronkan ke indeks democollection. Kolom f:name, di mana keluarga kolom dan nama kolom dipisahkan dengan titik dua (:), dipetakan ke kolom name_s dalam indeks. Kolom f:age dipetakan ke kolom age_i dalam indeks. Tabel berikut menjelaskan parameter dan nilai validnya.
Parameter | Deskripsi |
sourceNamespace | Namespace tabel HBase. Jika tidak ada namespace yang tersedia untuk tabel, biarkan parameter ini kosong atau atur nilainya ke default. |
sourceTable | Nama tabel HBase tanpa namespace. |
targetIndexName | Nama indeks Pencarian. |
indexType | Nilainya diatur ke |
rowkeyFormatterType | Format rowkey dalam tabel HBase. Anda dapat mengatur parameter ini ke |
fields | Kolom yang akan dipetakan dan tipe kolom dalam indeks Pencarian. Nilainya adalah array JSON. Pisahkan beberapa bidang dengan koma (,). Untuk informasi lebih lanjut, lihat contoh berikut. Untuk informasi lebih lanjut tentang parameter ini, lihat bagian berikut. |
rowkeyFormatterType
rowkeyFormatterType menunjukkan bagaimana rowkey dalam tabel HBase dipetakan ke ID dokumen indeks. ID adalah string. Nilai valid:
STRING: Jika tipe data rowkey dalam tabel HBase adalah STRING, sepertirow1order0001,12345, gunakan nilai ini. Catatan: Dalam contoh sebelumnya, 12345 adalah string, bukan angka. Dalam hal ini, Anda dapat menggunakan fungsi Bytes.toString(byte[]) untuk mengonversi rowkey menjadiIDdokumen indeks. Setelah Anda menemukan dokumen tujuan dalam indeks Pencarian, Anda dapat menggunakan fungsi Bytes.toBytes(String) untuk mengonversiIDdokumen indeks menjadi byte[], yang digunakan sebagai rowkey untuk meminta data asli dalam tabel HBase.HEX: Jika tipe data rowkey dalam tabel HBase bukan STRING, gunakan nilai ini. Misalnya, jika rowkey adalah nilai numerik seperti 12345 atau kombinasi dari beberapa bidang yang mencakup tipe data non-string, atur parameter ini ke HEX. Dalam hal ini, Anda dapat menggunakan fungsi encodeAsString(byte[]) dari paket org.apache.commons.codec.binary.Hex untuk mengonversi rowkey menjadiIDdokumen indeks. Setelah Anda menemukan dokumen tujuan dalam indeks Pencarian, Anda dapat menggunakan fungsi Hex.decodeHex(String.toCharArray()) untuk mengonversi ID dokumen indeks menjadi byte[], yang digunakan sebagai rowkey untuk meminta data asli dalam tabel HBase.
Note: If the data is not written to the HBase table by using the Bytes.toBytes(String) function, the data type is not considered as STRING. To import the rowkey to HBase, set this parameter to HEX. Otherwise, after you convert the ID of the document in the index back to bytes, the result may be different from the original rowkey.
fields
Tabel berikut menjelaskan parameter untuk pemetaan bidang.
Parameter | Deskripsi |
source | Nama kolom yang akan dipetakan dalam tabel HBase. Nama keluarga kolom dan qualifier dipisahkan dengan titik dua (:). Sebagai contoh, |
targetField | Nama kolom dalam indeks. Dalam contoh sebelumnya, kolom yang diberikan adalah |
type | Tipe data kolom saat data ditulis ke tabel HBase. Tipe data ini harus sama dengan tipe data kolom sumber dalam tabel HBase. Nilai validnya adalah INT, LONG, STRING, BOOLEAN, FLOAT, DOUBLE, SHORT, dan BIGDECIMAL. Nilai-nilai tersebut bersifat case-sensitive. |
Pelajari tentang tipe data
HBase tidak menggunakan konsep data type. Sebagai gantinya, tipe data dikonversi menjadi byte. Anda dapat memanggil metode Bytes.toBytes(String/long/int/...) untuk mengonversi semua jenis data menjadi byte, seperti STRING, LONG, dan INT. Dengan cara ini, Anda dapat menyimpan data dalam kolom di tabel HBase. Parameter type menentukan bagaimana data disimpan dalam kolom di tabel HBase. Contoh:
int age = 25;
byte[] ageValue = Bytes.toBytes(age);
put.addColumn(Bytes.toBytes("f"), Bytes.toBytes("age"), ageValue);
String name = "25";
byte[] nameValue = Bytes.toBytes(name);
put.addColumn(Bytes.toBytes("f"), Bytes.toBytes("name"), nameValue);Dalam kode sebelumnya, kolom f:age bertipe INT, sedangkan kolom f:name bertipe STRING bukan tipe INT. Anda harus mengatur parameter type ke nilai valid untuk menyinkronkan data ke indeks Pencarian. Sistem mengonversi byte kembali ke data aslinya berdasarkan tipe yang ditentukan untuk menyinkronkan data ke indeks Pencarian. Dalam contoh sebelumnya, jika Anda mengatur tipe kolom f:name ke INT, sistem memanggil metode Bytes.toInt() untuk mengonversi byte kembali ke data aslinya. Ini menyebabkan data dikonversi ke tipe yang salah.
Pelajari tentang targetField
Parameter targetField menentukan kolom tujuan dalam indeks Pencarian yang akan dipetakan dari kolom sumber dalam tabel HBase. Layanan Pencarian memiliki skema yang kuat. Oleh karena itu, Anda harus menetapkan set konfigurasi managed_schema untuk setiap kolom. Untuk informasi lebih lanjut tentang cara mengonfigurasi skema, lihat Perbarui Set Konfigurasi. Kami merekomendasikan agar Anda menggunakan metode dynamicField dari layanan Pencarian. Metode ini secara otomatis mengidentifikasi tipe kolom berdasarkan akhiran. Sebagai contoh, name_s menunjukkan bahwa tipe kolom dalam indeks adalah STRING.
Tipe kolom sumber dalam tabel HBase tidak perlu cocok dengan tipe data kolom dalam indeks. Sebagai contoh, Anda dapat mengatur tipe kolom sumber f:age ke STRING dan mengatur parameter targetField ke age_i dalam indeks untuk menentukan bahwa tipe kolom adalah INT. Saat kolom sumber disinkronkan ke indeks, layanan Pencarian secara otomatis mengonversi tipe data dari STRING ke INT. Jika data tipe STRING yang tidak dapat dikonversi ke angka ditulis ke kolom f:age, kesalahan terjadi saat kolom disinkronkan ke indeks.
Kelola skema
Modifikasi skema pemetaan
Anda dapat menyimpan skema format JSON yang dijelaskan dalam bagian sebelumnya dalam file bernama schema.json. Kemudian, Anda dapat menjalankan perintah alter_external_index di HBase Shell untuk memodifikasi skema pemetaan HBase. Anda harus meletakkan file schema.json di direktori startup HBase Shell. Anda juga dapat menentukan jalur relatif atau jalur absolut yang menunjuk ke file tersebut.
hbase(main):006:0> alter_external_index 'Nama tabel HBase', 'schema.json'Anda dapat menggunakan file JSON untuk menambah, menghapus, atau memodifikasi beberapa kolom. Anda juga dapat menghapus semua kolom pemetaan dalam parameter fields untuk menghapus semua pemetaan tabel HBase. Contoh:
{
"sourceNamespace": "default",
"sourceTable": "testTable",
"targetIndexName": "democollection",
"indexType": "SOLR",
"rowkeyFormatterType": "STRING",
"fields": []
}Jika Anda ingin menambah satu atau lebih kolom ke skema pemetaan yang ada, Anda dapat menjalankan perintah add_external_index_field.
hbase shell> add_external_index_field 'testTable', {FAMILY => 'f', QUALIFIER => 'money', TARGETFIELD => 'money_f', TYPE => 'FLOAT' }Note: You can run the add_external_index_field command to add columns only for tables whose schema of the mapping is modified by running the alter_external_index command. Each time you modify the schema of the mapping, the HBase table is completely altered. If you want to modify a large number of columns, we recommend that you run the alter_external_index method to complete the modification.
Jika Anda ingin menghapus satu atau lebih kolom dari skema pemetaan yang ada, jalankan perintah remove_external_index.
hbase shell> remove_external_index 'testTable', 'f:name', 'f:age'Note: Each time you modify the schema of the mapping, the HBase table is completely altered. If you want to modify a large number of columns, we recommend that you run the alter_external_index method to complete the modification.
Lihat skema saat ini dari pemetaan
Jalankan perintah describe_external_index di HBase Shell untuk mendapatkan skema lengkap pemetaan dalam format JSON untuk tabel saat ini.
hbase(main):005:0> describe_external_index 'testTable'