1. 基本操作命令
命令 | 含義 | 實例 |
---|---|---|
status | 顯示狀態 | status ‘hadoop1’ |
whoami | 顯示HBase當前用戶 | whoami |
list | 顯示當前所有表 | list |
count | 統計指定表的記錄數 | count ‘user’ |
describe | 顯示錶的結構信息 | describe ‘user’ |
exists | 檢查表是否存在 | exists ‘user’ |
is_enabled/is_disabled | 檢查表是否啓用/禁用 | is_enabled ‘user’ |
alter | 改變表或列族的模式 | alter ‘user’, NAME => ‘CF2’, VERSIONS => 2 |
disable/enable | 啓用/禁用一張表 | disable ‘user’ |
drop | 刪除表 | drop ‘user’ |
truncate | 禁用表 | trancate ‘user’ |
-
打開HBase shell
cd /export/servers/hbase-2.0.0 bin/hbase shell
-
創建表,添加數據
# 創建表 create 'user', 'info', 'data' # 向user表中插入信息,row key爲rk0001,列族info中添加name列標示符,值爲zhangsan put 'user', 'rk0001', 'info:name', 'zhangsan' # 向user表中插入信息,row key爲rk0001,列族info中添加gender列標示符,值爲female put 'user', 'rk0001', 'info:gender', 'female' # 向user表中插入信息,row key爲rk0001,列族info中添加age列標示符,值爲20 put 'user', 'rk0001', 'info:age', 20 # 向user表中插入信息,row key爲rk0001,列族data中添加pic列標示符,值爲picture put 'user', 'rk0001', 'data:pic', 'picture'
-
統計有多少行數據
count 'user'
2. 查詢操作
-
通過get查詢(get rowkey)
# 獲取user表中row key爲rk0001的所有信息 get 'user', 'rk0001'
# 獲取user表中row key爲rk0001,info列族的信息 get 'user', 'rk0001', 'info'
# 獲取user表中row key爲rk0001,info列族的name、age列標示符的信息 get 'user', 'rk0001', 'info:name', 'info:age'
# 獲取user表中row key爲rk0001,info、data列族的信息, 兩種寫法 get 'user', 'rk0001', 'info', 'data' get 'user', 'rk0001', {COLUMN => ['info', 'data']}
#獲取user表中row key爲rk0001,cell的值爲zhangsan的信息 get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:zhangsan')"}
# 獲取user表中row key爲rk0001,列標示符中含有a的信息 get 'user', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}
-
通過scan查詢(scan 條件)
get不能得到表中的全部信息,要獲取表中的全部信息需要通過scan
# 查詢user表中的所有信息 scan 'user'
# 查詢user表中列族爲info的信息 scan 'user', {COLUMNS => 'info'}
# 查詢user表中列族爲info和data的信息 scan 'user', {COLUMNS => ['info', 'data']} # 查詢user表中列族爲info列爲name和列族爲data列爲pic的信息 scan 'user', {COLUMNS => ['info:name', 'data:pic']}
# 查詢user表中列族爲info、列標示符爲name的信息,並且版本最新的5個 scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"} # 查詢user表中列族爲info,rk範圍是[rk0001, rk0003)的數據 scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'} # 查詢user表中row key以rk字符開頭的 scan 'user',{FILTER=>"PrefixFilter('rk')"}
# 查詢user表中指定範圍的數據 scan 'user', {TIMERANGE => [1582873430274, 1582873430774]}
3. 更新操作
-
更新數據:操作與插入相同
-
更新版本
# 將user表的f1列族版本號改爲5 alter 'user', NAME => 'info', VERSIONS => 5
4. 刪除操作
-
指定rowkey以及列名進行刪除
# 刪除user表row key爲rk0001,列標示符爲info:name的數據 delete 'user', 'rk0001', 'info:name' scan 'user'
-
指定rowkey,列名以及字段值進行刪除
# 刪除user表row key爲rk0001,列標示符爲data:pic,timestamp爲1392383705316的數據 delete 'user', 'rk0001', 'data:pic', 1582873430274
-
刪除一個列族
alter 'user', NAME => 'info', METHOD => 'delete' 或 alter 'user', 'delete' => 'info'
-
清空表數據
truncate 'user' scan 'user'
-
刪除表
# 首先需要先讓該表爲disable狀態 disable 'user' # 刪除表 drop 'user' list