HBase - Ler Dados

Leitura de dados usando HBase Shell

o get comando e o get() método de HTableclasse são usados ​​para ler dados de uma tabela no HBase. Usandogetcomando, você pode obter uma única linha de dados por vez. Sua sintaxe é a seguinte:

get ’<table name>’,’row1’

Exemplo

O exemplo a seguir mostra como usar o comando get. Vamos examinar a primeira linha doemp mesa.

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

Lendo uma coluna específica

Dada a seguir é a sintaxe para ler uma coluna específica usando o get método.

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

Exemplo

Dada a seguir é o exemplo para ler uma coluna específica na tabela 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

Lendo dados usando a API Java

Para ler dados de uma tabela HBase, use o get()método da classe HTable. Este método requer uma instância doGetclasse. Siga as etapas fornecidas abaixo para recuperar os dados da tabela HBase.

Etapa 1: instanciar a classe de configuração

Configurationclasse adiciona arquivos de configuração HBase a seu objeto. Você pode criar um objeto de configuração usando ocreate() método do HbaseConfiguration classe como mostrado abaixo.

Configuration conf = HbaseConfiguration.create();

Etapa 2: instancie a classe HTable

Você tem uma classe chamada HTable, uma implementação da Tabela no HBase. Esta classe é usada para se comunicar com uma única tabela HBase. Ao instanciar essa classe, ele aceita o objeto de configuração e o nome da tabela como parâmetros. Você pode instanciar a classe HTable conforme mostrado abaixo.

HTable hTable = new HTable(conf, tableName);

Etapa 3: instanciar a classe Get

Você pode recuperar dados da tabela HBase usando o get() método do HTableclasse. Este método extrai uma célula de uma determinada linha. Requer umGetobjeto de classe como parâmetro. Crie-o conforme mostrado abaixo.

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

Etapa 4: leia os dados

Ao recuperar dados, você pode obter uma única linha por id, ou obter um conjunto de linhas por um conjunto de ids de linha, ou varrer uma tabela inteira ou um subconjunto de linhas.

Você pode recuperar os dados de uma tabela HBase usando as variantes do método add em Get classe.

Para obter uma coluna específica de uma família de colunas específica, use o seguinte método.

get.addFamily(personal)

Para obter todas as colunas de uma família de colunas específica, use o seguinte método.

get.addColumn(personal, name)

Etapa 5: Obtenha o resultado

Obtenha o resultado passando seu Get instância de classe para o método get do HTableclasse. Este método retorna oResultobjeto de classe, que contém o resultado solicitado. A seguir está o uso deget() método.

Result result = table.get(g);

Etapa 6: Lendo os valores da instância do resultado

o Result classe fornece o getValue()método para ler os valores de sua instância. Use-o conforme mostrado abaixo para ler os valores doResult instância.

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

A seguir está o programa completo para ler valores de uma tabela 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);
   }
}

Compile e execute o programa acima conforme mostrado abaixo.

$javac RetriveData.java
$java RetriveData

O seguinte deve ser o resultado:

name: Raju city: Delhi