前置工作:搭建好Hbase集群并啟動,然后通過hbase shell
命令進入Hbase的shell環(huán)境。
Hbase shell命令基本操作
- help
幫助命令,查看hbase包含的命令,以及基本的用法。
help
- list
查看表操作。查看當前數(shù)據(jù)庫中有哪些表。
list
- create
創(chuàng)建表操作。創(chuàng)建表的語法有2種。
create '表名', '列族1', '列族2', ...
# 或者
create '表名', {NANE => '列族1', VERSION => '版本數(shù)'}, {NAME => '列族2'}, ...
- disable && drop
刪除表操作。刪除表之前,必須先讓該表為disable狀態(tài),使用命令:
disable '表名'
然后,使用drop命令刪除這個表:
drop '表名'
- put
插入數(shù)據(jù)操作。向表中插入數(shù)據(jù),使用put命令。
語法格式為:
put '表名', 'rowkey', '列族名:列名', '值'
- get
查詢數(shù)據(jù)操作。
- 獲取指定rowkey的所有信息
語法格式為:
get '表名', 'rowkey'
- 獲取指定rowkey下某些列族的信息
語法格式為:
get '表名', 'rowkey', '列族名1', '列族名2', ...
# 或者:
get '表名', 'rowkey', {COLUMN => ['列族1', '列族2', ...]}
- 獲取指定rowkey下的某些列族的某些列的信息
語法格式為:
get '表名', 'rowkey', '列族1:列1', '列族2:列2', ...
# 或者
get '表名', 'rowkey', {COLUMN => ['列族1:列1', '列族2:列2', ...]}
# 或者將上邊2種語法結(jié)合起來
get '表名', 'rowkey', '列族1:列1', '列族2', ...
# 或者
get '表名', 'rowkey', {COLUMN => ['列族1:列1', '列族2']}
- scan
查詢數(shù)據(jù)操作。get與scan的區(qū)別在于,get只能獲取一行數(shù)據(jù)的全部或者部分信息;scan可以獲取一行或者多行的全部或者部分信息。
- 查詢所有行
scan '表名'
- 查詢一個或者多個列族的信息
scan '表名', {COLUMM => ['列族名1', '列族名2', ...]}
# 指定版本個數(shù)
scan '表名', {COLUMM => ['列族名1', '列族名2', ...], VERSION => 版本個數(shù)}
- 查詢一個或者多個列族下的列的信息
scan '表名', {COLUMN => ['列族1:列1', '列族2', ...]}
# 指定版本個數(shù)
scan '表名', {COLUMN => ['列族1:列1', '列族2', ...], VERSION => 版本個數(shù)}
- 根據(jù)rowkey進行范圍查詢
scan '表名', {COLUMN => '列族名', STARTROW => '開始rowkey', ENDROW => '結(jié)束rowkey'}
包含STARTROW這行數(shù)據(jù),不包括ENDROW這行數(shù)據(jù)。
- 指定數(shù)據(jù)版本的范圍查詢
scan '表名', {TIMERANGE => [時間戳1, 時間戳2]}
- delete
刪除數(shù)據(jù)操作。
- 指定rowkey刪除
delete '表名', 'rowkey'
- 指定rowkey以及列名刪除
delete '表名', 'rowkey', '列族名:列名'
# 指定版本號
delete '表名', 'rowkey', '列族名:列名', 時間戳
- alter
修改表操作。
- 更新版本號
alter '表名', NAME => '列族', VERSION => 版本數(shù)
- 刪除列族
alter '表名', NAME => '列族名', METHOD => 'delete'
# 或者
alter '表名', 'delete' => 'info'
- truncate
清空表操作。
truncate '表名'
- count
統(tǒng)計表有多少數(shù)據(jù)行。
count '表名'
- FILTER
過濾器。一般與get或者scan配合一起使用,對查詢出來的結(jié)果進行過濾。
- 列值過濾器查詢
# 根據(jù)列的值過濾
get '表名', 'rowkey', {FILTER => "ValueFilter(=, 'binary:列的值')"}
# 多行
scan '表名', {COLUMN => '列族', FILTER => "ValueFilter(=, 'binary:列的值')"}
- 列值模糊查詢
# 根據(jù)列的值包含子串過濾
scan '表名', {COLUMNS => ['列族', ...], FILTER => "(QualifierFilter(=,'substring:列值'))"}
或者
get '表名', 'rowkey', {FILTER => "(QualifierFilter(=,'substring:列值'))"}
- rowkey模糊查詢
scan '表名', {FILTER => "PrefixFilter('前綴值')"}
Hbase高級shell管理命令
- status
例如顯示服務(wù)器狀態(tài):
status 'node01'
- whoami
顯示hbase當前用戶。
whoami
- list
顯示所有的表。
list
- count
統(tǒng)計指定表的記錄數(shù)。
count '表名'
- describe
展示表的結(jié)構(gòu)信息。
describe '表名'
- exists
檢查表是否存在,適用于表特別多的情況。
exists '表名'
- is_enabled && is_disabled
檢查表是否禁用或者啟用。
is_enabled '表名'
is_disabled '表名'
- alter
該命令可以改變表或者列族的模式,如:
- 為當前表增加列族:
alter '表名', NAME => '列族名', VERSIO N=> 版本數(shù)
- 為當前表刪除列族
alter '表名', 'delete' => '列族名'
- enable && disable
啟用或者禁用一張表。
enable '表名'
disable '表名'