Ejemplo de consulta HBase: comandos put(), get() y scan()
⚡ Resumen inteligente
HBase put, get y scan son los comandos principales para escribir y leer datos, lo que le permite almacenar el valor de una celda por fila y columna, obtener una sola fila o explorar muchas filas desde el shell o Java API.
Escribir datos en la tabla HBase: Shell
Estos ejemplos asumen que HBase es instalado y en funcionamiento, el shell de HBase está abierto y un tabla llamada guru99 ya existe con la columna de educación y proyectos para familias.
El comando `put` se utiliza para almacenar datos en una tabla.
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Este comando se utiliza para lo siguiente:
- Pondrá un "valor" de celda en una tabla, fila o columna definida o especificada.
- Opcionalmente, coordinará una marca de tiempo.
Por ejemplo, aquí estamos colocando valores en la tabla “guru99” bajo la fila r1 y la columna c1:
hbase> put 'guru99', 'r1', 'c1', 'value', 10
Hemos introducido tres valores, 10, 15 y 30, en la tabla “guru99”, como se muestra en la captura de pantalla a continuación.
Supongamos que la tabla “guru99” tiene una referencia a la tabla, como por ejemplo g. También puede ejecutar el comando en la referencia a la tabla, de esta manera:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
El resultado aparece como se muestra en la captura de pantalla anterior después de introducir valores en “guru99”.
Leer datos de la tabla HBase: Shell
En esta sección, verificamos lo siguiente en el Caparazón HBase:
- Valores que se insertan en la tabla HBase “guru99”.
- Nombres de las columnas con los valores presentes en la tabla guru99 de HBase.
El resultado del escaneo que se muestra a continuación enumera todos los valores insertados en "guru99", junto con los nombres de sus filas y columnas:
A partir de la captura de pantalla anterior, podemos inferir lo siguiente:
- Si ejecutamos el comando “scan” en la consola de HBase, mostrará los valores insertados en “guru99” de la siguiente manera.
- En la consola de HBase, se mostrarán los valores insertados por nuestro código, junto con los nombres de las columnas y las filas.
- Aquí podemos ver que los nombres de las columnas insertadas son “educación” y “proyectos”.
- Los valores insertados en las columnas mencionadas son “BigData” y “HBase Tutorials”.
También puedes usar el comando get para leer datos de una tabla.
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Aquí, los parámetros adicionales incluyen TIMERANGE, TIMESTAMP, VERSIONS y FILTERS. Mediante este comando, se obtiene una fila o el contenido de una celda de la tabla. Se pueden agregar parámetros adicionales, como TIMESTAMP, TIMERANGE, VERSIONS o FILTERS, para obtener una fila o el contenido de una celda específica. La siguiente tabla resume estos parámetros:
| Parámetro | Propósito |
|---|---|
| INTERVALO DE TIEMPO | Devuelve las celdas cuya marca de tiempo se encuentra dentro de un rango de tiempo de inicio y fin. |
| TIMESTAMP | Devuelve únicamente la versión de la celda almacenada en una marca de tiempo exacta. |
| VERSIONES | Establece cuántas versiones de una celda se deben devolver (el valor predeterminado es 1). |
| FILTROS | Aplica un filtro para restringir las filas o columnas que se devuelven. |
| COLUMNA | Limita el resultado a familias de columnas o calificadores específicos. |
Aquí hay algunos ejemplos prácticos del comando get:
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Para la tabla “guru99”, los valores de la fila r1 y la columna c1 se mostrarán utilizando este comando, como se muestra en la captura de pantalla a continuación.
hbase> get 'guru99', 'r1'
Para la tabla “guru99”, los valores de la fila r1 se mostrarán usando este comando.
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Para la tabla “guru99”, los valores de la fila r1 en el rango de tiempo ts1 a ts2 se mostrarán usando este comando.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Para la tabla “guru99”, los valores de la fila r1 y las familias de columnas c1, c2 y c3 se mostrarán utilizando este comando.
Escribir datos en la tabla HBase: API JAVA
En este paso, vamos a escribir datos en la tabla "guru99" de HBase.
Primero, debemos escribir código para insertar y recuperar valores de HBase, utilizando el programa HBaseLoading.java. Para crear e insertar valores en una tabla a nivel de columna, se utiliza el código que se muestra a continuación.
La captura de pantalla a continuación muestra la Java Código que crea la configuración de HBase e inserta valores en “guru99”:
Según la captura de pantalla anterior:
- Cuando creamos la configuración de HBase, esta apunta a las configuraciones que establecimos en los archivos hbase-site.xml y hbase-default.xml durante la instalación de HBase.
- Creación de la tabla “guru99” utilizando el método HTable.
- Añadiendo la fila 1 a la tabla “guru99”.
- Especificar los nombres de columna “educación” y “proyectos” e insertar valores en los nombres de columna en la fila 1 correspondiente. Los valores insertados aquí son: bigdata y “HBaseTutorials”.
Leer datos de la tabla HBase: Java API
Independientemente de los valores que hayamos introducido en la tabla de HBase en la sección anterior, aquí vamos a recuperarlos y mostrarlos.
La siguiente salida de consola muestra los datos que se leen de la tabla "guru99" de HBase:
Para recuperar los resultados almacenados en “guru99”:
- Aquí vamos a obtener los valores que están almacenados en las familias de columnas, es decir, "educación" y "proyectos".
- Utilizando el comando “get”, vamos a recuperar los valores almacenados en la tabla de HBase.
- Resultados del escaneo mediante el comando “scan”. Los valores almacenados en la fila 1 se mostrarán en la consola.
Una vez escrito el código, lo ejecutas. Java Postulación Me gusta esto:
Haga clic con el botón derecho en HBaseLoading.java -> Ejecutar como -> Java Solicitud.
Tras ejecutar “HBaseLoading.java”, los valores se insertan en “guru99” en cada columna de HBase, y en el mismo programa también se pueden recuperar los valores.
Aquí está el 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 las versiones de la API: El ejemplo anterior utiliza la clase HTable y su método add(), que reflejan la API de cliente de HBase anterior. Desde HBase 1.0, HTable está obsoleto. El código moderno obtiene una tabla mediante ConnectionFactory.createConnection(…).getTable(…) y crea una operación Put con addColumn() en lugar de add(). La lógica de put, get y scan permanece sin cambios.






