HBase - Leer datos

Leer datos usando HBase Shell

los get comando y el get() método de HTableclass se utilizan para leer datos de una tabla en HBase. Utilizandogetcomando, puede obtener una sola fila de datos a la vez. Su sintaxis es la siguiente:

get ’<table name>’,’row1’

Ejemplo

El siguiente ejemplo muestra cómo utilizar el comando get. Examinemos la primera fila delemp 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

Leer una columna específica

A continuación se muestra la sintaxis para leer una columna específica usando el get método.

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

Ejemplo

A continuación se muestra el ejemplo para leer una columna específica en la tabla 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

Leer datos con la API de Java

Para leer datos de una tabla HBase, use el get()método de la clase HTable. Este método requiere una instancia delGetclase. Siga los pasos que se indican a continuación para recuperar datos de la tabla HBase.

Paso 1: crear una instancia de la clase de configuración

ConfigurationLa clase agrega archivos de configuración de HBase a su objeto. Puede crear un objeto de configuración utilizando elcreate() método del HbaseConfiguration clase como se muestra a continuación.

Configuration conf = HbaseConfiguration.create();

Paso 2: crear una instancia de la clase HTable

Tienes una clase llamada HTable, una implementación de Table en HBase. Esta clase se usa para comunicarse con una sola tabla HBase. Al crear una instancia de esta clase, acepta el objeto de configuración y el nombre de la tabla como parámetros. Puede crear una instancia de la clase HTable como se muestra a continuación.

HTable hTable = new HTable(conf, tableName);

Paso 3: crear una instancia de la clase Get

Puede recuperar datos de la tabla HBase usando el get() método del HTableclase. Este método extrae una celda de una fila determinada. Requiere unGetobjeto de clase como parámetro. Créelo como se muestra a continuación.

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

Paso 4: lea los datos

Mientras recupera datos, puede obtener una sola fila por id, u obtener un conjunto de filas por un conjunto de identificadores de fila, o escanear una tabla completa o un subconjunto de filas.

Puede recuperar los datos de una tabla HBase utilizando las variantes del método de adición en Get clase.

Para obtener una columna específica de una familia de columnas específica, use el siguiente método.

get.addFamily(personal)

Para obtener todas las columnas de una familia de columnas específica, use el siguiente método.

get.addColumn(personal, name)

Paso 5: obtenga el resultado

Obtenga el resultado pasando su Get instancia de clase al método get del HTableclase. Este método devuelve elResultobjeto de clase, que contiene el resultado solicitado. A continuación se muestra el uso deget() método.

Result result = table.get(g);

Paso 6: lectura de valores de la instancia de resultado

los Result clase proporciona el getValue()método para leer los valores de su instancia. Úselo como se muestra a continuación para leer los valores delResult ejemplo.

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

A continuación se muestra el programa completo para leer valores de una tabla 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 y ejecute el programa anterior como se muestra a continuación.

$javac RetriveData.java
$java RetriveData

El siguiente debería ser el resultado:

name: Raju city: Delhi