Exemplo de consulta HBase: comandos put(), get() e scan()
โก Resumo Inteligente
Os comandos HBase put, get e scan sรฃo os principais para leitura e gravaรงรฃo de dados, permitindo armazenar o valor de uma cรฉlula por linha e coluna, buscar uma รบnica linha ou navegar por vรกrias linhas a partir do shell ou Java API.

Gravar dados na tabela HBase: Shell
Esses exemplos pressupรตem que o HBase esteja instalado e funcionando, o shell do HBase estรก aberto e um tabela chamada guru99 jรก existe uma coluna com projetos e educaรงรฃo para famรญlias.
O comando put รฉ usado para armazenar dados em uma tabela.
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Este comando รฉ usado para os seguintes fins:
- Ele colocarรก um 'valor' de cรฉlula em uma tabela, linha ou coluna definida ou especificada.
- Opcionalmente, poderรก incluir um registro de data e hora.
Por exemplo, aqui estamos inserindo valores na tabela โguru99โ na linha r1 e coluna c1:
hbase> put 'guru99', 'r1', 'c1', 'value', 10
Inserimos trรชs valores, 10, 15 e 30, na tabela โguru99โ, conforme mostrado na captura de tela abaixo.
Suponha que a tabela โguru99โ tenha uma referรชncia de tabela, como g. Vocรช tambรฉm pode executar o comando na referรชncia da tabela, assim:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
O resultado aparece conforme mostrado na captura de tela acima apรณs inserir valores em โguru99โ.
Ler dados da tabela HBase: Shell
Nesta seรงรฃo, verificamos o seguinte no Shell do HBase:
- Valores que sรฃo inseridos na tabela HBase โguru99โ.
- Nomes das colunas com os valores presentes na tabela HBase guru99.
A saรญda da anรกlise abaixo lista todos os valores inseridos em โguru99โ, juntamente com os nomes de suas linhas e colunas:
A partir da captura de tela acima, podemos inferir o seguinte:
- Se executarmos o comando โscanโ no shell do HBase, ele exibirรก os valores inseridos em โguru99โ da seguinte forma.
- No shell do HBase, serรฃo exibidos os valores inseridos pelo nosso cรณdigo, juntamente com os nomes das colunas e linhas.
- Aqui podemos ver que os nomes das colunas inseridos sรฃo โeducaรงรฃoโ e โprojetosโ.
- Os valores inseridos nas colunas mencionadas foram โBigDataโ e โTutoriais HBaseโ.
Vocรช tambรฉm pode usar o comando get para ler dados de uma tabela.
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Aqui, os parรขmetros adicionais incluem TIMERANGE, TIMESTAMP, VERSIONS e FILTERS. Usando este comando, vocรช obtรฉm uma linha ou o conteรบdo de uma cรฉlula presente na tabela. Vocรช pode adicionar parรขmetros adicionais, como TIMESTAMP, TIMERANGE, VERSIONS ou FILTERS, para buscar uma linha ou o conteรบdo de uma cรฉlula especรญfica. A tabela abaixo resume esses parรขmetros:
| Parรขmetro | Propรณsito |
|---|---|
| INTERVALO DE TEMPO | Retorna as cรฉlulas cujo carimbo de data/hora estรก dentro de um intervalo de tempo inicial e final. |
| TIMESTAMP | Retorna apenas a versรฃo da cรฉlula armazenada em um determinado momento. |
| VERSรES | Define quantas versรตes de uma cรฉlula devem ser retornadas (o padrรฃo รฉ 1). |
| FILTROS | Aplica um filtro para restringir quais linhas ou colunas sรฃo retornadas. |
| COLUNA | Limita o resultado a famรญlias de colunas ou qualificadores especรญficos. |
Aqui estรฃo alguns exemplos prรกticos do comando get:
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 abaixo.
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 r1 no intervalo de tempo ts1 a 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 e c3 serรฃo exibidos usando este comando.
Gravar dados na tabela HBase: API JAVA
Nesta etapa, vamos gravar dados na tabela HBase โguru99โ.
Primeiro, precisamos escrever o cรณdigo para inserir e recuperar valores do HBase, usando o programa HBaseLoading.java. Para criar e inserir valores em uma tabela no nรญvel da coluna, o cรณdigo deve ser escrito conforme mostrado abaixo.
A captura de tela abaixo mostra o Java Cรณdigo que constrรณi a configuraรงรฃo do HBase e insere valores em โguru99โ:
Conforme a captura de tela acima:
- Ao criarmos a configuraรงรฃo do HBase, ela aponta para quaisquer configuraรงรตes que tenhamos definido nos arquivos hbase-site.xml e hbase-default.xml durante a instalaรงรฃo do HBase.
- Criaรงรฃo da tabela โguru99โ usando o mรฉtodo HTable.
- Adicionando a linha 1 ร tabela โguru99โ.
- Especificando os nomes das colunas โeducationโ e โprojectsโ e inserindo valores nos nomes das colunas na respectiva linha1. Os valores inseridos aqui sรฃo BigData e โTutoriais HBaseโ.
Leia os dados da tabela HBase: Java API
Quaisquer valores que tenhamos inserido na tabela HBase na seรงรฃo anterior serรฃo recuperados e exibidos aqui.
A saรญda do console abaixo mostra os dados sendo lidos da tabela HBase โguru99โ:
Para recuperar resultados armazenados em โguru99โ:
- Aqui, vamos buscar os valores armazenados nas famรญlias de colunas, ou seja, โeducationโ e โprojectsโ.
- Utilizando o comando โgetโ, vamos buscar os valores armazenados na tabela HBase.
- Resultados da leitura usando o comando โscanโ. Os valores armazenados na linha 1 serรฃo exibidos no console.
Depois de escrever o cรณdigo, vocรช executa o Java Formulรกrio on line como isso:
Clique com o botรฃo direito do mouse em HBaseLoading.java -> Executar como -> Java Aplicaรงรฃo.
Apรณs executar o arquivo โHBaseLoading.javaโ, os valores sรฃo inseridos em โguru99โ em cada coluna do HBase, e o mesmo programa tambรฉm pode recuperar os 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(); } } }
Nota sobre as versรตes da API: O exemplo acima usa a classe HTable e seu mรฉtodo add(), que refletem a API de cliente HBase mais antiga. Desde o HBase 1.0, o HTable estรก obsoleto. O cรณdigo moderno obtรฉm uma tabela por meio de ConnectionFactory.createConnection(โฆ).getTable(โฆ) e constrรณi uma operaรงรฃo Put com addColumn() em vez de add(). A lรณgica de put, get e scan permanece a mesma.





