公司有个系统定期向hbase插入数据,记录系统日志。有个字段需要存储long类型的时间戳,具体向hbase插入数据的代码意思大概如下:
put.add(Bytes.toBytes(family),Bytes.toBytes(column),Bytes.toBytes(new Date().getTime()));
table.put(put);
table.close();
构造put对象,插入hbase,先插入一条数据如下:
hbase(main):042:0> scan 'test_put'
ROW COLUMN+CELL
111111 column=cf:time, timestamp=1511271122413, value=\x00\x00\x01_\xDE\xB9~\x15
1 row(s) in 0.0160 seconds
可以看出来,time字段的值是乱码的,因为hbase默认将值先转为字节码存储。对于long类型的数据,java查询时需要再通过 Bytes.toLong(