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” tenha alguma referência de tabela como, digamos, g. Também podemos executar o comando na referência da tabela também como
    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