Exemplo de consulta HBase: comando put(), get(), scan() no HBase

Gravar dados na tabela HBase: Shell

O comando put รฉ usado para armazenar dados em uma tabela

Syntax:  put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

Este comando รฉ usado para as seguintes coisas

  • Ele colocarรก um 'valor' de cรฉlula em uma tabela, linha ou coluna definida ou especificada.
  • Opcionalmente, ele coordenarรก o carimbo de data/hora.

Exemplo:

  • Aqui estamos colocando valores na tabela โ€œguru99โ€ na linha r1 e na coluna c1
    hbase> put 'guru99', 'r1', 'c1', 'value', 10
  • Colocamos trรชs valores, 10,15 e 30 na tabela โ€œguru99โ€ conforme mostrado na imagem abaixo

Gravar dados na tabela HBase: Shell

  • Suponha que a tabela โ€œGuru99โ€ tendo alguma referรชncia de tabela, digamos, g. Tambรฉm podemos executar o comando na referรชncia da tabela, como por exemplo
    hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
  • A saรญda serรก conforme mostrado na imagem acima apรณs colocar os valores em โ€œguru99โ€.

Ler dados da tabela HBase: Shell

Nesta seรงรฃo, verificaremos o seguinte

  • Valores que sรฃo inseridos na tabela HBase โ€œguru99โ€
  • Nomes de colunas com valores presentes na tabela HBase guru99

Ler dados da tabela HBase: Shell

Da captura de tela acima, podemos inferir

  • Se executarmos o comando โ€œscanโ€ no shell HBase, ele exibirรก os valores inseridos em โ€œguru99โ€ como segue
  • No shell HBase, ele exibirรก os valores inseridos pelo nosso cรณdigo com nomes de colunas e linhas
  • Aqui podemos ver que o nome da coluna inserido รฉ โ€œeducaรงรฃoโ€ e โ€œprojetosโ€
  • Os valores inseridos sรฃo โ€œBigDataโ€ e โ€œTutoriais HBaseโ€ nas colunas mencionadas

Vocรช tambรฉm pode usar o comando Get para ler dados de uma tabela

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

Aqui incluem TIMERANGE, TIMESTAMP, VERSร•ES e FILTROS.

Ao usar este comando, vocรช obterรก o conteรบdo de uma linha ou cรฉlula presente na tabela. Alรฉm disso, vocรช tambรฉm pode adicionar parรขmetros adicionais, como TIMESTAMP, TIMERANGE, VERSIONS, FILTERS, etc. para obter uma linha especรญfica ou conteรบdo de cรฉlula.

Ler dados da tabela HBase: Shell

Exemplos:-

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

Para a tabela โ€œguru99 โ€ฒ os valores da linha r1 e da coluna c1 serรฃo exibidos usando este comando conforme mostrado na captura de tela acima

hbase> get 'guru99', 'r1'

Para a tabela โ€œguru99โ€, os valores da linha r1 serรฃo exibidos usando este comando

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

Para a tabela โ€œguru99โ€, os valores da linha 1 no intervalo de tempo ts1 e ts2 serรฃo exibidos usando este comando

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

Para a tabela โ€œguru99โ€, os valores da linha r1 e das famรญlias de colunas c1, c2, c3 serรฃo exibidos usando este comando

Gravar dados na tabela HBase: API JAVA

Nesta etapa, vamos gravar os dados na tabela HBase โ€œguru99โ€

Primeiro, temos que escrever cรณdigo para inserir e recuperar valores do HBase usando-Programa HBaseLoading.java.

Para criar e inserir valores em uma tabela no nรญvel da coluna, vocรช deve codificar como abaixo.

Gravar dados na tabela HBase: API JAVA

Da captura de tela acima

  1. Quando criamos a configuraรงรฃo do HBase, ela apontarรก para quaisquer configuraรงรตes que definimos nos arquivos base-site.xml e hbase-default.xml durante Instalaรงรตes HBase
  2. Criaรงรฃo da tabela โ€œguru99โ€ utilizando o mรฉtodo HTable
  3. Adicionando linha1 ร  tabela โ€œguru99โ€
  4. Especificando os nomes das colunas โ€œeducaรงรฃoโ€ e โ€œprojetosโ€ e inserindo valores nos nomes das colunas na respectiva linha1. Os valores inseridos aqui sรฃo โ€œBigDataโ€ e โ€œHBaseTutorialsโ€.

Leia os dados da tabela HBase: Java API

Quaisquer que sejam os valores que colocamos nas tabelas HBase na seรงรฃo acima, aqui iremos buscar e exibir esses valores.

Para recuperar resultados armazenados em โ€œguru99โ€

Leia os dados da tabela HBase: Java API

A captura de tela acima mostra que os dados estรฃo sendo lidos na tabela HBase 'guru99'

  1. Neste, vamos buscar os valores que estรฃo armazenados em famรญlias de colunas, ou seja, โ€œeducaรงรฃoโ€ e โ€œprojetosโ€
  2. Usando o comando โ€œgetโ€ vamos buscar os valores armazenados na tabela HBase
  3. Resultados da verificaรงรฃo usando o comando โ€œscanโ€. Os valores armazenados em row1 serรฃo exibidos no console.

Depois de escrever o cรณdigo, vocรช deve executar Java aplicaรงรฃo como esta

  • Clique com o botรฃo direito em HBaseLoading.java -> Correr como -> Java Aplicaรงรฃo
  • Apรณs executar โ€œHBaseLoading .javaโ€ os valores serรฃo inseridos em โ€œguru99โ€ em cada coluna do HBase e no mesmo programa tambรฉm poderรก recuperar valores.

Aqui estรก o cรณdigo completo

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 following 							

table.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();							
       }							
   }							
}

Resumo

Conforme discutimos neste tutorial, vocรช pode usar o comando put para inserir dados em uma tabela. Vocรช pode usar o comando scan, get para ler dados de uma tabela

Resuma esta postagem com: