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