0%

HBase命令

HBase命令

建表命令

使用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'}

插入数据

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

1
2
# 该命令表示 向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
#语法
#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'
# 只取cf列族的a字段
scan 'test',{COLUMNS=>['cf:a']}
# 只取cf列族的a字段一条
scan 'test',{COLUMNS=>['cf:a'],LIMIT=>1}

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

1
2
3
4
5
# test为表名,row1位rowkey
get 'test','row1'

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

删除数据

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

1
2
# 表名,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'