1.进入hbase
hbase shell
whoami
2. 创建表
语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
创建一个User表,并且有一个info列族
hbase(main):002:0> create \'User\',\'info\' 0 row(s) in 1.5890 seconds => Hbase::Table - User
3、查看所有表
hbase(main):003:0> list
4. 查看表详情
hbase(main):004:0> describe \'User\' Table User is ENABLED User COLUMN FAMILIES DESCRIPTION {NAME => \'info\', BLOOMFILTER => \'ROW\', VERSIONS => \'1\', IN_MEMORY => \'false\', KEEP_DELETED_CELLS => \'FALSE\', DATA_BLOCK_ENCODING => \'NONE\', TTL => \'FORE VER\', COMPRESSION => \'NONE\', MIN_VERSIONS => \'0\', BLOCKCACHE => \'true\', BLOCKSIZE => \'65536\', REPLICATION_SCOPE => \'0\'} 1 row(s) in 0.1410 seconds hbase(main):025:0> desc \'User\' Table User is ENABLED User COLUMN FAMILIES DESCRIPTION {NAME => \'info\', BLOOMFILTER => \'ROW\', VERSIONS => \'1\', IN_MEMORY => \'false\', KEEP_DELETED_CELLS => \'FALSE\', DATA_BLOCK_ENCODING => \'NONE\', TTL => \'FORE VER\', COMPRESSION => \'NONE\', MIN_VERSIONS => \'0\', BLOCKCACHE => \'true\', BLOCKSIZE => \'65536\', REPLICATION_SCOPE => \'0\'} 1 row(s) in 0.0380 seconds
5. 表修改
删除指定的列族
hbase(main):002:0> alter \'User\', \'delete\' => \'info\' Updating all regions with the new schema... 1/1 regions updated. Done. 0 row(s) in 2.5340 seconds
6. 插入数据
语法:put <table>,<rowkey>,<family:column>,<value>
每次只能插入一个列
hbase(main):005:0> put \'User\', \'row1\', \'info:name\', \'xiaoming\' 0 row(s) in 0.1200 seconds hbase(main):006:0> put \'User\', \'row2\', \'info:age\', \'18\' 0 row(s) in 0.0170 seconds hbase(main):007:0> put \'User\', \'row3\', \'info:sex\', \'man\' 0 row(s) in 0.0030 seconds
7. 根据rowKey查询某个记录
语法:get <table>,<rowkey>,[<family:column>,....]
hbase(main):008:0> get \'User\', \'row2\' COLUMN CELL info:age timestamp=1502368069926, value=18 1 row(s) in 0.0280 seconds hbase(main):028:0> get \'User\', \'row3\', \'info:sex\' COLUMN CELL info:sex timestamp=1502368093636, value=man hbase(main):036:0> get \'User\', \'row1\', {COLUMN => \'info:name\'} COLUMN CELL info:name timestamp=1502368030841, value=xiaoming 1 row(s) in 0.0120 seconds
8. 查询所有记录
语法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num}
扫描所有记录
hbase(main):009:0> scan \'User\' ROW COLUMN+CELL row1 column=info:name, timestamp=1502368030841, value=xiaoming row2 column=info:age, timestamp=1502368069926, value=18 row3 column=info:sex, timestamp=1502368093636, value=man 3 row(s) in 0.0380 seconds
扫描前2条
hbase(main):037:0> scan \'User\', {LIMIT => 2} ROW COLUMN+CELL row1 column=info:name, timestamp=1502368030841, value=xiaoming row2 column=info:age, timestamp=1502368069926, value=18 2 row(s) in 0.0170 seconds
范围查询
hbase(main):011:0> scan \'User\', {STARTROW => \'row2\'} ROW COLUMN+CELL row2 column=info:age, timestamp=1502368069926, value=18 row3 column=info:sex, timestamp=1502368093636, value=man 2 row(s) in 0.0170 seconds hbase(main):012:0> scan \'User\', {STARTROW => \'row2\', ENDROW => \'row2\'} ROW COLUMN+CELL row2 column=info:age, timestamp=1502368069926, value=18 1 row(s) in 0.0110 seconds hbase(main):013:0> scan \'User\', {STARTROW => \'row2\', ENDROW => \'row3\'} ROW COLUMN+CELL row2 column=info:age, timestamp=1502368069926, value=18 1 row(s) in 0.0120 seconds
keyinfo模糊查询
scan \'User\',{FILTER=>"PrefixFilter(\'ro\')"}
根据列查询
scan \'User\',{COLUMNS=>[\'info:age\'],FILTER=>"(ValueFilter(=,\'substring:10\'))"}
9. 统计表记录数
语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}
INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度
hbase(main):020:0> count \'User\' 3 row(s) in 0.0360 seconds => 3
10. 删除
删除列
hbase(main):008:0> delete \'User\', \'row1\', \'info:age\' 0 row(s) in 0.0290 seconds
删除所有行
hbase(main):014:0> deleteall \'User\', \'row2\' 0 row(s) in 0.0090 seconds
删除表中所有数据
hbase(main):016:0> truncate \'User\' Truncating \'User\' table (it may take a while): - Disabling table... - Truncating table... 0 row(s) in 3.6610 seconds
11. 禁用表
hbase(main):014:0> disable \'User\' 0 row(s) in 2.2660 seconds hbase(main):015:0> describe \'User\' Table User is DISABLED User COLUMN FAMILIES DESCRIPTION {NAME => \'info\', BLOOMFILTER => \'ROW\', VERSIONS => \'1\', IN_MEMORY => \'false\', KEEP_DELETED_CELLS => \'FALSE\', DATA_BLOCK_ENCODING => \'NONE\', TTL => \'FORE VER\', COMPRESSION => \'NONE\', MIN_VERSIONS => \'0\', BLOCKCACHE => \'true\', BLOCKSIZE => \'65536\', REPLICATION_SCOPE => \'0\'} 1 row(s) in 0.0340 seconds hbase(main):016:0> scan \'User\', {STARTROW => \'row2\', ENDROW => \'row3\'} ROW COLUMN+CELL ERROR: User is disabled.
12. 启用表
hbase(main):017:0> enable \'User\' 0 row(s) in 1.3470 seconds hbase(main):018:0> describe \'User\' Table User is ENABLED User COLUMN FAMILIES DESCRIPTION {NAME => \'info\', BLOOMFILTER => \'ROW\', VERSIONS => \'1\', IN_MEMORY => \'false\', KEEP_DELETED_CELLS => \'FALSE\', DATA_BLOCK_ENCODING => \'NONE\', TTL => \'FORE VER\', COMPRESSION => \'NONE\', MIN_VERSIONS => \'0\', BLOCKCACHE => \'true\', BLOCKSIZE => \'65536\', REPLICATION_SCOPE => \'0\'} 1 row(s) in 0.0310 seconds hbase(main):019:0> scan \'User\', {STARTROW => \'row2\', ENDROW => \'row3\'} ROW COLUMN+CELL row2 column=info:age, timestamp=1502368069926, value=18 1 row(s) in 0.0280 seconds
13. 测试表是否存在
hbase(main):022:0> exists \'User\' Table User does exist 0 row(s) in 0.0150 seconds hbase(main):023:0> exists \'user\' Table user does not exist 0 row(s) in 0.0110 seconds hbase(main):024:0> exists user NameError: undefined local variable or method `user\' for #<Object:0x412ebe64>
4. 删除表
删除前,必须先disable
hbase(main):030:0> drop \'TEST.USER\' ERROR: Table TEST.USER is enabled. Disable it first. Here is some help for this command: Drop the named table. Table must first be disabled: hbase> drop \'t1\' hbase> drop \'ns1:t1\' hbase(main):031:0> disable \'TEST.USER\' 0 row(s) in 2.2640 seconds hbase(main):033:0> drop \'TEST.USER\' 0 row(s) in 1.2490 seconds hbase(main):034:0> list TABLE SYSTEM.CATALOG SYSTEM.FUNCTION SYSTEM.SEQUENCE SYSTEM.STATS User 5 row(s) in 0.0080 seconds => ["SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "User"]