全表扫描:
hbase(main):033:0> scan ¨t¨ ROW COLUMN+CELL 10001 column=t_info:general, timestamp=1365670813664, value=his fullname is junsanis! 10001 column=t_vl:age, timestamp=1365670912700, value=10 10001 column=t_vl:name, timestamp=1365670723056, value=jss 1 row(s) in 0.0370 seconds
全表描述某个列:
hbase(main):036:0> scan ¨t¨, {COLUMNS => ¨t_vl¨}
ROW COLUMN+CELL
10001 column=t_vl:age, timestamp=1365670912700, value=10
10001 column=t_vl:name, timestamp=1365670723056, value=jss
1 row(s) in 0.0080 seconds
删除记录行:
hbase(main):043:0> delete ¨t¨,¨10001¨,¨t_vl:age¨ 0 row(s) in 0.0050 seconds hbase(main):045:0> get ¨t¨,¨10001¨ COLUMN CELL t_info:general timestamp=1365670813664, value=his fullname is junsanis! t_vl:name timestamp=1365670723056, value=jss 2 row(s) in 0.0070 seconds
删除表:
hbase(main):047:0> disable ¨t¨ 0 row(s) in 2.0230 seconds hbase(main):048:0> drop ¨t¨ 0 row(s) in 1.1170 seconds
看完前面的例子,大家有没有问题,或者想到了什么?我脑子里反正是蹦出问号了:HBase中没有UPDATE操作,只有INSERT,可是我们每次put新记录都替换掉了旧的版本,怎么保存大量记录呢?难道每个row key的columns中只能存在一条记录?这不科学!这也显然不是人民群众期待并且喜闻乐见的表现嘛。
这个问题呀,其实是列值保存版本(VERSIONS)或保留时间(TTL, Time to Liv)在起作用。
比如,我们希望统计某用户的最近(n条)浏览记录,那么,创建HBase表对象如下:
hbase> create ¨rlog¨,¨userid¨,{NAME=>¨article¨,VERSIONS=>100}
当前设定,保留最近的100个版本。当用户浏览帖子时,就向rlog表中插入一条记录,形式如下:
hbase> put ¨rlog¨,$userid,¨article:id¨,$aid
这里仅选择记录浏览的用户ID和浏览页面ID,也可以根据实际情况,保存页面的URL地址,文章标题等等信息。HBase表列族是非结构化的,大家可以根据需求任意增加列值。
那么,要获取用户最近浏览记录,应该怎么查呢?,比如说获取最近浏览的10条记录:








