Topik ini menjelaskan cara menghitung jumlah total baris dalam tabel lebar Lindorm.
Catatan penggunaan
Lindorm adalah Database NoSQL yang menggunakan struktur penyimpanan Log-Structured Merge-Tree (LSM-Tree). Untuk mengkueri jumlah pasti baris dalam tabel lebar Lindorm, Anda harus melakukan pemindaian seluruh tabel. Semakin besar tabelnya, semakin lama operasi ini berlangsung. Oleh karena itu, hindari sering menjalankan operasi COUNT pada tabel lebar Lindorm. Anda dapat menggunakan salah satu metode berikut untuk menghitung jumlah baris.
Untuk mendapatkan perkiraan jumlah baris dalam tabel lebar Lindorm, Anda dapat melihat informasi tersebut di halaman Table Overview dalam sistem manajemen kluster Lindorm. Untuk informasi selengkapnya, lihat Melihat perkiraan jumlah baris menggunakan sistem manajemen kluster.
Menghitung jumlah baris menggunakan alat HBase Shell
Sebelum memulai, sambungkan ke LindormTable menggunakan HBase Shell. Untuk informasi selengkapnya, lihat Mengakses LindormTable menggunakan Lindorm Shell.
Anda dapat menggunakan perintah COUNT dalam alat HBase Shell untuk menghitung secara akurat jumlah baris dalam tabel HBase. Perintah COUNT bekerja dengan memindai semua data tabel secara batch untuk mengompilasi statistik. Jalankan perintah COUNT pada klien ECS dalam virtual private cloud (VPC) yang sama. Jika Anda menjalankan perintah COUNT melalui Internet, penggunaan jaringan akan tinggi, sehingga mengurangi efisiensi operasi penghitungan. Kecepatan pemindaian bervariasi tergantung pada skema tabel. Kecepatan pemindaian tabel penuh menggunakan perintah COUNT bisa kurang dari 100.000 baris per detik. Jalankan pernyataan berikut untuk menghitung jumlah total baris dalam tabel.
count 'table'Hasil berikut dikembalikan:
Menghitung jumlah baris menggunakan HBase RowCounter
Sebelum memulai, sambungkan ke LindormTable menggunakan HBase Shell. Untuk informasi selengkapnya, lihat Mengakses LindormTable menggunakan Lindorm Shell.
RowCounter memulai pekerjaan MapReduce lokal pseudo-distributed untuk melakukan operasi COUNT. Secara default, operasi ini single-threaded. Kecepatan penghitungan mirip dengan menjalankan perintah COUNT di HBase Shell. Untuk meningkatkan kecepatan penghitungan, Anda dapat menggunakan beberapa thread dengan menentukan Dmapreduce.local.map.tasks.maximum=number_of_threads. Perhatikan hal berikut:
Jumlah thread harus kurang dari atau sama dengan jumlah region dalam tabel.
Jumlah thread yang lebih besar dapat menyebabkan beban kluster tinggi dan memengaruhi layanan online. Atur jumlah thread sesuai kebutuhan Anda.
Dalam HBase Shell, jalankan kode berikut untuk menghitung jumlah baris dalam tabel lebar Lindorm.
Menghitung jumlah total baris dalam tabel.
./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter "table"Menghitung jumlah total baris dalam tabel menggunakan 16 thread konkuren.
./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter -Dmapreduce.local.map.tasks.maximum=16 "table"Menghitung jumlah total baris dalam tabel yang berada dalam namespace ns.
./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter "ns:table"
Hasil disimpan dalam file hbase.log di direktori log.
Menghitung jumlah baris menggunakan Lindorm SQL
Menghitung jumlah pasti baris
Sebelum memulai, sambungkan ke LindormTable menggunakan Lindorm-cli.
Menghitung baris dengan Lindorm SQL lebih cepat daripada dengan HBase RowCounter karena Lindorm secara otomatis mendistribusikan logika COUNT ke setiap proses Lindorm, yang setara dengan menggunakan beberapa thread. Sebaliknya, HBase Shell bersifat single-threaded. Namun demikian, operasi COUNT tetap memerlukan pemindaian tabel penuh. Batas waktu default untuk pernyataan SQL Lindorm adalah 120 detik. Jika penghitungan tidak selesai dalam 120 detik, pernyataan akan timeout dan mengembalikan kesalahan. Kecepatan penghitungan dengan Lindorm SQL dapat mencapai ratusan ribu baris per detik per server. Karena operasi COUNT didistribusikan, kecepatannya meningkat seiring bertambahnya jumlah server dalam kluster.
Jalankan kode berikut untuk menghitung jumlah baris dalam tabel.
SELECT COUNT(*) FROM table;Hasil berikut dikembalikan:
+--------+
| EXPR$0 |
+--------+
| 16000 |
+--------+Menghitung jumlah baris memerlukan pemindaian tabel penuh. Lakukan operasi ini dengan hati-hati. Jika tabel berisi lebih dari satu juta baris, gunakan indeks pencarian untuk mempercepat kueri. Untuk informasi selengkapnya, lihat Mengkueri data dalam tabel lebar menggunakan indeks pencarian.
Menghitung perkiraan jumlah baris
Fitur ini memerlukan versi LindormTable 2.8.2.6 atau yang lebih baru dan versi Lindorm SQL 2.8.2.6 atau yang lebih baru.
Jalankan pernyataan SQL berikut untuk menghitung perkiraan jumlah baris dalam tabel:
SHOW ESTIMATED ROWS FROM table;Hasil berikut dikembalikan:
+---------------------+
| ESTIMATED_ROW_COUNT |
+---------------------+
| 15000 |
+---------------------+Melihat perkiraan jumlah baris menggunakan sistem manajemen kluster
Sebelum memulai, masuk ke sistem manajemen kluster.
Dalam sistem manajemen kluster Lindorm, Anda dapat melihat perkiraan jumlah baris untuk suatu tabel di halaman Overview. Nilai ini dihitung dengan menjumlahkan metadata jumlah baris dari setiap file data. Nilai ini mungkin tidak akurat. Jika Anda memperbarui atau menghapus data, baris yang sama mungkin ada di beberapa file. Metadata jumlah baris dikumpulkan saat file data dibuat. Jika Anda menggunakan fitur time-to-live (TTL), beberapa data dalam file-file tersebut mungkin telah kedaluwarsa. Oleh karena itu, nilai ini hanya merupakan perkiraan. Namun, jika tabel Anda tidak memiliki pembaruan, penghapusan, atau data kedaluwarsa akibat TTL, jumlah baris yang ditampilkan sepenuhnya akurat. Anda dapat menggunakan nilai ini untuk memeriksa integritas data setelah migrasi data selesai.
Dalam sistem manajemen kluster Lindorm, klik Overview di panel navigasi sebelah kiri. Di area Current IDC, temukan tabel target. Lalu, klik View di kolom EstimateRowCount untuk melihat perkiraan jumlah baris.
Jika tabel Anda berisi data tetapi perkiraan jumlah barisnya 0, versi minor LindormTable mungkin terlalu lama. Dalam kasus ini, Anda dapat meningkatkan versi minor LindormTable. Untuk informasi selengkapnya, lihat Peningkatan versi minor.