zoukankan      html  css  js  c++  java
  • HBase

    博文作者:那伊抹微笑
    csdn 博客地址:http://blog.csdn.net/u012185296
    itdog8 地址链接 : http://www.itdog8.com/thread-215-1-1.html
    博文标题:HBase - 计数器 - 计数器的介绍以及使用 | 那伊抹微笑
    个性签名:世界上最遥远的距离不是天涯。也不是海角,而是我站在妳的面前,妳却感觉不到我的存在
    技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术
    转载声明:能够转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
    qq交流群:214293307  云计算之嫣然伊笑(期待与你一起学习,共同进步)



    1 计数器
    计数器能够方便、高速地进行计数操作。并且避免了加锁等保证了原子性的操作。

    1.1 Java API 操作 HBase 计数器
    public Result increment(final Increment increment)
    public long incrementColumnValue(final byte [] row, final byte [] family,
          final byte [] qualifier, final long amount)
    public long incrementColumnValue(final byte [] row, final byte [] family,
          final byte [] qualifier, final long amount, final Durability durability)

    从这 3 个 HBase 提供的 计数器 API 来看,能够知道有 单列计数器 和 多列计数器

    pv + 1 的 Java 示比例如以下 : 
    _hTable.incrementColumnValue(Bytes.toBytes("row-zhangsan-001"), Bytes.toBytes("info"), Bytes.toBytes("pv"), 1L);

    1.2 Shell 操作 HBase 计数器
    hbase(main):011:0> incr 'user', 'row-zhangsan-001', 'cf1:pv', 10
    hbase(main):012:0> incr 'user', 'row-zhangsan-001', 'cf1:pv', -1
    hbase(main):013:0> scan 'user'
    ROW                                                 COLUMN+CELL                                                                                                                                         
     row-zhangsan-001                                   column=cf1:pv, timestamp=1438853474770, value=x00x00x00x00x00x00x00x09
    hbase(main):014:0> get_counter 'user', 'row-zhangsan-001', 'cf1:pv', ''
    COUNTER VALUE = 9

    // 看以下提示,给的样例仅仅要3个參数,为什么我要打4个才可以用???
    hbase(main):015:0> get_counter 'user', 'row-zhangsan-001', 'cf1:pv'
    ERROR: wrong number of arguments (3 for 4)
    Here is some help for this command:
    Return a counter cell value at specified table/row/column coordinates.
    A cell cell should be managed with atomic increment function oh HBase
    and the data should be binary encoded. Example:
      hbase> get_counter 'ns1:t1', 'r1', 'c1'
      hbase> get_counter 't1', 'r1', 'c1'
    The same commands also can be run on a table reference. Suppose you had a reference
    t to table 't1', the corresponding command would be:
      hbase> t.get_counter 'r1', 'c1' 

    hbase(main):055:0> get 'test_icv_tmp_1', 'row-zhangsan-001', 'cf1:pv'
    COLUMN                                              CELL                                                                                                                                                   
     cf1:pv                                             timestamp=1438853974733, value=x00x00x00x00x00x00x00x0A                                                                                       
    1 row(s) in 0.0080 seconds
    hbase(main):056:0> 


    1.3 单列计数器
    _hTable.incrementColumnValue(Bytes.toBytes("row-zhangsan-001"), Bytes.toBytes("info"), Bytes.toBytes("pv"), 10L); // pv +10
    _hTable.incrementColumnValue(Bytes.toBytes("row-zhangsan-001"), Bytes.toBytes("info"), Bytes.toBytes("pv"), -1L); // pv -1

    1.4 多列计数器
    pv +2 的同一时候,uv 同一时候 +1
    Increment increment = new Increment(Bytes.toBytes("row"));
    increment.addColumn(Bytes.toBytes("info"), Bytes.toBytes("pv"), 1L); // pv +2
    increment.addColumn(Bytes.toBytes("info"), Bytes.toBytes("uv"), 1L); // uv +1
    _hTable.increment(increment);


  • 相关阅读:
    LeetCode "Jump Game"
    LeetCode "Pow(x,n)"
    LeetCode "Reverse Linked List II"
    LeetCode "Unique Binary Search Trees II"
    LeetCode "Combination Sum II"
    LeetCode "Divide Two Integers"
    LeetCode "First Missing Positive"
    LeetCode "Clone Graph"
    LeetCode "Decode Ways"
    LeetCode "Combinations"
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6794560.html
Copyright © 2011-2022 走看看