Trong hướng dẫn này, bạn sẽ học:
- Ghi dữ liệu vào bảng HBase: Shell
- Đọc dữ liệu từ Bảng HBase: Shell
- Ghi dữ liệu vào bảng HBase: API JAVA
- Đọc dữ liệu từ Bảng HBase: API JAVA
Ghi dữ liệu vào bảng HBase: Shell
Lệnh put được sử dụng để lưu trữ dữ liệu vào một bảng
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Lệnh này được sử dụng cho những việc sau
- Nó sẽ đặt một ô 'giá trị' tại 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 tem thời gian.
Thí dụ:
- Ở đây chúng tôi đang đặ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ư được hiển thị 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ư nói g. Chúng ta cũng có thể chạy lệnh trên bảng tham chiếu như
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
-
Kết quả sẽ được hiển thị trong ảnh chụp màn hình ở trên sau khi đặt các giá trị vào "guru99".
Đọc dữ liệu từ Bảng HBase: Shell
Trong phần này, chúng tôi sẽ kiểm tra những điều sau
- Các giá trị được chèn vào bảng HBase "guru99"
- Tên cột có giá trị trong HBase Table 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 "scan" trong HBase shell, nó sẽ hiển thị các giá trị được chèn trong "guru99" như sau
- Trong HBase shell, 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 là "giáo dục" và "dự án"
- Các giá trị được chèn là "BigData" và "HBase Tutorials" 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ừ bảng
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Ở đây
Bằng cách sử dụng lệnh này, bạn sẽ nhận được một hàng hoặc nội dung ô 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 'giá trị hàng r1 và cột c1 sẽ hiển thị bằng lệnh này như được hiển thị trong ảnh chụp màn hình ở trên
hbase> get 'guru99', 'r1'
Đối với bảng "guru99", các giá trị r1 sẽ được hiển thị bằng lệnh này
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Đối với bảng "guru99", giá trị hàng 1 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 bảng "guru99" hàng r1 và các giá trị c1, c2, c3 của họ cột sẽ được hiển thị bằng lệnh này
Ghi dữ liệu vào bảng HBase: API JAVA
Trong 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ư dưới đây .
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 pháp HTable
- Thêm row1 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àng tương ứng1. Các giá trị được chèn ở đây là "BigData" và "HBaseTutorials".
Đọc dữ liệu từ Bảng HBase: API Java
Dù các giá trị mà chúng ta đã đặt trong bảng HBase ở phần trên là gì, thì ở đây chúng ta 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 tôi sẽ tìm nạp các giá trị được lưu trữ trong các họ cột, tức là "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 row1 nó sẽ hiển thị trên bảng điều khiển.
Sau khi viết mã xong, bạn phải chạy ứng dụng java như thế này
- Nhấp chuột phải vào HBaseLoading.java -> Run As -> Java Application
- Sau khi chạy "HBaseLoading .java", các giá trị sẽ 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 followingtable.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óm lược:
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 lệnh quét, lấy để đọc dữ liệu từ bảng