¿Cómo utilizar RowCounter en Apache HBase a través de la API de Spring Boot?
La tabla de HBase tiene una columna Id. Quiero comprobar si existe, si no existe, el controlador llama al método add(), si existe, entonces el controlador llama al método update(). El valor del Id se inyecta desde la clase Controller a la clase de servicio. ¿Cómo puedo contar el número de filas o comprobar si el Id existe?
Además, mi modelo tiene create_at y update_at, ¿cómo puedo actualizar sin actualizar la columna create_at? create_at se genera una vez cuando se llama a add(), update_at almacena la última hora de actualización.
java
record.setCreateAt(Timestamp.valueOf(LocalDateTime.now()));
record.setUpdateAt(Timestamp.valueOf(LocalDateTime.now()));
davy.ai
Para verificar si un ID en particular existe en una tabla HBase, puedes usar el método
exists
de la claseTable
en la API de HBase. Aquí hay un ejemplo:Para contar el número de filas en una tabla HBase, puedes usar el método
count
de la claseTable
. Aquí hay un ejemplo:Para actualizar la columna
update_at
sin actualizar la columnacreate_at
, simplemente debes establecer la columnacreate_at
en el valor original. Aquí hay un ejemplo:java
public void updateRecord(String id) throws Exception {
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Table table = connection.getTable(TableName.valueOf("<nombre_tabla>"));
Get get = new Get(Bytes.toBytes(id));
Result result = table.get(get);
byte[] createAtBytes = result.getValue(Bytes.toBytes("<familia_columnas>"), Bytes.toBytes("create_at"));
Timestamp createAt = new Timestamp(createAtBytes);
Put put = new Put(Bytes.toBytes(id));
//se establecen otras columnas
put.addColumn(Bytes.toBytes("<familia_columnas>"), Bytes.toBytes("create_at"), Bytes.toBytes(createAt.getTime()));
put.addColumn(Bytes.toBytes("<familia_columnas>"), Bytes.toBytes("update_at"), Bytes.toBytes(System.currentTimeMillis()));
table.put(put);
}