Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

HBase format

Gustavo Fernández
Gustavo Fernández
apache hbase logo

Formateando el valor de una columna al realizar un  hbase get

La notación de la shell de hbase es bastante poco
amigable
, por un lado porque la forma de escribir las
sentencias es poco intuitiva, al principio, y por otro lado porque los
valores son simpre arrays de bytes. Por tanto la
salida de un comando suele leerse mal, sobre todo si lo que se ha
almacenado no son los bytes de un string

 100316046_2017_2_1                                  column=23:1485991943_latitud, timestamp=1486109715526, value=@Eax04;nSx85                                                                             
 100316046_2017_2_1                                  column=23:1485991943_longitud, timestamp=1486109715526, value=xC0x009xF7x87xE6/xDE

Pero un get de hbase como el aterior se puede formatear sabiendo el
tipo de dato que se almacena en el qualifier. Por ejemplo en el caso
anterior xC0x009xF7x87xE6/xDE corresponde con
la representación de los bytes de un double en un string. Para poder
ver la representación correcta de este byte[] se puede aplicar el
siguiente formato a la salida del scan

get 'map', 'row-key', 'family:qualifier:c(Java::OrgApacheHadoopHbaseUtil::Bytes).toDouble'

Y obtendremos como resultado

hbase(main):013:0> get 'map', 'row-key', 'family:qualifier:c(Java::OrgApacheHadoopHbaseUtil::Bytes).toDouble'
COLUMN                                               CELL                                                                                                                                                    
 family:qualifier                               timestamp=1486109715526, value=43.281710106997

 

(Java::OrgApacheHadoopHbaseUtil::Bytes).toDouble corresponde al
siguiente código
java
ejecutado desde ruby

org.apache.hadoop.hbase.util.Bytes().toDuble(byte[] columnValue)

 

Lo que quiere decir que podremos aplicar para dar formato a nuestro
comando de hbase shell cualquier método estático de
java que tenga como parámetro un byte[]

Un ejemplo que he
encontrado mucho más interesante que lo que acabo
de explicar es
el siguiente, en el que en una columna de hbase se ha guardado un
byte[] de avro y luego se
recupera y se muestra como un JSON

 

 

 

 

 

 

 

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *