HBase之计数器

HBase计数器
#创建counters表 列族[‘daily‘,‘weekly‘,‘monthly‘]
hbase(main):001:0> create ‘counters‘,‘daily‘,‘weekly‘,‘monthly‘
0 row(s) in 1.5670 seconds
=> Hbase::Table - counters

#递增命中 步长默认为1
hbase(main):002:0> incr ‘counters‘, ‘20150101‘, ‘daily:hits‘, 1
COUNTER VALUE = 1
0 row(s) in 0.3320 seconds

hbase(main):003:0> incr ‘counters‘, ‘20150101‘, ‘daily:hits‘, 1
COUNTER VALUE = 2
0 row(s) in 0.0140 seconds

#获取计数器
hbase(main):004:0> get_counter ‘counters‘, ‘20150101‘, ‘daily:hits‘
COUNTER VALUE = 2
#使用了put去修改计数器 会导致后面的错误 原因是‘1‘会转换成Bytes.toBytes()
hbase(main):020:0> put ‘counters‘ ,‘20150102‘,‘daily:hits‘,‘1‘
0 row(s) in 0.0520 seconds

hbase(main):021:0> incr ‘counters‘, ‘20150102‘, ‘daily:hits‘, 1

ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: Field is not a long, it‘s 1 bytes wide
        at org.apache.hadoop.hbase.regionserver.HRegion.getLongValue(HRegion.java:7647)
        at org.apache.hadoop.hbase.regionserver.HRegion.applyIncrementsToColumnFamily(HRegion.java:7601)
        at org.apache.hadoop.hbase.regionserver.HRegion.doIncrement(HRegion.java:7480)
        at org.apache.hadoop.hbase.regionserver.HRegion.increment(HRegion.java:7440)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.increment(RSRpcServices.java:551)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.mutate(RSRpcServices.java:2227)
        at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33646)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2178)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
        at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
        at java.lang.Thread.run(Thread.java:745)

hbase(main):001:0> get ‘counters‘,‘20150102‘
COLUMN                                           CELL
 daily:hits                                      timestamp=1472808748361, value=1
1 row(s) in 0.3190 seconds

hbase(main):002:0> put ‘counters‘ ,‘20150102‘,‘daily:hits‘,‘1‘
0 row(s) in 0.0640 seconds

hbase(main):003:0> get ‘counters‘,‘20150102‘
COLUMN                                           CELL
 daily:hits                                      timestamp=1472808858593, value=1
1 row(s) in 0.0090 seconds
#计数步长20
hbase(main):004:0> incr ‘counters‘, ‘20150101‘, ‘daily:hits‘, 20
COUNTER VALUE = 22
0 row(s) in 0.0260 seconds

hbase(main):005:0> incr ‘counters‘, ‘20150101‘, ‘daily:hits‘, 20
COUNTER VALUE = 42
0 row(s) in 0.0090 seconds

#默认步长是1
hbase(main):009:0>
hbase(main):010:0* incr ‘counters‘, ‘20150101‘, ‘daily:hits‘
COUNTER VALUE = 45
0 row(s) in 0.0100 seconds

#计数器可以-1
hbase(main):011:0> incr ‘counters‘, ‘20150101‘, ‘daily:hits‘, -1
COUNTER VALUE = 44
0 row(s) in 0.0110 seconds

hbase(main):012:0> incr ‘counters‘, ‘20150101‘, ‘daily:hits‘, -1
#计数也可为0
hbase(main):013:0> incr ‘counters‘, ‘20150101‘, ‘daily:hits‘, 0
COUNTER VALUE = 43
0 row(s) in 0.0080 seconds
时间: 2024-11-02 21:57:23

HBase之计数器的相关文章

2、通过HBase API进行开发

一.将HBase的jar包及hbase-site.xml添加到IDE 1.到安装HBase集群的任意一台机器上找到HBase的安装目录,到lib目录下下载HBase需要的jar包,然后再到conf目录下下载hbase-site.xml. 2.在ide中新建一个java项目,然后再右击"项目名",新建2个文件夹,分别是"lib"和"conf" 3.将1步骤中下载的jar包放到2步骤中的lib目录下,并且将hbase-site.xml放到conf目录

HBase使用场景和成功案例 (转)

HBase 使用场景和成功案例 有时候了解软件产品的最好方法是看看它是怎么用的.它可以解决什么问题和这些解决方案如何适用于大型应用架构,能够告诉你很多.因为HBase有许多公开的产品部署,我们正好可以这么做.本章节将详细介绍一些人们成功使用HBase的使用场景. 注意:不要自我限制,认为HBase只能解决这些使用场景.它是一个初生的技术,根据使用场景进行创新正驱动着系统的发展.如果你有新想法,认为可以受益于HBase提供的功能,试试吧.社区很乐于帮助你,也会从你的经验中学习.这正是开源软件精神.

Storm+HBase实时实践

1.HBase Increment计数器 hbase counter的原理: read+count+write,正好完成,就是讲key的value读出,若存在,则完成累加,再写入,若不存在,则按"0"处理,再加上你需要累加的值. 传统上,如果没有 counter,当我们要给一个 column 的值 +1 或者其他数值时,就需要先从该 column 读取值,然后在客户端修改值,最后写回给 Region Server,即一个 Read-Modify-Write (RMW) 操作.在这样的过

HBase的基本概念

HBase: 被称为NoSQL数据库.它提供了键值API,尽管有些变化,与其他键值数据库有些不同.它承诺强一致性,所以客户端能够在写入后马上看到数据.HBase运行在多个节点组成的集群上,而不是单台机器.它对客户端隐藏了这些细节.你的应用代码不需要知道它在访问1个还是100个节点,对每个人来说事情变得简单了.HBase被设计用来处理TB到PB级数据,它为这种场景做了优化.它是Hadoop生态系统的一部分,依靠Hadoop其他组件提供的重要功能,例如数据冗余和批处理. HBase已经是Apache

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+Spa

MapReduce/Hbase进阶提升(原理剖析、实战演练)

什么是MapReduce? MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性.他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上. 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一

Hadoop企业级完整训练:Rocky的16堂课(HDFS&MapReduce&HBase&Hive&Zookeeper&Sqoop&Pig&Flume&Project) - 0515

Hadoop是云计算的事实标准软件框架,是云计算理念.机制和商业化的具体实现,是整个云计算技术学习中公认的核心和最具有价值内容. 如何从企业级开发实战的角度开始,在实际企业级动手操作中深入浅出并循序渐进的掌握Hadoop是本课程的核心.   云计算学习者的心声: 如何从企业级开发的角度,不断动手实际操作,循序渐进中掌握Hadoop,直到能够直接进行企业级开始,是困惑很多对云计算感兴趣的朋友的核心问题,本课程正是为解决此问题而生,学习者只需要按照一步步的跟着视频动手操作,即可完全无痛掌握Hadoo

HBase学习笔记

关键类: HBaseAdmin 管理Hbase的,主要负责DDL操作 HTable 管理表中数据,主要负责DML操作 1.为了避免热点,更多的建表方法 在Shell中: create 'tb_splits',{NAME=>'cf',VERSION=>3},{SPLITS=>['a','b','c']} --直接创建多个region的table,每个region的startkey和endkey由参数依次指定,第一个region没有开始startkey,最后一个没有endkey --rowk

HBase多条件筛选查询方案

最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的各种filter过滤器进行筛选,感觉查询效率不太理想,于是考虑建立二级索引的方案. 经过google学习网上前辈们的经验,暂时找到两种可用的方案: 使用Hbase协处理器Coprocessor在写入数据时,创建二级索引表,并将每条数据的索引写入二级索引表中,查询时先根据筛选条件查询二级索引表,获取相