Hbase DDL and DML

1 DDL

1.1 建表

create :建表
hbase(main):010:0> create 'user_info','base_info','extra_info'
=> Hbase::Table - user_info
hbase(main):043:0> create 'ns1:user_info', {NAME=>'base_info', BLOOMFILTER=>'ROWCOL',VERSIONS=>'3'}

1.2 list : 查询所有的表

hbase(main):002:0> list
TABLE
ns1:t1
ns1:user_info
2 row(s) in 0.2830 seconds
=> ["ns1:t1", "ns1:user_info"]

1.3 describe : 查询表结构

hbase(main):003:0> describe 'ns1:user_info'
Table ns1:user_info is ENABLED
ns1:user_info
COLUMN FAMILIES DESCRIPTION
{NAME => 'base_info', BLOOMFILTER => 'ROWCOL', VERSIONS => '3', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS
 => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}

1.4 create , splits : 创建表分片

hbase(main):007:0> create 'ns1:t2', 'f1', SPLITS => ['10', '20', '30', '40']

1.5 修改表

1.5.1alter : 修改表,添加修改列簇信息

hbase(main):009:0> alter 'ns1:t1', {NAME=>'lixi_info'}
hbase(main):010:0> describe 'ns1:t1'
Table ns1:t1 is ENABLED
ns1:t1
COLUMN FAMILIES DESCRIPTION
{NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', B
LOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'f2', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', B
LOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'lixi_info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS =>
 '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
3 row(s) in 0.0250 seconds
​

1.5.2删除列簇

hbase(main):014:0> alter 'ns1:t1', 'delete' => 'lixi_info'
hbase(main):015:0> describe 'ns1:t1'
Table ns1:t1 is ENABLED
ns1:t1
COLUMN FAMILIES DESCRIPTION
{NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', B
LOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'f2', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', B
LOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.0170 seconds

1.5.3删除表(先要disable表,再删除表)

hbase(main):016:0> disable 'ns1:t1'
0 row(s) in 2.2790 seconds
​
hbase(main):017:0> drop 'ns1:t1'
0 row(s) in 1.2900 seconds
​
hbase(main):018:0> list
TABLE
ns1:t2
ns1:user_info
2 row(s) in 0.0090 seconds
=> ["ns1:t2", "ns1:user_info"]

2 DML

2.1 插入数据(put命令,不能一次性插入多条)

hbase(main):012:0> put 'user_info','001','base_info:username','lixi'
0 row(s) in 0.9800 seconds

2.2 scan扫描

hbase(main):024:0> scan 'user_info'
ROW                                                  COLUMN+CELL
 001                                                 column=base_info:love, timestamp=1538897913186, value=basketball
 001                                                 column=base_info:username, timestamp=1538897633942, value=lixi
 002                                                 column=base_info:username, timestamp=1538898168513, value=lishiming
2 row(s) in 0.0520 seconds

2.2.1通过指定版本查询

hbase(main):024:0> scan 'user_info', {RAW => true, VERSIONS => 1}
ROW                                                 COLUMN+CELL
 001                                                column=base_info:age, timestamp=1546922817429, value=32
 001                                                column=base_info:name, timestamp=1546923712904, value=rock
 001                                                column=extra_info:feature, timestamp=1546922881922, value=shuai
 001                                                column=super_info:size, timestamp=1546922931075, value=111
1 row(s) in 0.0160 seconds
​
hbase(main):025:0> scan 'user_info', {RAW => true, VERSIONS => 2}
ROW                                                 COLUMN+CELL
 001                                                column=base_info:age, timestamp=1546922817429, value=32
 001                                                column=base_info:name, timestamp=1546923712904, value=rock
 001                                                column=base_info:name, timestamp=1546922810789, value=lixi
 001                                                column=extra_info:feature, timestamp=1546922881922, value=shuai
 001                                                column=super_info:size, timestamp=1546922931075, value=111
1 row(s) in 0.0180 seconds

2.2.2查询指定列的数据

hbase(main):014:0> scan 'user_info',{COLUMNS => 'base_info:name'}
ROW                                                 COLUMN+CELL
 001                                                column=base_info:name, timestamp=1546923712904, value=rock​

2.2.3分页查询

hbase(main):021:0> scan 'user_info', {COLUMNS => ['base_info:name', 'base_info:age'], LIMIT => 10, STARTROW => '001'}
ROW                                                 COLUMN+CELL
 001                                                column=base_info:age, timestamp=1546922817429, value=32
 001                                                column=base_info:name, timestamp=1546923712904, value=rock

2.3 get查询

hbase(main):015:0> get 'user_info','001','base_info:username'
COLUMN                                               CELL
 base_info:username                                  timestamp=1538897633942, value=lixi
1 row(s) in 0.2500 seconds
​
hbase(main):017:0> put 'user_info','001','base_info:love','basketball'
0 row(s) in 0.0140 seconds
​
hbase(main):018:0> get 'user_info','001'
COLUMN                                               CELL
 base_info:love                                      timestamp=1538897913186, value=basketball
 base_info:username                                  timestamp=1538897633942, value=lixi

2.3.1根据时间戳查询

hbase(main):029:0> get 'user_info', '001', {TIMERANGE => [1546922817429, 1546922931075]}
COLUMN                                              CELL
 base_info:age                                      timestamp=1546922817429, value=32
 extra_info:feature                                 timestamp=1546922881922, value=shuai

2.4 hbase的一个重要特性:排序特性(rowkey)

插入到hbase中去的数据,hbase会自动排序存储:
排序规则:  首先看行键,然后看列族名,然后看列(key)名; 按字典顺序
​
Hbase的这个特性跟查询效率有极大的关系
比如:一张用来存储用户信息的表,有名字,户籍,年龄,职业....等信息
然后,在业务系统中经常需要:
查询某个省的所有用户
经常需要查询某个省的指定姓的所有用户
思路:如果能将相同省的用户在hbase的存储文件中连续存储,并且能将相同省中相同姓的用户连续存储,那么,上述两个查询需求的效率就会提高!!!​
做法:将查询条件拼到rowkey内

2.5 更新数据

hbase(main):010:0> put 'user_info', '001', 'base_info:name', 'rock'
0 row(s) in 0.1420 seconds

2.6 incr

hbase(main):053:0> incr 'user_info', '002', 'base_info:age3'
COUNTER VALUE = 1
0 row(s) in 0.0290 seconds
​
hbase(main):055:0> scan 'user_info'
ROW                                                 COLUMN+CELL
 001                                                column=base_info:age, timestamp=1546922817429, value=32
 001                                                column=base_info:name, timestamp=1546923712904, value=rock
 001                                                column=extra_info:feature, timestamp=1546922881922, value=shuai
 001                                                column=super_info:size, timestamp=1546922931075, value=111
 002                                                column=base_info:age2, timestamp=1546924991038, value=11
 002                                                column=base_info:age3, timestamp=1546925153059, value=\x00\x00\x00\x00\x00\x00\x00\x02
2 row(s) in 0.1020 seconds

2.7 删除数据

2.7.1删除一个kv数据

hbase(main):058:0> delete 'user_info', '002', 'base_info:age3'
0 row(s) in 0.0180 seconds
hbase(main):059:0> scan 'user_info'
ROW                                                 COLUMN+CELL
 001                                                column=base_info:age, timestamp=1546922817429, value=32
 001                                                column=base_info:name, timestamp=1546923712904, value=rock
 001                                                column=extra_info:feature, timestamp=1546922881922, value=shuai
 001                                                column=super_info:size, timestamp=1546922931075, value=111
 002                                                column=base_info:age2, timestamp=1546924991038, value=11

2.7.2删除一行数据

hbase(main):028:0> deleteall 'user_info','001'
0 row(s) in 0.0100 seconds
​
hbase(main):029:0> scan 'user_info'
ROW                                                  COLUMN+CELL
​

2.7.3删除指定的版本

hbase(main):081:0> delete 'user_info','001','extra_info:feature', TIMESTAMP=>1546922931075

2.7.4删除一个表数据

disable 'user_info'
drop 'user_info'

2.7.5判断表是否存在

hbase(main):083:0> exists 'user_info'
Table user_info does exist
0 row(s) in 0.0130 seconds

2.7.6表生效和失效

hbase(main):084:0> enable 'user_info'
0 row(s) in 0.0130 seconds
​
hbase(main):085:0> disable 'user_info'
0 row(s) in 2.5100 seconds

2.7.7统计表行数

hbase(main):088:0> count 'user_info'
1 row(s) in 0.0300 seconds
=> 1

2.7.8清空表数据

hbase(main):089:0> truncate 'user_info'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值