HBase - Đọc dữ liệu

Đọc dữ liệu bằng HBase Shell

Các get lệnh và get() phương pháp của HTablelớp được sử dụng để đọc dữ liệu từ một bảng trong HBase. Sử dụngget, bạn có thể nhận được một hàng dữ liệu tại một thời điểm. Cú pháp của nó như sau:

get ’<table name>’,’row1’

Thí dụ

Ví dụ sau đây cho thấy cách sử dụng lệnh get. Hãy để chúng tôi quét hàng đầu tiên củaemp bàn.

hbase(main):012:0> get 'emp', '1'

   COLUMN                     CELL
   
personal : city timestamp = 1417521848375, value = hyderabad

personal : name timestamp = 1417521785385, value = ramu

professional: designation timestamp = 1417521885277, value = manager

professional: salary timestamp = 1417521903862, value = 50000

4 row(s) in 0.0270 seconds

Đọc một cột cụ thể

Dưới đây là cú pháp để đọc một cột cụ thể bằng cách sử dụng get phương pháp.

hbase> get 'table name', ‘rowid’, {COLUMN ⇒ ‘column family:column name ’}

Thí dụ

Dưới đây là ví dụ để đọc một cột cụ thể trong bảng HBase.

hbase(main):015:0> get 'emp', 'row1', {COLUMN ⇒ 'personal:name'}
  COLUMN                CELL  
personal:name timestamp = 1418035791555, value = raju
1 row(s) in 0.0080 seconds

Đọc dữ liệu bằng Java API

Để đọc dữ liệu từ bảng HBase, hãy sử dụng get()phương thức của lớp HTable. Phương thức này yêu cầu một phiên bản củaGetlớp học. Làm theo các bước dưới đây để truy xuất dữ liệu từ bảng HBase.

Bước 1: Khởi tạo lớp cấu hình

Configurationlớp thêm các tệp cấu hình HBase vào đối tượng của nó. Bạn có thể tạo một đối tượng cấu hình bằng cách sử dụngcreate() phương pháp của HbaseConfiguration lớp như hình bên dưới.

Configuration conf = HbaseConfiguration.create();

Bước 2: Khởi tạo lớp HTable

Bạn có một lớp học được gọi là HTable, một triển khai của Bảng trong HBase. Lớp này được sử dụng để giao tiếp với một bảng HBase duy nhất. Trong khi khởi tạo lớp này, nó chấp nhận đối tượng cấu hình và tên bảng làm tham số. Bạn có thể khởi tạo lớp HTable như hình dưới đây.

HTable hTable = new HTable(conf, tableName);

Bước 3: Khởi tạo lớp học

Bạn có thể truy xuất dữ liệu từ bảng HBase bằng cách sử dụng get() phương pháp của HTablelớp học. Phương pháp này trích xuất một ô từ một hàng nhất định. Nó yêu cầu mộtGetđối tượng lớp làm tham số. Tạo nó như hình dưới đây.

Get get = new Get(toBytes("row1"));

Bước 4: Đọc dữ liệu

Trong khi truy xuất dữ liệu, bạn có thể lấy một hàng theo id hoặc lấy một tập hợp các hàng theo một tập hợp id hàng, hoặc quét toàn bộ bảng hoặc một tập hợp con các hàng.

Bạn có thể truy xuất dữ liệu bảng HBase bằng cách sử dụng các biến thể phương thức thêm trong Get lớp học.

Để lấy một cột cụ thể từ một họ cột cụ thể, hãy sử dụng phương pháp sau.

get.addFamily(personal)

Để lấy tất cả các cột từ một họ cột cụ thể, hãy sử dụng phương pháp sau.

get.addColumn(personal, name)

Bước 5: Nhận kết quả

Nhận kết quả bằng cách vượt qua Get cá thể lớp cho phương thức get của HTablelớp học. Phương thức này trả vềResultđối tượng lớp, chứa kết quả được yêu cầu. Dưới đây là cách sử dụng củaget() phương pháp.

Result result = table.get(g);

Bước 6: Đọc Giá trị từ Phiên bản Kết quả

Các Result lớp học cung cấp getValue()để đọc các giá trị từ thể hiện của nó. Sử dụng nó như được hiển thị bên dưới để đọc các giá trị từResult ví dụ.

byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

Dưới đây là chương trình hoàn chỉnh để đọc các giá trị từ bảng HBase.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

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.Result;
import org.apache.hadoop.hbase.util.Bytes;

public class RetriveData{

   public static void main(String[] args) throws IOException, Exception{
   
      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(config, "emp");

      // Instantiating Get class
      Get g = new Get(Bytes.toBytes("row1"));

      // Reading the data
      Result result = table.get(g);

      // Reading values from Result class object
      byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));

      byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

      // Printing the values
      String name = Bytes.toString(value);
      String city = Bytes.toString(value1);
      
      System.out.println("name: " + name + " city: " + city);
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac RetriveData.java
$java RetriveData

Sau đây là đầu ra:

name: Raju city: Delhi