HBase int类型字段存储乱码

用MR往HBase里写Int类型遇到了乱码问题,总结一下。

直接往HBase表里写int,通过shell查询


可以看到是一堆字节数组,hbase存储所有数据都是用过Byte数组的形式,但是里面除了String以外,其他类型通过shell查询,无法正常显示的,但是String类型的数据,shell则可以正常显示,这里我插入的是int自然无法正常显示。



这是在idea上写的查询hbase的方法,分别用Bytes.toInt和Byts.toString尝试读取hbase上的数据。


这是一部分结果,可以看到通过Bytes.toInt读取的int类型Byte数组,是可以正确显示,而通过Bytes.toString方式尝试读取则乱码。

看到这里其实大概已经了解了,但是我遇到了一点小问题,所以继续测试。



新建一张表,通过shell,往里面插入两个int类型的数据,但是通过shell查询,查询结果并非Byte数组,难道HBase将他们转换成了String?


通过idea上方法测试,可以看到Bytes.toString方法将结果转化正确,而Bytes.toInt则错误。所以可以认为通过shell可以读取到的数据类型,只有String。通过shell插入的int类型只不过是与int类型值相同的String类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容