天天看點

hbase shell學習-2

一個學生成績表的例子來示範hbase的用法。

name grade course
math english
Tom 5 97 87
Jim 4 89 80

表的建立:文法:create '表名稱','列簇名稱1','列簇名稱2'........

create 'student','name','grade','course'      
desc 'student'      

結果:

{
    NAME=>'course',
    DATA_BLOCK_ENCODING=>'NONE',
    BLOOMFILTER=>'ROW',
    REPLICATION_SCOPE=>'0',
    VERSIONS=>'1',
    COMPRESSION=>'NONE',
    MIN_VERSIONS=>'0',
    TTL=>'FOREVER',
    KEEP_DELETED_CELLS=>'FALSE',
    BLOCKSIZE=>'65536',
    IN_MEMORY=>'false',
    BLOCKCACHE=>'true'
}{
    NAME=>'grade',
    DATA_BLOCK_ENCODING=>'NONE',
    BLOOMFILTER=>'ROW',
    REPLICATION_SCOPE=>'0',
    VERSIONS=>'1',
    COMPRESSION=>'NONE',
    MIN_VERSIONS=>'0',
    TTL=>'FOREVER',
    KEEP_DELETED_CELLS=>'FALSE',
    BLOCKSIZE=>'65536',
    IN_MEMORY=>'false',
    BLOCKCACHE=>'true'
}{
    NAME=>'name',
    DATA_BLOCK_ENCODING=>'NONE',
    BLOOMFILTER=>'ROW',
    REPLICATION_SCOPE=>'0',
    VERSIONS=>'1',
    COMPRESSION=>'NONE',
    MIN_VERSIONS=>'0',
    TTL=>'FOREVER',
    KEEP_DELETED_CELLS=>'FALSE',
    BLOCKSIZE=>'65536',
    IN_MEMORY=>'false',
    BLOCKCACHE=>'true'
}      

新增列簇:

alter '表名稱',NAME='列簇名稱'

hbase(main):068:0> alter 'student',NAME=>'age'
Updating all regions with the new schema...
1/1 regions updated.      

删除列簇:

alter '表名稱',NAME=>'列簇名稱',METHOD=>'delete'

 alter 'student',NAME=>'test',METHOD=>'delete'      

删除一個表:之前,必須先将該表disable掉。

disable 'student'

drop 'student'      

給表添加記錄:

put '表名稱','rowkey','列簇名稱:列名稱','值'

put 'student','001201509011001','name','Tom'      
hbase(main):085:0> scan 'student'
ROW                           COLUMN+CELL
 001201509011001              column=name:, timestamp=1447766388162, value=Tom
1 row(s) in 0.0090 seconds      

繼續執行:name列簇的value='jim',但是rowkey 不變,

hbase(main):086:0> put 'student','001201509011001','name','Jim'      

結果還是一條資料,001201509011001的rowkey,被第二條資料覆寫。

scan 'student'
ROW                           COLUMN+CELL
 001201509011001              column=name:, timestamp=1447766492893, value=Jim      
put 'student','001201509011001','course:math','100'
put 'student','001201509011001','course:english','100'
      
hbase(main):096:0> scan 'student'
ROW                           COLUMN+CELL
 001201509011001              column=course:english, timestamp=1447766828720, value=100
 001201509011001              column=course:math, timestamp=1447766813289, value=100
 001201509011001              column=grade:, timestamp=1447766751652, value=2
 001201509011001              column=name:, timestamp=1447766492893, value=Jim
 001201509011002              column=name:, timestamp=1447766547713, value=Tom      

加了很多rowKey進行測試:如下

