• hbasefilter使用


    使用filter需要guava jar包

    The Guava project contains several of Google's core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.

    否则出错:java.lang.NoClassDefFoundError: com/google/common/base/Preconditions

    scan时候出现

    java.lang.RuntimeException: org.apache.hadoop.hbase.regionserver.LeaseException: org.apache.hadoop.hbase.regionserver.LeaseException: lease '464943507681458694' does not exist

    hbase客户端每次和regionserver交互的时候,都会在服务器端生成一个租约(Lease),租约的有效期由参数hbase.regionserver.lease.period确定。
    客户端去regionserver取数据的时候,hbase中存得数据量很大并且很多region的时候的,客户端请求的region不在内存中,或是没有被cache住,需要从磁盘中加载,如果这时候加载需要的时间超过hbase.regionserver.lease.period所配置的时间,并且客户端没有和regionserver报告其还活着,那么regionserver就会认为本次租约已经过期,并从LeaseQueue从删除掉本次租约,当regionserver加载完成后,拿已经被删除的租约再去取数据的时候,就会出现如上的错误现象。(http://liuskysun.blog.163.com/blog/static/99812978201111195301995/

    对应我的使用场景,只需要制定的row,取column page即可,因此使用Get 对象而不是Scan对象,添加一个过滤条件而不是组合row和columnPage作为过滤列表。 

    hbase数据的排序方式:

    HBase Table as Data Structures
    • A table maps rows to its families
    – SortedMap(Row  List(ColumnFamilies))
    • A family maps column names to versioned values
    – SortedMap(Column  SortedMap(VersionedValues))
    • A column maps timestamps to values
    – SortedMap(Timestamp  Value)
    An HBase table is a three-dimensional sorted map
    (row, column, and timestamp)

    row,columnFamily 和 column都是正序排,version按时间倒序排

    目前没有发现方法可以获取column的倒序(大->小),且使用不使用filter消耗时间都差不多,感觉时间消耗都在把冷数据调入内存而不是单独取出对应范围的column

  • 相关阅读:
    Java平台调用Python平台已有算法(附源码及解析)
    java截取避免空字符丢失
    Java集合对象比对
    idea中的beautiful插件-自动生成对象set方法
    idea下maven命令打包不同配置
    提纲
    标记语言入门
    react入门
    深入理解React、Redux
    css伪类 伪元素
  • 原文地址:https://www.cnblogs.com/shenguanpu/p/2586278.html
Copyright © 2020-2023  润新知