HBase第三天——HBase Shell 操作


HBase第三天——HBase Shell 操作

自己的話:我願平東海,身沉心不改;
大海無平期,我心無絕時。

HBase常用shell操作


HBASE的表模型基本介紹

在這裏插入圖片描述

一、基本操作

1.進入 HBase 客戶端命令行

[hadoop1 hbase]$ bin/hbase shell

2.查看幫助命令

hbase(main):001:0> help

在這裏插入圖片描述

3.查看當前數據庫中有哪些表

hbase(main):002:0> list

在這裏插入圖片描述



二、表的操作

1.創建表

hbase(main):001:0> create 'student','info'

2.插入數據到表

hbase(main):002:0> put 'student','1001','info:name','chunlei'
hbase(main):003:0> put 'student','1001','info:sex','male'
hbase(main):004:0> put 'student','1001','info:age','18'
hbase(main):005:0> put 'student','1002','info:name','Janna'
hbase(main):006:0> put 'student','1002','info:sex','female'
hbase(main):007:0> put 'student','1002','info:age','20'

3.掃描查看錶數據

hbase(main):008:0> scan 'student'
hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW => 
'1002'}
hbase(main):010:0> scan 'student',{STARTROW => '1001'}

4.查看錶結構

hbase(main):011:0> describe ‘student’ 

5.更新指定字段的數據

hbase(main):012:0> put 'student','1001','info:name','Nick'
hbase(main):013:0> put 'student','1001','info:age','100'

6.查看“指定行”或“指定列族:列”的數據

hbase(main):014:0> get 'student','1001'
hbase(main):015:0> get 'student','1001','info:name'

7.統計表數據行數

hbase(main):021:0> count 'student'

8.變更表信息

將 info 列族中的數據存放 3 個版本:
hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3}
hbase(main):022:0> get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}

9.刪除數據

刪除某 rowkey 的全部數據:
hbase(main):016:0> deleteall 'student','1001'

刪除某 rowkey 的某一列數據:
hbase(main):017:0> delete 'student','1002','info:sex'

10.清空表數據

hbase(main):018:0> truncate 'student'

11.刪除表

首先需要先讓該表爲 disable 狀態:
hbase(main):019:0> disable 'student'

然後才能 drop 這個表:
hbase(main):020:0> drop 'student'

提示:如果直接 drop 表,會報錯:ERROR: Table student is enabled. Disable it first.


三、HBase的高級shell管理命令

1、status

例如:顯示服務器狀態
hbase(main):058:0> status ‘node01’

2、whoami

顯示HBase當前用戶,例如:
hbase> whoami

3、list

顯示當前所有的表

4、count

統計指定表的記錄數,例如:
hbase> count ‘user’

5、describe

展示表結構信息

6、exists

檢查表是否存在,適用於表量特別多的情況

7、is_enabled、is_disabled

檢查表是否啓用或禁用

8、alter

該命令可以改變表和列族的模式,例如:
爲當前表增加列族:

hbase> alter 'user', NAME => 'CF2', VERSIONS => 2

爲當前表刪除列族:

hbase(main):002:0>  alter 'user', 'delete' => 'CF2'

9、disable/enable

禁用一張表/啓用一張表

10、drop

刪除一張表,記得在刪除表之前必須先禁用

11、truncate

禁用表-刪除表-創建表


四、常用shell操作(補充)

1、進入HBase客戶端命令操作界面
$ bin/hbase shell
2、查看幫助命令
hbase(main):001:0> help
3、查看當前數據庫中有哪些表
hbase(main):002:0> list
4、創建一張表
創建user表,包含info、data兩個列族
hbase(main):010:0> create 'user', 'info', 'data'
或者
hbase(main):010:0> create 'user', {NAME => 'info', VERSIONS => '3'}{NAME => 'data'}
5、添加數據操作

向user表中插入信息,row key爲rk0001,列族info中添加name列標示符,值爲zhangsan

hbase(main):011:0> put 'user', 'rk0001', 'info:name', 'zhangsan'

向user表中插入信息,row key爲rk0001,列族info中添加gender列標示符,值爲female

