1. 程式人生 > >HBase命令終端測試

HBase命令終端測試

region run 進行 art 所有 -s ttr mit eat

[root@CloudDeskTop ~]# su -l hadoop
[hadoop@CloudDeskTop ~]$ cd /software/hbase-1.2.6/bin/
[hadoop@CloudDeskTop bin]$ type hbase
hbase is /software/hbase-1.2.6/bin/hbase
[hadoop@CloudDeskTop bin]$ hbase shell

技術分享圖片

表空間
hbase默認有兩個表空間,它們是default和hbase

列出有多少個表空間
hbase(main):003:0> list_namespace
NAMESPACE
default (當未指定表空間時,數據存放在此處)
hbase(存放元數據的表空間)

查看default表空間下有哪些表:
>>list_namespace_tables ‘default‘
禁止創建表到hbase表空間下
>>list_namespace_tables ‘hbase‘

創建表空間:
>>create_namespace ‘mmzs‘
查看表空間信息:
>>describe_namespace ‘mmzs‘
刪除表空間:
>>drop_namespace ‘mmzs‘

創建表tuser,該表中有兩個列族baseinfo和extrainfo,baseinfo族中存儲的每個值的最近時間版本數量為5,族參數 必須大寫,如NAME和VERSION
>>create ‘mmzs:tuser‘,{NAME=>‘baseinfo‘,VERSIONS=>5},{NAME=>‘extrainfo‘,VERSIONS=>3}
>>describe ‘mmzs:tuser‘

#會先判斷有沒有,有就修改,沒有就增加,修改是alter
修改表:修改表定義,修改列族baseinfo,將主版本數量改為3
>>alter ‘mmzs:tuser‘,{NAME=>‘baseinfo‘,VERSIONS=>3}
>>describe ‘mmzs:tuser‘

修改表:修改表定義,增加列族base
>>alter ‘mmzs:tuser‘,{NAME=>‘base‘,VERSIONS=>5}
>>describe ‘mmzs:tuser‘

修改表:修改表定義,刪除列族baseinfo,低版本的HBase需要先disable而不是alter,再delete
>>alter ‘mmzs:tuser‘,{NAME=>‘baseinfo‘,METHOD=>‘delete‘}
>>describe ‘mmzs:tuser‘

#刪除是drop
刪除表:
>>exists ‘mmzs:tuser‘
>>disable ‘mmzs:tuser‘
>>drop ‘mmzs:tuser‘
>>describe ‘mmzs:tuser‘

小結:

創建表:
命名空間的DDL語法為:xxx_namespace ‘namespace‘
表的DDL操作語法:
>>xxx ‘namespace:tablename‘,{NAME=‘yyyy‘,VERSION=‘number‘,METHOD=‘delete‘} 

創建表:
>>create ‘mmzs:tuser‘,{NAME=>‘base‘,VERSIONS=>5},{NAME=>‘extra‘,VERSIONS=>3}
增加鍵值對到表中:向mmzs表空間的tuser表中的base列族中添加name列,添加值為ligang
#‘base:name‘稱為鍵
#‘ligang‘稱為值
#修改和增加都是put,存在時是修改,不存在時是增加
>>put ‘mmzs:tuser‘,‘001‘,‘base:name‘,‘ligang‘
>>put ‘mmzs:tuser‘,‘001‘,‘base:age‘,13
查詢表中鍵對應的值:
>>get ‘mmzs:tuser‘,‘001‘,‘base:name‘
查詢001行的所有鍵值對
>>get ‘mmzs:tuser‘,‘001‘,‘base:name‘
修改鍵值對:
>>put ‘mmzs:tuser‘,‘001‘,‘base:name‘,‘zhangsan‘
刪除表中的鍵值對:
>>delete ‘mmzs:tuser‘,‘001‘,‘base:name‘


刪除表中的所有數據並重置表的結構,實際上truncate屬於DDL操作
>>truncate ‘mmzs:tuser‘


掃描表中的所有行的數據:
>>scan ‘mmzs:tuser‘

使用get_table預定義一個表對象的引用(ddl操作),
>>tuser=get_table ‘mmzs:tuser‘
>>tuser.scan

統計表中的行記錄數:
>>count ‘mmzs:tuser‘

小結:

hbase表的增刪改查操作語法:
>>copmmand ‘namespace:tabname‘,‘rowkey‘,‘family:fieldkey‘,‘fieldvalue‘


DDL數據檢索與查詢:
#get只能返回單行記錄中的鍵值對

//Some examples:
hbase> get ‘ns1:t1‘, ‘r1‘
hbase> get ‘t1‘, ‘r1‘
hbase> get ‘t1‘, ‘r1‘, {TIMERANGE => [ts1, ts2]}
hbase> get ‘t1‘, ‘r1‘, {COLUMN => ‘c1‘}
hbase> get ‘t1‘, ‘r1‘, {COLUMN => [‘c1‘, ‘c2‘, ‘c3‘]}
hbase> get ‘t1‘, ‘r1‘, {COLUMN => ‘c1‘, TIMESTAMP => ts1}
hbase> get ‘t1‘, ‘r1‘, {COLUMN => ‘c1‘, TIMERANGE => [ts1, ts2], VERSIONS => 4}
hbase> get ‘t1‘, ‘r1‘, {COLUMN => ‘c1‘, TIMESTAMP => ts1, VERSIONS => 4}
hbase> get ‘t1‘, ‘r1‘, {FILTER => "ValueFilter(=, ‘binary:abc‘)"}
hbase> get ‘t1‘, ‘r1‘, ‘c1‘
hbase> get ‘t1‘, ‘r1‘, ‘c1‘, ‘c2‘
hbase> get ‘t1‘, ‘r1‘, [‘c1‘, ‘c2‘]
hbase> get ‘t1‘, ‘r1‘, {COLUMN => ‘c1‘, ATTRIBUTES => {‘mykey‘=>‘myvalue‘}}
hbase> get ‘t1‘, ‘r1‘, {COLUMN => ‘c1‘, AUTHORIZATIONS => [‘PRIVATE‘,‘SECRET‘]}
hbase> get ‘t1‘, ‘r1‘, {CONSISTENCY => ‘TIMELINE‘}
hbase> get ‘t1‘, ‘r1‘, {CONSISTENCY => ‘TIMELINE‘, REGION_REPLICA_ID => 1}

根據行鍵檢索對應記錄中所有列族下的所有鍵值對:
根據行鍵和列族檢索對應列族中的所有鍵值對:
根據行鍵、列族和字段鍵檢索對應鍵值:
根據行鍵檢索對應記錄中所有列族下的所有鍵值對:
>>get ‘mmzs:tuser‘,‘001‘,‘base‘
>>get ‘mmzs:tuser‘,‘001‘,‘base‘,‘extra‘
>>get ‘mmzs:tuser‘,‘001‘,‘base:name‘,‘base:age‘
>>get ‘mmzs:tuser‘,‘001‘,{COLUMN=>[‘base:name‘,‘base:age‘]}
>>get ‘mmzs:tuser‘,‘001‘,{COLUMN=>[‘base:name‘,‘base:age‘],VERSION=>3}
>>get ‘mmzs:tuser‘,‘ligang+13‘,‘baseinfo‘,‘extra‘
#匹配含liubei的value值
>>get ‘mmzs:tuser‘,‘002‘,{FILTER=>"ValueFilter(=,‘substring:liubei‘)"}
#匹配含name字段的字段值
>>get ‘mmzs:tuser‘,‘002‘,{FILTER=>"QualifierFilter(=,‘substring:name‘)"}

#scan掃描多行記錄:

//Some examples:
hbase> scan ‘hbase:meta‘
hbase> scan ‘hbase:meta‘, {COLUMNS => ‘info:regioninfo‘}
hbase> scan ‘ns1:t1‘, {COLUMNS => [‘c1‘, ‘c2‘], LIMIT => 10, STARTROW => ‘xyz‘}
hbase> scan ‘t1‘, {COLUMNS => [‘c1‘, ‘c2‘], LIMIT => 10, STARTROW => ‘xyz‘}
hbase> scan ‘t1‘, {COLUMNS => ‘c1‘, TIMERANGE => [1303668804, 1303668904]}
hbase> scan ‘t1‘, {REVERSED => true}
hbase> scan ‘t1‘, {ALL_METRICS => true}
hbase> scan ‘t1‘, {METRICS => [‘RPC_RETRIES‘, ‘ROWS_FILTERED‘]}
hbase> scan ‘t1‘, {ROWPREFIXFILTER => ‘row2‘, FILTER => "
(QualifierFilter (>=, ‘binary:xyz‘)) AND (TimestampsFilter ( 123, 456))"}
hbase> scan ‘t1‘, {FILTER =>
org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)}
hbase> scan ‘t1‘, {CONSISTENCY => ‘TIMELINE‘}
For setting the Operation Attributes 
hbase> scan ‘t1‘, { COLUMNS => [‘c1‘, ‘c2‘], ATTRIBUTES => {‘mykey‘ => ‘myvalue‘}}
hbase> scan ‘t1‘, { COLUMNS => [‘c1‘, ‘c2‘], AUTHORIZATIONS => [‘PRIVATE‘,‘SECRET‘]}

根據列族檢索所有鍵值對:
>>scan ‘mmzs:tuser‘,{COLUMNS=>‘base‘}
>>scan ‘mmzs:tuser‘,{COLUMNS=>[‘base:name‘,‘extra:name‘]}
>>scan ‘mmzs:tuser‘,{COLUMNS=>[‘base‘,‘extra‘],FILTER=>"ValueFilter(=,‘substring:liubei‘)"}
>>scan ‘mmzs:tuser‘,{COLUMNS=>[‘base‘,‘extra‘],FILTER=>"QualifierFilter(=,‘substring:age‘)"}
>>scan ‘mmzs:tuser‘,{COLUMNS=>[‘base‘,‘extra‘],STARTROW=>‘002‘,ENDROW=>‘004‘}
#根據行鍵進行過濾,秒級速度
>>put ‘mmzs:tuser‘,‘ligang+20171205+chengdu‘,‘base:name‘,‘ligang‘
>>scan ‘mmzs:tuser‘,{ROWPREFIXFILTER=>‘ligang‘}
#掃描過濾後並用limit進行分頁處理,從第二行開始,顯示3行
>>scan ‘mmzs:tuser‘,{COLUMN=>[‘base‘,‘extra‘],STARTROW=>‘002‘,LIMIT=>3}

HBase命令終端測試