Ví dụ truy vấn HBase: put(), get(), scan() Lệnh trong HBase
Ghi dữ liệu vào bảng HBase: Shell
Lệnh put dùng để lưu dữ liệu vào bảng
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Lệnh này được sử dụng cho những mục đích sau
- Nó sẽ đặt một 'giá trị' của ô vào một bảng hoặc hàng hoặc cột được xác định hoặc chỉ định.
- Nó sẽ tùy chọn phối hợp dấu thời gian.
Ví dụ:
- Ở đây chúng tôi đặt các giá trị vào bảng “guru99” dưới hàng r1 và cột c1
hbase> put 'guru99', 'r1', 'c1', 'value', 10
- Chúng tôi đã đặt ba giá trị, 10,15 và 30 trong bảng “guru99” như trong ảnh chụp màn hình bên dưới
- Giả sử nếu bảng “Guru99” có một số tham chiếu bảng như g. Chúng ta cũng có thể chạy lệnh trên tham chiếu bảng như
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
- Đầu ra sẽ như trong ảnh chụp màn hình ở trên sau khi đặt giá trị vào “guru99”.
Đọc dữ liệu từ bảng HBase: Shell
Trong phần này, chúng ta sẽ kiểm tra những điều sau đây
- Các giá trị được chèn vào bảng HBase “guru99”
- Tên cột với các giá trị có trong Bảng HBase guru99
Từ ảnh chụp màn hình ở trên, chúng ta có thể suy ra
- Nếu chúng ta chạy lệnh “quét” trong shell HBase, nó sẽ hiển thị các giá trị được chèn vào trong “guru99” như sau
- Trong shell HBase, nó sẽ hiển thị các giá trị được chèn bởi mã của chúng tôi với tên cột và hàng
- Ở đây chúng ta có thể thấy tên cột được chèn vào là “education” và “projects”
- Các giá trị được chèn vào là “BigData” và “Hướng dẫn HBase” vào các cột được đề cập
Bạn cũng có thể sử dụng lệnh Get để đọc dữ liệu từ một bảng
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Đây bao gồm THỜI GIAN, DẤU THỜI GIAN, PHIÊN BẢN và BỘ LỌC.
Bằng cách sử dụng lệnh này, bạn sẽ nhận được nội dung hàng hoặc ô có trong bảng. Ngoài ra, bạn cũng có thể thêm các tham số bổ sung vào nó như TIMESTAMP, TIMERANGE,VERSIONS, FILTERS, v.v. để có được một hàng hoặc nội dung ô cụ thể.
Ví dụ: -
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Đối với bảng “guru99′, các giá trị hàng r1 và cột c1 sẽ hiển thị bằng lệnh này như trong ảnh chụp màn hình ở trên
hbase> get 'guru99', 'r1'
Đối với bảng “guru99”, giá trị hàng r1 sẽ được hiển thị bằng lệnh này
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Đối với các giá trị hàng 99 của bảng “guru1” trong phạm vi thời gian ts1 và ts2 sẽ được hiển thị bằng lệnh này
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Đối với các giá trị c99, c1, c1 của dòng “guru2” trong bảng “guru3” sẽ được hiển thị bằng lệnh này
Ghi dữ liệu vào bảng HBase: API JAVA
Ở bước này, chúng ta sẽ ghi dữ liệu vào bảng HBase “guru99”
Đầu tiên, chúng ta phải viết mã để chèn và lấy các giá trị từ HBase bằng cách sử dụng-Chương trình HBaseLoading.java.
Để tạo và chèn giá trị vào bảng ở cấp cột, bạn phải viết mã như bên dưới.
Từ ảnh chụp màn hình ở trên
- Khi chúng tôi tạo cấu hình HBase, nó sẽ trỏ đến bất kỳ cấu hình nào chúng tôi đặt trong tệp base-site.xml và hbase-default.xml trong quá trình Cài đặt HBase
- Tạo bảng “guru99” bằng phương thức HTable
- Thêm hàng1 vào bảng “guru99”
- Chỉ định tên cột “giáo dục” và “dự án” và chèn giá trị vào tên cột trong hàng1 tương ứng. Các giá trị được chèn ở đây là “BigData” và “HBaseTutorials”.
Đọc dữ liệu từ bảng HBase: Java API
Bất kể giá trị nào chúng tôi đã đặt trong bảng HBase ở phần trên, ở đây chúng tôi sẽ tìm nạp và hiển thị các giá trị đó.
Để truy xuất kết quả được lưu trữ trong “guru99”
Ảnh chụp màn hình ở trên cho thấy dữ liệu đang được đọc từ bảng HBase 'guru99'
- Trong phần này, chúng ta sẽ tìm nạp các giá trị được lưu trữ trong các họ cột, ví dụ như “giáo dục” và “dự án”
- Sử dụng lệnh “get”, chúng ta sẽ tìm nạp các giá trị được lưu trữ trong bảng HBase
- Quét kết quả bằng lệnh “quét”. Các giá trị được lưu trữ trong hàng1 sẽ hiển thị trên bảng điều khiển.
Sau khi viết mã xong, bạn phải chạy Java ứng dụng như thế này
- Nhấp chuột phải vào HBaseLoading.java -> Chạy như -> Java Các Ứng Dụng
- Sau khi chạy “HBaseLoading .java”, các giá trị sẽ được chèn vào “guru99” trong mỗi cột trong HBase và trong cùng một chương trình, nó cũng có thể truy xuất các giá trị.
Đây là mã hoàn chỉnh
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(); } } }
Tổng kết
Như chúng ta đã thảo luận trong hướng dẫn này, bạn có thể sử dụng lệnh put để chèn dữ liệu vào bảng. Bạn có thể sử dụng tính năng quét, nhận lệnh để đọc dữ liệu từ bảng