base(main):127:0> scan 'student'
ROW                           COLUMN+CELL
 001201509011001              column=course:english, timestamp=1447766828720, value=100
 001201509011001              column=course:math, timestamp=1447766813289, value=100
 001201509011001              column=grade:, timestamp=1447766751652, value=2
 001201509011001              column=name:, timestamp=1447766492893, value=Jim
 001201509011002              column=course:english, timestamp=1447766987607, value=95
 001201509011002              column=course:math, timestamp=1447767003501, value=80
 001201509011002              column=grade:, timestamp=1447767073299, value=6
 001201509011002              column=name:, timestamp=1447766547713, value=Tom
 001201509011003              column=grade:, timestamp=1447767130750, value=5
 001201509011004              column=grade:, timestamp=1447767139371, value=3
 001201509011005              column=grade:, timestamp=1447767146338, value=3
 001201509011006              column=course:math, timestamp=1447767489278, value=30
 001201509011006              column=grade:, timestamp=1447767153088, value=2
 001201509011007              column=course:math, timestamp=1447767474245, value=87
 001201509011007              column=grade:, timestamp=1447767173296, value=2
 001201509011008              column=grade:, timestamp=1447767181639, value=3
 001201509011008              column=name:, timestamp=1447767278902, value=lucy
 001201509011009              column=grade:, timestamp=1447767190450, value=10
 001201509011009              column=name:, timestamp=1447767257259, value=Mike
 001201509011010              column=grade:, timestamp=1447767198644, value=11
 001201509011010              column=name:, timestamp=1447767236548, value=Peter      

根據rowkey檢視對應列的資料:

get '表名稱','rowkey','列簇名稱:列名稱'

get 'student','001201509011001','name'      
COLUMN                        CELL
 name:                        timestamp=1447766492893, value=Jim      

檢視表中的記錄數:根據列簇來統計:

hbase(main):133:0* count 'student'      

結果:10

查詢表中指定列的所有記錄:

文法:scan '表名',{COLUMNS =>'列簇'}

hbase(main):134:0> scan 'student',{COLUMNS=>'name'}      
ROW                           COLUMN+CELL
 001201509011001              column=name:, timestamp=1447766492893, value=Jim
 001201509011002              column=name:, timestamp=1447766547713, value=Tom
 001201509011008              column=name:, timestamp=1447767278902, value=lucy
 001201509011009              column=name:, timestamp=1447767257259, value=Mike
 001201509011010              column=name:, timestamp=1447767236548, value=Peter      
hbase(main):135:0> scan 'student',{COLUMNS=>'grade'}
ROW                           COLUMN+CELL
 001201509011001              column=grade:, timestamp=1447766751652, value=2
 001201509011002              column=grade:, timestamp=1447767073299, value=6
 001201509011003              column=grade:, timestamp=1447767130750, value=5
 001201509011004              column=grade:, timestamp=1447767139371, value=3
 001201509011005              column=grade:, timestamp=1447767146338, value=3
 001201509011006              column=grade:, timestamp=1447767153088, value=2
 001201509011007              column=grade:, timestamp=1447767173296, value=2
 001201509011008              column=grade:, timestamp=1447767181639, value=3
 001201509011009              column=grade:, timestamp=1447767190450, value=10
 001201509011010              column=grade:, timestamp=1447767198644, value=11
10 row(s) in 0.0220 seconds      
hbase(main):136:0> scan 'student',{COLUMNS=>'course'}
ROW                           COLUMN+CELL
 001201509011001              column=course:english, timestamp=1447766828720, value=100
 001201509011001              column=course:math, timestamp=1447766813289, value=100
 001201509011002              column=course:english, timestamp=1447766987607, value=95
 001201509011002              column=course:math, timestamp=1447767003501, value=80
 001201509011006              column=course:math, timestamp=1447767489278, value=30
 001201509011007              column=course:math, timestamp=1447767474245, value=87
4 row(s) in 0.0130 seconds      

查詢表中指定區間的所有記錄數:

也可以指定一些修飾詞:TIMERANGE, FILTER, LIMIT, STARTROW, STOPROW, TIMESTAMP, MAXLENGTH,or COLUMNS。沒任何修飾詞,就是上邊例句,就會顯示所有資料行。

