hadoop2.7.3
hbase1.x,如果还没安装hbase,请点击这里安装hbase
启动hadoop及hbase
start-all.sh
start-hbase.sh
进入hbase shell命令
hbase shell
hbase(main):003:0> list
TABLE
0 row(s) in 0.0500 seconds
=> []
最开始hbase还没有任何表
语法: create '表名','列族1','列族2'
hbase(main):004:0> create 'Student','baseInfo','schoolInfo'
0 row(s) in 1.3250 seconds
=> Hbase::Table - Student
语法:desc '表名'
hbase(main):005:0> describe 'Student'
Table Student is ENABLED
Student
COLUMN FAMILIES DESCRIPTION
{NAME => 'baseInfo', 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 => 'schoolInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'fals
e', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVE
R', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE
=> '65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.0890 seconds
查看表是否启用
hbase(main):006:0> is_enabled 'Student'
true
0 row(s) in 0.0200 seconds
禁用表
hbase(main):007:0> disable 'Student'
0 row(s) in 2.2660 seconds
hbase(main):008:0> is_enabled 'Student'
false
0 row(s) in 0.0270 seconds
启用表
hbase(main):009:0> enable 'Student'
0 row(s) in 1.2520 seconds
hbase(main):010:0> is_enabled 'Student'
true
0 row(s) in 0.0150 seconds
删除表之前,需先禁用表
hbase(main):012:0> disable 'Student'
0 row(s) in 2.2390 seconds
删除表
hbase(main):013:0> drop 'Student'
0 row(s) in 1.2630 seconds
确认表是否已经被删除
hbase(main):015:0> exists 'Student'
Table Student does not exist
0 row(s) in 0.0090 seconds
上一步已经删除了Student表,现在先将表再次创建出来
hbase(main):016:0> create 'Student','baseInfo','schoolInfo'
0 row(s) in 2.2290 seconds
=> Hbase::Table - Student
添加列族
hbase(main):017:0> alter 'Student','teacherInfo'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9380 seconds
hbase(main):018:0> describe 'Student'
Table Student is ENABLED
Student
COLUMN FAMILIES DESCRIPTION
{NAME => 'baseInfo', 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 => 'schoolInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'fals
e', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVE
R', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE
=> '65536', REPLICATION_SCOPE => '0'}
{NAME => 'teacherInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'fal
se', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREV
ER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE
=> '65536', REPLICATION_SCOPE => '0'}
3 row(s) in 0.0130 seconds
删除列族
删除列族
hbase(main):019:0> alter 'Student',{NAME=>'teacherInfo', METHOD =>'delete'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.3900 seconds
查看表结构
hbase(main):020:0> describe 'Student'
Table Student is ENABLED
Student
COLUMN FAMILIES DESCRIPTION
{NAME => 'baseInfo', 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 => 'schoolInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'fals
e', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVE
R', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE
=> '65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.0180 seconds
插入/更新数据
语法:put ‘表名’, ‘行键’,‘列族:列’,‘值’
注意:如果新增数据的行键值、列族名、列名与原有数据完全相同(除了值之外),则相当于更新操作,否则为插入操作。
put插入一些数据
put 'Student', 'rowkey1','baseInfo:name','jim'
put 'Student', 'rowkey1','baseInfo:birthday','1990-01-09'
put 'Student', 'rowkey1','baseInfo:age','18'
put 'Student', 'rowkey1','schoolInfo:name','Havard'
put 'Student', 'rowkey1','schoolInfo:localtion','Boston'
put 'Student', 'rowkey2','baseInfo:name','jack'
put 'Student', 'rowkey2','baseInfo:birthday','1998-08-22'
put 'Student', 'rowkey2','baseInfo:age','21'
put 'Student', 'rowkey2','schoolInfo:name','yale'
put 'Student', 'rowkey2','schoolInfo:localtion','New Haven'
put 'Student', 'rowkey3','baseInfo:name','maike'
put 'Student', 'rowkey3','baseInfo:birthday','1995-01-22'
put 'Student', 'rowkey3','baseInfo:age','24'
put 'Student', 'rowkey3','schoolInfo:name','yale'
put 'Student', 'rowkey3','schoolInfo:localtion','New Haven'
put 'Student', 'wrowkey4','baseInfo:name','maike-jack'
put更新操作
hbase(main):021:0> put 'Student','rowkey1','baseInfo:name','tom'
0 row(s) in 0.0760 seconds
hbase(main):022:0> put 'Student','rowkey1','baseInfo:birthday','1990-01-01'
0 row(s) in 0.0710 seconds
hbase(main):024:0> put 'Student','rowkey1','baseInfo:age','29'
0 row(s) in 0.0080 seconds
删除行数据
查看行数据
hbase(main):042:0> get 'Student','rowkey3'
COLUMN CELL
baseInfo:age timestamp=1600789513388, value=24
baseInfo:birthday timestamp=1600789513369, value=1995-01-22
baseInfo:name timestamp=1600789513349, value=maike
schoolInfo:localtion timestamp=1600789513415, value=New Haven
schoolInfo:name timestamp=1600789513405, value=yale
1 row(s) in 0.0110 seconds
删除指定行中指定列的数据
hbase(main):043:0> delete 'Student','rowkey3','baseInfo:name'
0 row(s) in 0.0240 seconds
再次查看行数据
hbase(main):044:0> get 'Student','rowkey3'
COLUMN CELL
baseInfo:age timestamp=1600789513388, value=24
baseInfo:birthday timestamp=1600789513369, value=1995-01-22
schoolInfo:localtion timestamp=1600789513415, value=New Haven
schoolInfo:name timestamp=1600789513405, value=yale
1 row(s) in 0.0070 seconds
hbase中访问数据有两种基本的方式:
按指定rowkey获取数据:get方法;
按指定条件获取数据:scan方法。
scan
可以设置begin和end参数来访问一个范围内所有的数据。get本质上就是begin和end相等的一种特殊的scan。
GET查询
按rowkey查询
hbase(main):059:0> get 'Student','rowkey3'
COLUMN CELL
baseInfo:age timestamp=1600789513388, value=24
baseInfo:birthday timestamp=1600789513369, value=1995-01-22
schoolInfo:localtion timestamp=1600789513415, value=New Haven
schoolInfo:name timestamp=1600789513405, value=yale
1 row(s) in 0.0110 seconds
按rowkey和列族来查询
hbase(main):060:0> get 'Student','rowkey3','baseInfo'
COLUMN CELL
baseInfo:age timestamp=1600789513388, value=24
baseInfo:birthday timestamp=1600789513369, value=1995-01-22
1 row(s) in 0.0070 seconds
按rowkey和列族中的某列来查询
hbase(main):061:0> get 'Student','rowkey3','baseInfo:age'
COLUMN CELL
baseInfo:age timestamp=1600789513388, value=24
1 row(s) in 0.0090 seconds
hbase(main):062:0>
SCAN查询
hbase(main):065:0> scan 'Student'
ROW COLUMN+CELL
rowkey1 column=baseInfo:age, timestamp=1600789446674, value=29
rowkey1 column=baseInfo:birthday, timestamp=1600789402212, value=1990-01-01
rowkey1 column=baseInfo:name, timestamp=1600789375235, value=tom
rowkey1 column=schoolInfo:localtion, timestamp=1600789503013, value=Boston
rowkey1 column=schoolInfo:name, timestamp=1600789500988, value=Havard
rowkey2 column=baseInfo:age, timestamp=1600789513297, value=21
rowkey2 column=baseInfo:birthday, timestamp=1600789513285, value=1998-08-22
rowkey2 column=baseInfo:name, timestamp=1600789513258, value=jack
rowkey2 column=schoolInfo:localtion, timestamp=1600789513328, value=New Haven
rowkey2 column=schoolInfo:name, timestamp=1600789513314, value=yale
rowkey3 column=baseInfo:age, timestamp=1600789513388, value=24
rowkey3 column=baseInfo:birthday, timestamp=1600789513369, value=1995-01-22
rowkey3 column=schoolInfo:localtion, timestamp=1600789513415, value=New Haven
rowkey3 column=schoolInfo:name, timestamp=1600789513405, value=yale
wrowkey4 column=baseInfo:name, timestamp=1600789515763, value=maike-jack
4 row(s) in 0.0180 seconds
hbase(main):068:0> scan 'Student',{COLUMN=>'baseInfo'}
ROW COLUMN+CELL
rowkey1 column=baseInfo:age, timestamp=1600789446674, value=29
rowkey1 column=baseInfo:birthday, timestamp=1600789402212, value=1990-01-01
rowkey1 column=baseInfo:name, timestamp=1600789375235, value=tom
rowkey2 column=baseInfo:age, timestamp=1600789513297, value=21
rowkey2 column=baseInfo:birthday, timestamp=1600789513285, value=1998-08-22
rowkey2 column=baseInfo:name, timestamp=1600789513258, value=jack
rowkey3 column=baseInfo:age, timestamp=1600789513388, value=24
rowkey3 column=baseInfo:birthday, timestamp=1600789513369, value=1995-01-22
wrowkey4 column=baseInfo:name, timestamp=1600789515763, value=maike-jack
4 row(s) in 0.0180 seconds
hbase(main):071:0> scan 'Student',{COLUMNS=>'baseInfo:birthday'}
ROW COLUMN+CELL
rowkey1 column=baseInfo:birthday, timestamp=1600789402212, value=1990-01-01
rowkey2 column=baseInfo:birthday, timestamp=1600789513285, value=1998-08-22
rowkey3 column=baseInfo:birthday, timestamp=1600789513369, value=1995-01-22
3 row(s) in 0.0190 seconds
STARTROW为开始行
STOPROW为结束行
LIMIT为限制查询结果行数
VERSIONS版本数
hbase(main):003:0> scan 'Student', {COLUMNS=> 'baseInfo',STARTROW => 'rowkey2',STOPROW => 'wrowkey4'}
ROW COLUMN+CELL
rowkey2 column=baseInfo:age, timestamp=1600789513297, value=21
rowkey2 column=baseInfo:birthday, timestamp=1600789513285, value=1998-08-22
rowkey2 column=baseInfo:name, timestamp=1600789513258, value=jack
rowkey3 column=baseInfo:age, timestamp=1600789513388, value=24
rowkey3 column=baseInfo:birthday, timestamp=1600789513369, value=1995-01-22
2 row(s) in 0.0200 seconds
只显示1条数据
hbase(main):007:0> scan 'Student', {COLUMNS=> 'baseInfo',STARTROW => 'rowkey2',STOPROW => 'wrowkey4',LIMIT=>1}
ROW COLUMN+CELL
rowkey2 column=baseInfo:age, timestamp=1600789513297, value=21
rowkey2 column=baseInfo:birthday, timestamp=1600789513285, value=1998-08-22
rowkey2 column=baseInfo:name, timestamp=1600789513258, value=jack
1 row(s) in 0.0090 seconds
查询年龄等于24的数据
hbase(main):010:0> scan 'Student', FILTER=>"ValueFilter(=,'binary:24')"
ROW COLUMN+CELL
rowkey3 column=baseInfo:age, timestamp=1600789513388, value=24
1 row(s) in 0.0790 seconds
查询包含字符串yal的数据
hbase(main):011:0> scan 'Student', FILTER=>"ValueFilter(=,'substring:yal')"
ROW COLUMN+CELL
rowkey2 column=schoolInfo:name, timestamp=1600789513314, value=yale
rowkey3 column=schoolInfo:name, timestamp=1600789513405, value=yale
2 row(s) in 0.0270 seconds
查询列包括birth和值包括1988的数据
hbase(main):012:0> scan 'Student', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1998')"
ROW COLUMN+CELL
rowkey2 column=baseInfo:birthday, timestamp=1600789513285, value=1998-08-22
1 row(s) in 0.0630 seconds
PrefixFilter
用于对Rowkey的前缀进行判断:
hbase(main):013:0> scan 'Student', FILTER=>"PrefixFilter('wr')"
ROW COLUMN+CELL
wrowkey4 column=baseInfo:name, timestamp=1600789515763, value=maike-jack
1 row(s) in 0.0190 seconds
参考:https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase_Shell.md
完成!enjoy it!