Ejemplo de consulta de HBase: comando put(), get(), scan() en HBase
Escribir datos en la tabla HBase: Shell
El comando put se utiliza para almacenar datos en una tabla.
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Este comando se utiliza para las siguientes cosas
- Pondrá un "valor" de celda en una tabla, fila o columna definida o especificada.
- Opcionalmente coordinará la marca de tiempo.
Ejemplo:
- Aquí colocamos valores en la tabla "guru99" en la fila r1 y la columna c1.
hbase> put 'guru99', 'r1', 'c1', 'value', 10
- Hemos colocado tres valores, 10,15 y 30 en la tabla "guru99" como se muestra en la siguiente captura de pantalla.
- Supongamos que la tabla "Guru99" tiene alguna referencia de tabla como, por ejemplo, g. También podemos ejecutar el comando en la referencia de la tabla también como
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
- El resultado será como se muestra en la captura de pantalla anterior después de colocar valores en "guru99".
Leer datos de la tabla HBase: Shell
En esta sección comprobaremos lo siguiente:
- Valores que se insertan en la tabla HBase “guru99”
- Nombres de columnas con valores presentes en la tabla HBase guru99
De la captura de pantalla anterior, podemos inferir
- Si ejecutamos el comando "escanear" en el shell HBase, se mostrarán los valores insertados en "guru99" de la siguiente manera
- En HBase Shell, mostrará los valores insertados por nuestro código con nombres de columnas y filas.
- Aquí podemos ver que los nombres de las columnas insertadas son “educación” y “proyectos”.
- Los valores insertados son “bigdata” y “Tutoriales de HBase” en las columnas mencionadas
También puede utilizar el comando Obtener para leer datos de una tabla.
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Aquí los incluyen TIMERANGE, TIMESTAMP, VERSIONES y FILTERS.
Al utilizar este comando, obtendrá el contenido de una fila o celda presente en la tabla. Además de eso, también puede agregarle parámetros adicionales como TIMESTAMP, TIMERANGE,VERSIONS, FILTERS, etc. para obtener una fila o contenido de celda en particular.
Ejemplos: -
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Para la tabla "guru99′, los valores de la fila r1 y la columna c1 se mostrarán usando este comando como se muestra en la captura de pantalla anterior
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 1 en el rango de tiempo ts1 y ts2 se mostrarán usando este comando
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Para la tabla "guru99", la fila r1 y los valores c1, c2, c3 de las familias de columnas se mostrarán usando este comando
Escribir datos en la tabla HBase: API JAVA
En este paso, vamos a escribir datos en la tabla HBase "guru99"
Primero, tenemos que escribir código para insertar y recuperar valores de HBase usando:Programa HBaseLoading.java.
Para crear e insertar valores en una tabla a nivel de columna, debe codificar como se muestra a continuación.
De la captura de pantalla anterior
- Cuando creamos la configuración de HBase, apuntará a las configuraciones que establezcamos en los archivos base-site.xml y hbase-default.xml durante Instalaciones HBase
- Creación de la tabla “guru99” usando el método HTable
- Agregando la fila 1 a la tabla "guru99"
- Especificar los nombres de las columnas "educación" y "proyectos" e insertar valores en los nombres de las columnas en la fila respectiva1. Los valores insertados aquí son “BigData” y “HBaseTutorials”.
Leer datos de la tabla HBase: Java API
Cualesquiera que sean los valores que colocamos en las tablas de HBase en la sección anterior, aquí vamos a buscar y mostrar esos valores.
Para recuperar resultados almacenados en “guru99”
La captura de pantalla anterior muestra que los datos se leen de la tabla HBase 'guru99'
- En esto, vamos a recuperar los valores que están almacenados en familias de columnas, es decir, "educación" y "proyectos".
- Usando el comando "obtener" vamos a recuperar los valores almacenados en la tabla HBase
- Resultados del escaneo usando el comando "escanear". Los valores que están almacenados en la fila1 se mostrarán en la consola.
Una vez que haya terminado de escribir el código, debe ejecutar Java aplicación como esta
- Haga clic derecho en HBaseLoading.java -> Correr como -> Java Applicación
- Después de ejecutar "HBaseLoading .java", los valores se insertarán en "guru99" en cada columna de HBase y en el mismo programa también puede recuperar 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(); } } }
Resum
Como comentamos en este tutorial, puede utilizar el comando put para insertar datos en una tabla. Puede usar el comando escanear y obtener para leer datos de una tabla