1. 程式人生 > 其它 >HBase shell 命令基本操作

HBase shell 命令基本操作

查詢資料操作

1 通過rowkey進行查詢

  • 獲取user表中row key為rk0001的所有資訊(即所有cell的資料)
  • 使用get命令
get 'user', 'rk0001'

2 檢視rowkey下某個列族的資訊

  • 獲取user表中row key為rk0001,info列族的所有資訊
get 'user', 'rk0001', 'info'

3 檢視rowkey指定列族指定欄位的值

  • 獲取user表中row key為rk0001,info列族的name、age列的資訊
get 'user', 'rk0001', 'info:name', 'info:age'

4 檢視rowkey指定多個列族的資訊

  • 獲取user表中row key為rk0001,info、data列族的資訊
get 'user', 'rk0001', 'info', 'data'

#或者你也可以這樣寫
get 'user', 'rk0001', {COLUMN => ['info', 'data']}

#或者你也可以這樣寫,也行
get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']}

5 指定rowkey與列值過濾器查詢

  • 獲取user表中row key為rk0001,cell的值為zhangsan的資訊
get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:zhangsan')"}

6 指定rowkey與列名模糊查詢

  • 獲取user表中row key為rk0001,列標示符中含有a的資訊
get 'user', 'rk0001', {FILTER => "QualifierFilter(=,'substring:a')"}

7 查詢所有行的資料

  • 查詢user表中的所有資訊
  • 使用scan命令
scan 'user'

8 列族查詢

  • 查詢user表中列族為info的資訊
scan 'user', {COLUMNS => 'info'}

#當把某些列的值刪除後,具體的資料並不會馬上從儲存檔案中刪除;查詢的時候,不顯示被刪除的資料;如果想要查詢出來的話,RAW => true
scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}

scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 3}

9 多列族查詢

  • 查詢user表中列族為info和data的資訊
scan 'user', {COLUMNS => ['info', 'data']}

10 指定列族與某個列名查詢

  • 查詢user表中列族為info、列標示符為name的資訊
scan 'user', {COLUMNS => 'info:name'}
  • 查詢info:name列、data:pic列的資料
scan 'user', {COLUMNS => ['info:name', 'data:pic']}
  • 查詢user表中列族為info、列標示符為name的資訊,並且版本最新的5個
scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}

11 指定多個列族與條件模糊查詢

  • 查詢user表中列族為info和data且列標示符中含有a字元的資訊
scan 'user', {COLUMNS => ['info', 'data'], FILTER => "QualifierFilter(=,'substring:a')"}

12 指定rowkey的範圍查詢

  • 查詢user表中列族為info,rk範圍是[rk0001, rk0003)的資料
scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

13 指定rowkey模糊查詢

  • 查詢user表中row key以rk字元開頭的資料
scan 'user',{FILTER=>"PrefixFilter('rk')"}

14 指定資料版本的範圍查詢

  • 查詢user表中指定範圍的資料(前閉後開)
scan 'user', {TIMERANGE => [1392368783980, 1610288780669]}

更新資料操作

1 更新資料值

  • 更新操作同插入操作一模一樣,只不過有資料就更新,沒資料就新增
  • 使用put命令

2 更新版本號

  • 將user表的info列族版本數改為5
alter 'user', NAME => 'info', VERSIONS => 5

刪除資料以及刪除表操作

1 指定rowkey以及列名進行刪除

  • 刪除user表row key為rk0001,列標示符為info:name的資料
delete 'user', 'rk0001', 'info:name'

2 指定rowkey,列名以及版本號進行刪除

  • 刪除user表row key為rk0001,列標示符為info:name,timestamp為1392383705316的資料
delete 'user', 'rk0001', 'info:name', 1392383705316

3 刪除一個列族

  • 刪除一個列族:
alter 'user', NAME => 'data', METHOD => 'delete' 
#或 
alter 'user', 'delete' => 'info'

4 清空表資料

truncate 'user'

5 刪除表

  • 首先需要先讓該表為disable狀態,使用命令:
disable 'user'
  • 然後使用drop命令刪除這個表
drop 'user'

(注意:如果直接drop表,會報錯:Drop the named table. Table must first be disabled)

統計一張表有多少行資料

count 'user'