hbase(main):012:0> put 'user', 'rk0001', 'info:gender', 'female'

向user表中插入信息,row key爲rk0001,列族info中添加age列標示符,值爲20

hbase(main):013:0> put 'user', 'rk0001', 'info:age', 20

向user表中插入信息,row key爲rk0001,列族data中添加pic列標示符,值爲picture

hbase(main):014:0> put 'user', 'rk0001', 'data:pic', 'picture'
6、查詢數據操作

(1)通過rowkey進行查詢

獲取user表中row key爲rk0001的所有信息

hbase(main):015:0> get 'user', 'rk0001'

(2)查看rowkey下面的某個列族的信息

獲取user表中row key爲rk0001,info列族的所有信息

hbase(main):016:0> get 'user', 'rk0001', 'info'

(3)查看rowkey指定列族指定字段的值

獲取user表中row key爲rk0001,info列族的name、age列標示符的信息

hbase(main):017:0> get 'user', 'rk0001', 'info:name', 'info:age'

(4)查看rowkey指定多個列族的信息

獲取user表中row key爲rk0001,info、data列族的信息

hbase(main):018:0> get 'user', 'rk0001', 'info', 'data'

或者你也可以這樣寫
hbase(main):019:0> get 'user', 'rk0001', {COLUMN => ['info', 'data']}
或者你也可以這樣寫
hbase(main):020:0> get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']}

(5)指定rowkey與列值查詢

獲取user表中row key爲rk0001,cell的值爲zhangsan的信息

hbase(main):030:0> get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:lisi)"}

(6)指定rowkey與列值模糊查詢

獲取user表中row key爲rk0001,列標示符中含有a的信息
hbase(main):031:0> get 'user', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}
繼續插入一批數據
hbase(main):032:0> put 'user', 'rk0002', 'info:name', 'fanbingbing'
hbase(main):033:0> put 'user', 'rk0002', 'info:gender', 'female'
hbase(main):034:0> put 'user', 'rk0002', 'info:nationality', '中國'
hbase(main):035:0> get 'user', 'rk0002', {FILTER => "ValueFilter(=, 'binary:中國')"}

(7)查詢所有數據

查詢user表中的所有信息
scan 'user'

(8)列族查詢

查詢user表中列族爲info的信息
scan 'user', {COLUMNS => 'info'}
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']}
scan 'user', {COLUMNS => ['info:name', 'data:pic']}

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

查詢user表中列族爲info、列標示符爲name的信息

scan 'user', {COLUMNS => 'info:name'}

(11)指定列族與列名以及限定版本查詢

查詢user表中列族爲info、列標示符爲name的信息,並且版本最新的5個

scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}

(12)指定多個列族與按照數據值模糊查詢

查詢user表中列族爲info和data且列標示符中含有a字符的信息

scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}

(13)rowkey的範圍值查詢

查詢user表中列族爲info,rk範圍是[rk0001, rk0003)的數據

scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

(14)指定rowkey模糊查詢

查詢user表中row key以rk字符開頭的

scan 'user',{FILTER=>"PrefixFilter('rk')"}

(15)指定數據範圍值查詢

查詢user表中指定範圍的數據

scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}
7、更新數據操作

(1)更新數據值
更新操作同插入操作一模一樣,只不過有數據就更新,沒數據就添加

(2)更新版本號

將user表的f1列族版本號改爲5

hbase(main):050:0> alter 'user', NAME => 'info', VERSIONS => 5
8、刪除數據以及刪除表操作

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

刪除user表row key爲rk0001,列標示符爲info:name的數據

hbase(main):045:0> 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 => 'info', METHOD => 'delete' 
或 
alter 'user', 'delete' => 'info'

(4)清空表數據

hbase(main):017:0> truncate 'user'

(5)刪除表

首先需要先讓該表爲disable狀態,使用命令:

hbase(main):049:0> disable 'user'

然後才能drop這個表,使用命令:

hbase(main):050:0> drop 'user'

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

9、統計一張表有多少行數據
hbase(main):053:0> count 'user'

風吹北巷南街傷 花落南國北亭涼

故事很多 未來能有多長

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章