• 进入shell
[hadoop@indb-3-136-hzifc bin]$ echo $HBASE_HOME
/data/program/hbase
[hadoop@indb-3-136-hzifc bin]$ /data/program/hbase/bin/hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/data/program/hbase-1.2.0-cdh5.8.3/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/data/program/hadoop-2.6.0-cdh5.8.3/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell; enter \'help<RETURN>\' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.0-cdh5.8.3, rUnknown, Wed Oct 12 20:33:08 PDT 2016

hbase(main):035:0> whoami
hadoop (auth:SIMPLE)
    groups: hadoop
  • 表结构

1. 创建表

语法: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
TABLE
SYSTEM.CATALOG
SYSTEM.FUNCTION
SYSTEM.SEQUENCE
SYSTEM.STATS
TEST.USER
User
6 row(s) in 0.0340 seconds

=> ["SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "TEST.USER", "User"]

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
  • 表数据

1. 插入数据

语法: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

2. 根据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

3. 查询所有记录

语法: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

另外,还可以添加TIMERANGE和FITLER等高级功能

STARTROW,ENDROW必须大写,否则报错;查询结果不包含等于ENDROW的结果集

4. 统计表记录数
语法: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

5. 删除

删除列

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
  • 表管理

1. 禁用表

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.

2. 启用表

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

3. 测试表是否存在

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"]

版权声明:本文为breg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/breg/p/8043964.html