HBase对于非Java语言提供了Thrift接口支持,这里结合对HBase Thrift接口(HBase版本为0.92.1)的使用经验,总结其中遇到的一些问题及其相关注意事项。
<FONT style="COLOR: #ff0000">1. 字节的存放顺序
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处理。举个例子,C++中,对于int型变量,经过以下方式转换为字典序:
<div class="codetitle"><a style="CURSOR: pointer" data="8372" class="copybut" id="copybut8372" onclick="doCopy('code8372')"> 代码如下: