开发者社区 问答 正文

HBase如何比较KeyValue的大小顺序?

HBase如何比较KeyValue的大小顺序?

展开
收起
令人无语的八阿哥 2021-10-22 15:40:02 617 分享 版权
来自: 华章出版社
1 条回答
写回答
取消 提交回答
  • 在比较KeyValue的大小顺序时,HBase按照如下方式(伪代码)来确定大小关系:

    int compare(KeyValue a, KeyValue b){

    int ret = Bytes.compare(a.rowKeyBytes, b.rowKeyBytes);

    if(ret != 0) return ret;

    ret = Bytes.compare(a.familyBytes, b.familyBytes);

    if(ret != 0) return ret;

    ret = Bytes.compare(a.qualif ierBytes, b.qualif ierBytes);

    if(ret != 0) return ret;

    // 注意:timestamp越大,排序越靠前

    ret = b.timestamp - a.timestamp;

    if(ret != 0) return ret;

    ret = a.type - b.type;

    return ret;

    }

    注意,在HBase中,timestamp越大的KeyValue,排序越靠前。因为用户期望优先读取到那些版本号更新的数据。

    资料来源:《HBase原理与实践》,文章链接:https://developer.aliyun.com/article/724670

    2021-10-22 16:01:49
    赞同 展开评论