1. 程式人生 > >HBase shell基本命令

HBase shell基本命令

獲得某一個命令的詳細資訊

help ‘status’

hbase(main):006:0> help 'status'
Show cluster status. Can be 'summary', 'simple', 'detailed', or 'replication'. The
default is 'summary'. Examples:

  hbase> status
  hbase> status 'simple'
  hbase> status 'summary'
  hbase> status 'detailed'
  hbase> status 'replication'
  hbase> status 'replication', 'source'
  hbase> status 'replication', 'sink'

查詢伺服器狀態

status

hbase(main):007:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 7.0000 average load

檢視所有表

list

hbase(main):008:0> list
TABLE                                                                                                                                                                              
student
course                                                                                                                                                 
member                                                                                                                                                                             
5 row(s) in 0.0710 seconds

=> ["course", "student","member"]

建立一個表

create ‘FileTable’,‘fileInfo’,‘saveInfo’

hbase(main):001:0> create 'man','basic','extend'
0 row(s) in 2.7520 seconds

=> Hbase::Table - man

獲得表的描述

describe ‘FileTable’

hbase(main):002:0> describe 'man'
Table man is ENABLED                                                                                                                                 
man                                                                                                                                                  
COLUMN FAMILIES DESCRIPTION                                                                                                                          
{NAME => 'basic', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => '
FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                          
{NAME => 'extend', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 
'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                         
2 row(s) in 0.1980 seconds

新增一個列族

alter ‘FileTable’, ‘cf’

hbase(main):003:0> alter 'man','cf'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.0370 seconds

注意:最好不要修改列簇,因為涉及到物理儲存更新,所以最好在建表的時候,指定好表結構,之後儘量不要去修改。可以看到當新增一個列簇的時候,執行了update all region操作。

刪除一個列簇

alter ‘man’, {NAME => ‘cf’, METHOD => ‘delete’}

hbase(main):014:0> alter 'man',{NAME=>'cf',METHOD=>'delete'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.3180 seconds

注意:NAME 和 METHOD必須為大寫,這事規定。

插入資料

hbase(main):004:0> put 'man', 'rowkey1','basic:name','zs'
0 row(s) in 0.1850 seconds

hbase(main):005:0> put 'man', 'rowkey1','basic:age','18'
0 row(s) in 0.0090 seconds

hbase(main):006:0> put 'man', 'rowkey1','basic:sex','male'
0 row(s) in 0.0100 seconds

hbase(main):007:0> put 'man', 'rowkey1','extend:salary','0'
0 row(s) in 0.0080 seconds

hbase(main):008:0> put 'man', 'rowkey1','extend:job','student'
0 row(s) in 0.0080 seconds

hbase(main):009:0> put 'man', 'rowkey2','basic:name','jack'
0 row(s) in 0.0070 seconds

hbase(main):010:0> put 'man', 'rowkey2','basic:age','26'
0 row(s) in 0.0080 seconds

hbase(main):011:0> put 'man', 'rowkey2','basic:sex','male'
0 row(s) in 0.0100 seconds

hbase(main):012:0> put 'man', 'rowkey2','extend:job','IT'
0 row(s) in 0.0110 seconds

hbase(main):013:0> put 'man', 'rowkey2','extend:salary','20000'
0 row(s) in 0.0130 seconds

查詢表中有多少行(多少個rowkey)

count ‘man’

hbase(main):025:0> count 'FileTable'
2 row(s) in 0.0450 seconds

獲取一個rowkey的所有資料

get ‘man’, ‘rowkey1’

hbase(main):015:0> get 'man','rowkey1'
COLUMN                                 CELL                                                                                                          
 basic:age                             timestamp=1541177216436, value=18                                                                             
 basic:name                            timestamp=1541177216371, value=zs                                                                             
 basic:sex                             timestamp=1541177216528, value=male                                                                           
 extend:job                            timestamp=1541177216611, value=student                                                                        
 extend:salary                         timestamp=1541177216569, value=0                                                                              
5 row(s) in 0.0250 seconds

獲得一個列簇中的所有資料

get ‘man’, ‘rowkey1’, ‘basic’

hbase(main):017:0> get 'man','rowkey1','basic'
COLUMN                                 CELL                                                                                                          
 basic:age                             timestamp=1541177216436, value=18                                                                             
 basic:name                            timestamp=1541177216371, value=zs                                                                             
 basic:sex                             timestamp=1541177216528, value=male                                                                           
3 row(s) in 0.0200 seconds

查詢整表資料

scan ‘man’

hbase(main):019:0> scan 'man'
ROW                                    COLUMN+CELL                                                                                                   
 rowkey1                               column=basic:age, timestamp=1541177216436, value=18                                                           
 rowkey1                               column=basic:name, timestamp=1541177216371, value=zs                                                          
 rowkey1                               column=basic:sex, timestamp=1541177216528, value=male                                                         
 rowkey1                               column=extend:job, timestamp=1541177216611, value=student                                                     
 rowkey1                               column=extend:salary, timestamp=1541177216569, value=0                                                        
 rowkey2                               column=basic:age, timestamp=1541177216697, value=26                                                           
 rowkey2                               column=basic:name, timestamp=1541177216655, value=jack                                                        
 rowkey2                               column=basic:sex, timestamp=1541177216726, value=male                                                         
 rowkey2                               column=extend:job, timestamp=1541177216759, value=IT                                                          
 rowkey2                               column=extend:salary, timestamp=1541177217293, value=20000                                                    
2 row(s) in 0.0580 seconds

掃描整個列簇

scan ‘man’, {COLUMN=>‘basic’}

hbase(main):020:0> scan 'man', {COLUMN=>'basic'}
ROW                                    COLUMN+CELL                                                                                                   
 rowkey1                               column=basic:age, timestamp=1541177216436, value=18                                                           
 rowkey1                               column=basic:name, timestamp=1541177216371, value=zs                                                          
 rowkey1                               column=basic:sex, timestamp=1541177216528, value=male                                                         
 rowkey2                               column=basic:age, timestamp=1541177216697, value=26                                                           
 rowkey2                               column=basic:name, timestamp=1541177216655, value=jack                                                        
 rowkey2                               column=basic:sex, timestamp=1541177216726, value=male                                                         
2 row(s) in 0.0500 seconds

指定掃描其中的某個列

scan ‘man’, {COLUMNS=> ‘basic:name’}

hbase(main):021:0> scan 'man', {COLUMNS=> 'basic:name'}
ROW                                    COLUMN+CELL                                                                                                   
 rowkey1                               column=basic:name, timestamp=1541177216371, value=zs                                                          
 rowkey2                               column=basic:name, timestamp=1541177216655, value=jack                                                        
2 row(s) in 0.0280 seconds

除了列(COLUMNS)修飾詞外,HBase還支援Limit(限制查詢結果行數),STARTROW(ROWKEY起始行。會先根據這個key定位到region,再向後掃描)、STOPROW(結束行)、TIMERANGE(限定時間戳範圍)、VERSIONS(版本數)、和FILTER(按條件過濾行)等。比如我們從RowKey1這個rowkey開始,找下一個行的最新版本

hbase(main):022:0> scan 'man',{STARTROW=>'rowkey1',LIMIT=>1,VERSION=>1}
ROW                                    COLUMN+CELL                                                                                                   
 rowkey1                               column=basic:age, timestamp=1541177216436, value=18                                                           
 rowkey1                               column=basic:name, timestamp=1541177216371, value=zs                                                          
 rowkey1                               column=basic:sex, timestamp=1541177216528, value=male                                                         
 rowkey1                               column=extend:job, timestamp=1541177216611, value=student                                                     
 rowkey1                               column=extend:salary, timestamp=1541177216569, value=0                                                        
1 row(s) in 0.0190 seconds

Filter是一個非常強大的修飾詞,可以設定一系列條件來進行過濾。比如我們要限制名稱為file1.txt

scan ‘man’, FILTER=>“ValueFilter(=,'name:zs’)”

FILTER中支援多個過濾條件通過括號、AND和OR的條件組合

scan ‘man’, FILTER=>“ColumnPrefixFilter(‘sex’) AND ValueFilter ValueFilter(=,‘substring:10’)”

通過delete命令,我們可以刪除某個欄位,接下來的get就無結果

delete ‘man’,‘rowkey1’,‘basic:age’

get ‘man’,‘rowkey1’,‘basic:age’

hbase(main):025:0> delete 'man','rowkey1','basic:age'
0 row(s) in 0.0380 seconds

hbase(main):026:0> 
hbase(main):027:0* get  'man','rowkey1','basic:age'
COLUMN                                 CELL                                                                                                          
0 row(s) in 0.0140 seconds

刪除整行的值

deleteall ‘man’,‘rowkey1’
get ‘man’,’rowkey1’

hbase(main):017:0> deleteall 'man','rowkey1'
0 row(s) in 0.0130 seconds

hbase(main):018:0> get 'man','rowkey1'
COLUMN                                        CELL                                                                                                                                 
0 row(s) in 0.0040 seconds

注意:這裡根據rowkey刪除,需要使用deleteall

通過enable和disable來啟用/禁用這個表,相應的可以通過is_enabled和is_disabled來檢查表是否被禁用

is_enabled ‘man’
is_disabled ‘man’

hbase(main):020:0> is_enabled 'man'
true                                                                                                                                                                               
0 row(s) in 0.0990 seconds

hbase(main):021:0> is_disabled 'man'
false                                                                                                                                                                              
0 row(s) in 0.0240 seconds

刪除表需要先將表disable

disable ‘man’
drop ‘man’

hbase(main):029:0> disable 'man'
0 row(s) in 2.4430 seconds

hbase(main):030:0> drop 'man'
0 row(s) in 1.3180 seconds

使用exists來檢查表是否存在

exists ‘FileTable’

hbase(main):028:0> exists 'man'
Table man does exist                                                                                                                                                         
0 row(s) in 0.0340 seconds