0%

HBase命令

HBase命令

建表命令

使用create命令来创建一个表

1
2
3
# create '表名称','列族名称1','列族名称2'...
# test是表名,cf为列族名
create 'test','cf'

查看表

使用list命令来查看有哪些表

1
2
3
4
5
# 列出所有表
list

# list 后跟表名可以确认该表是否存在
list 'test'

使用describe命令查看表的详细信息

1
2
3
4
5
6
describe 'test'

COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', VERSIONS => '1', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCO
PE => '0', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}

新增/删除一个列族

1
2
3
4
5
# alter '表名',NAME=>'列族名称'
alter 'test',NAME=>'info'

# alter '表名',NAME=>'列族名称',METHOD=>'delete'
alter 'test',NAME=>'cf',METHOD=>'delete'

插入数据

使用put命令来向表中插入数据

1
2
3
# put '表名','rowkey','列族名称:列名称','值'
# 该命令表示 向test表中插入数据 rowkey为row1,列为cf:a(其中cf是列族名,a为该列族下的列名),value1为该列的值
put 'test','row1','cf:a','value1'

修改数据

修改也是使用put命令,与插入相比只是原本就有该行数据而已

1
2
3
4
5
6
put 'test','row1','cf:a','value1-1'

# 此时获取到的就是新的值value1-1,是根据timestamp来判断哪个是最新的
hbase(main):013:0> get 'test','row1'
COLUMN CELL
cf:a timestamp=1619233076084, value=value1-1

可以使用scan查看修改记录

1
2
3
4
hbase(main):017:0> scan 'test', {RAW => true, VERSIONS => 10}
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1619233076084, value=value1-1
row1 column=cf:a, timestamp=1619165646264, value=value1

查询数据

使用scan命令可以扫描该表所有数据,也可以加过滤条件,只扫描某一列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#语法
#hbase> scan 'hbase:meta'
# hbase> scan 'hbase:meta', {COLUMNS => 'info:regioninfo'}
#hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
#hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
#hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804000, 1303668904000]}
# hbase> scan 't1', {REVERSED => true}
# hbase> scan 't1', {ALL_METRICS => true}
#hbase> scan 't1', {METRICS => ['RPC_RETRIES', 'ROWS_FILTERED']}
#hbase> scan 't1', {ROWPREFIXFILTER => 'row2', FILTER => " (QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"}
# hbase> scan 't1', {FILTER => org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)}
# hbase> scan 't1', {CONSISTENCY => 'TIMELINE'}
# hbase> scan 't1', {ISOLATION_LEVEL => 'READ_UNCOMMITTED'}
# hbase> scan 't1', {MAX_RESULT_SIZE => 123456}
# For setting the Operation Attributes
# hbase> scan 't1', { COLUMNS => ['c1', 'c2'], ATTRIBUTES => {'mykey' => 'myvalue'}}
# hbase> scan 't1', { COLUMNS => ['c1', 'c2'], AUTHORIZATIONS => ['PRIVATE','SECRET']}

# 扫描全表,全部字段
scan 'test'
# 查询指定列族所有记录
# scan '表名',{COLUMNS=>'列族名'}
scan 'test',{COLUMNS=>'info'}
# 只取cf列族的a字段
# scan '表名',{COLUMNS=>'列族名:字段名'}
scan 'test',{COLUMNS=>['cf:a']}
# 只取cf列族的a字段一条
scan 'test',{COLUMNS=>['cf:a'],LIMIT=>1}
# 查询指定区间
scan 'test',{COLUMNS=>['cf:a'],LIMIT=>5,STARTROW=>'2',STOPROW=>'7'}

使用get命令可以拿到单条数据

1
2
3
4
5
6
7
8
9
# get '表名','rowkey'
get 'test','row1'

COLUMN CELL
cf:a timestamp=1619165646264, value=value1


# get '表名','rowkey','列族名称:列名'
get 'test','row1','info:name'

使用count可以查看表记录数

1
2
# count '表名'
count 'test'

删除数据

使用delete命令可以删除该行的某一列

1
2
# delete '表名','rowkey','列族名:列名'
delete 'test','row2','cf:b'

使用delete是无法直接删除某一整行的,需要使用deleteall命令

1
2
# 表名,rowkey
deleteall 'test','row3'

使表失效

使用disable可以使表失效,表失效之后就不可以再对该表进行增删改查操作了

1
disable 'test'

既然有失效,那么就有生效,使用enable命令可以使表生效

1
enable 'test'

删除表

使用drop命令可以删除该表

1
drop 'test'

删除表之前需要先disable,否则会报错

1
ERROR: Table test is enabled. Disable it first.

计数器

先创建一个表,来进行记录

1
create 'counters','camp'

使用计数器,模拟该did在不同投放中的曝光次数

1
2
3
4
# incr 'table','rowkey','column',incr-value
incr 'counters','did123456','camp:501',1
incr 'counters','did123456','camp:502',1
incr 'counters','did123456','camp:502',1

获取计数值,发现与预期一致

1
2
3
4
5
6
hbase(main):007:0> get_counter 'counters','did123456','camp:502'
COUNTER VALUE = 2

hbase(main):008:0> get_counter 'counters','did123456','camp:501'
COUNTER VALUE = 1

欢迎关注我的其它发布渠道