Hbase的int、long等整型字节码解析,可使用python的struct模块实现:

HBase中,由于row(row key和column family、column qualifier、time stamp)是按照字典序进行排序的,因此,对于short、int、long等类型的数据,通过Bytes.toBytes(…)转换成byte数组后,必须按照大端模式(高字节在低地址,低字节在高地址)存放。对于value,也是同样的道理。因此,在使用Thrift API(C++、Php、Python等)方式时,最好对于row和value都统一按照大端进行pack和unpack处理。
如Hbase的certification表,通过命令scan 'certification',{LIMIT=>5},查询出结果如下:

hbase.png

想解析rowkey:00000509|30-84-54-DD-DA-19|1020002的列discover_times和first_start_time的字节码,使用python的struct模块实现如下:
第一步:在linux服务器上输入python命令
第二步:在python的交互命令行输入import struct
第三步:解析discover_times,使用struct.unpack(">I", "\x00\x00\x00\x01")[0]
第四步:解析first_start_time,使用struct.unpack(">Q", "\x00\x00\x00\x00[\xBC\xB21")[0]
第五步:在另外一个linux的xshell窗口使用date -d@第四步的值,可将时间戳转为能理解的时间格式。
struct.png

注意点
1、第三步和第四步括号中参数">I"和“>Q”不能把“>”改为"<",因为hbase存储字节数组是大端模式,而“>”代表大端、“<”代表小端。
2、“>I”用于转换4字节的字节码数组,“>Q”用于转换8字节的字节码数组。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容