文法:scan '表名',{COLUMNS =>'列簇',LIMIT =>記錄數,STARTROW=>'開始rowkey',STOPROW=>'結束rowkey'}

取出name列族,前3條記錄

hbase(main):012:0> scan 'student',{COLUMNS=>['name'],LIMIT=>3}
ROW                           COLUMN+CELL
 001201509011001              column=name:, timestamp=1447766492893, value=Jim
 001201509011002              column=name:, timestamp=1447766547713, value=Tom
 001201509011008              column=name:, timestamp=1447767278902, value=lucy      

取出name列族,前3條記錄 rowkey[001201509011001,001201509011008) 左邊閉合,右邊開的資料。

hbase(main):014:0> scan 'student',{COLUMNS=>['name'],LIMIT=>3,STARTROW=>'001201509011001',STOPROW=>'001201509011008'}
ROW                           COLUMN+CELL
 001201509011001              column=name:, timestamp=1447766492893, value=Jim
 001201509011002              column=name:, timestamp=1447766547713, value=Tom      

指定兩列:name,grade

hbase(main):018:0> scan 'student',{COLUMNS=>['name','grade'],STARTROW=>'001201509011001',STOPROW=>'001201509011010'}      
ROW                           COLUMN+CELL
 001201509011001              column=grade:, timestamp=1447766751652, value=2
 001201509011001              column=name:, timestamp=1447766492893, value=Jim
 001201509011002              column=grade:, timestamp=1447767073299, value=6
 001201509011002              column=name:, timestamp=1447766547713, value=Tom
 001201509011003              column=grade:, timestamp=1447767130750, value=5
 001201509011004              column=grade:, timestamp=1447767139371, value=3
 001201509011005              column=grade:, timestamp=1447767146338, value=3
 001201509011006              column=grade:, timestamp=1447767153088, value=2
 001201509011007              column=grade:, timestamp=1447767173296, value=2
 001201509011008              column=grade:, timestamp=1447767181639, value=3
 001201509011008              column=name:, timestamp=1447767278902, value=lucy
 001201509011009              column=grade:, timestamp=1447767190450, value=10
 001201509011009              column=name:, timestamp=1447767257259, value=Mike      

可以根據 TIMERANGE查詢:

hbase(main):020:0> scan 'student',{COLUMNS=>['grade'],LIMIT => 3,TIMERANGE=>[1447766751652,1447767257259]}      
ROW                           COLUMN+CELL
 001201509011001              column=grade:, timestamp=1447766751652, value=2
 001201509011002              column=grade:, timestamp=1447767073299, value=6
 001201509011003              column=grade:, timestamp=1447767130750, value=5      

删除資料:

rowkey=001201509011002 的資料有4列

hbase(main):024:0> get 'student','001201509011002'
COLUMN                        CELL
 course:english               timestamp=1447766987607, value=95
 course:math                  timestamp=1447767003501, value=80
 grade:                       timestamp=1447767073299, value=6
 name:                        timestamp=1447766547713, value=Tom      

删除一行資料:

hbase(main):027:0> delete 'student','001201509011002','grade'
      
hbase(main):028:0> get 'student','001201509011002'
COLUMN                        CELL
 course:english               timestamp=1447766987607, value=95
 course:math                  timestamp=1447767003501, value=80
 name:                        timestamp=1447766547713, value=Tom      

檢視那一行的資料:發現沒有了。

hbase(main):033:0> scan 'student',{COLUMNS=>['grade'],STARTROW=>'001201509011002',STOPROW=>'001201509011003'}
ROW                           COLUMN+CELL
0 row(s) in 0.0080 seconds      

Face your past without regret. Handle your present with confidence.Prepare for future without fear. keep the faith and drop the fear.

面對過去無怨無悔,把握現在充滿信心,備戰未來無所畏懼。保持信念,克服恐懼!一點一滴的積累,一點一滴的沉澱,學技術需要不斷的積澱!