binliubiao

命令行(hbase shell)

hbase shell进入客 户端

[hadoop@pg1 ~]$ hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/ups/app/hbase/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/ups/app/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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.3.6, r806dc3625c96fe2cfc03048f3c54a0b38bc9e984, Tue Oct 15 01:55:41 PDT 2019

hbase(main):001:0>

exit 退出 hbase shell 客户端

表结构操作

  • create:创建
  • list:查看表列表
  • desc:查看表的详细信息
  • drop:删除表
  • truncate:清空表
  • alter:修改表的定义

create

 help \'create\'
 
 # t1是表名,f1,f2,f3是列簇的名
 create \'t1\', {NAME => \'f1\'}, {NAME => \'f2\'}, {NAME => \'f3\'}
 
 # 创建了一个名为myHbase的表,表里面有1个列簇,名为myCard,保留5个版本信息
 create \'myHbase\',{NAME => \'myCard\',VERSIONS => 5}

list

hbase(main):046:0> list
TABLE                                    
myHbase                                                                             t1                                                                                                                               
2 row(s) in 0.0450 seconds

=> ["myHbase", "t1"]
hbase(main):047:0>

desc

hbase(main):047:0> desc \'myHbase\'
Table myHbase is ENABLED
myHbase                 
COLUMN FAMILIES DESCRIPTION                                                                                                      
{NAME => \'myCard\', BLOOMFILTER => \'ROW\', VERSIONS => \'5\', IN_MEMORY => \'false\', KEEP_DELETED_CELLS => \'FALSE\', DATA_BLOCK_ENCODIN
G => \'NONE\', TTL => \'FOREVER\', COMPRESSION => \'NONE\', MIN_VERSIONS => \'0\', BLOCKCACHE => \'true\', BLOCKSIZE => \'65536\', REPLICATIO
N_SCOPE => \'0\'}         
1 row(s) in 0.0740 seconds

hbase(main):048:0>

修改表定义

添加一个列簇
alter \'myHbase\', NAME => \'myInfo\'
删除一个列簇
 alter \'myHbase\', NAME => \'myCard\', METHOD => \'delete\'
 
 alter \'myHbase\', \'delete\' => \'myCard\'
添加列簇hi同时删除列簇myInfo
alter \'myHbase\', {NAME => \'hi\'}, {NAME => \'myInfo\', METHOD => \'delete\'}

truncate

truncate \'myHbase\'

drop

先停用表,再删除

disable \'myHbase\'
drop \'myHbase\'

表数据操作

  • 增:put
  • 删:delete
  • 查:get + scan
  • 改:==

创建 user 表,包含 info、data 两个列簇

create \'user_info\',{NAME=>\'base_info\',VERSIONS=>3 },{NAME=>\'extra_info\',VERSIONS=>1 } 

需要传入表名,rowkey,列簇名、值等

向 user 表中插入信息,row key 为 user0001,列簇 base_info 中添加 name 列标示符,值为 zhangsan1

put \'user_info\', \'user0001\', \'base_info:name\', \'zhangsan1\'
put \'user_info\', \'zhangsan_20150701_0001\', \'base_info:name\', \'zhangsan1\'
put \'user_info\', \'zhangsan_20150701_0002\', \'base_info:name\', \'zhangsan2\'

put \'user_info\', \'zhangsan_20150701_0001\', \'base_info:age\', \'21\'
put \'user_info\', \'zhangsan_20150701_0002\', \'base_info:age\', \'22\'

put \'user_info\', \'zhangsan_20150701_0001\', \'extra_info:Hobbies\', \'music\'
put \'user_info\', \'zhangsan_20150701_0002\', \'extra_info:Hobbies\', \'sport\'

查(get + scan)

# 获取 user_info 表中 row key 为 user0001 的所有信息
get \'user_info\', \'user0001\'

# 获取user表中row key为user0001,base_info列簇的所有信息
get \'user_info\', \'user0001\', \'base_info\'

# 查询user_info表中的所有信息
scan \'user_info\'

# 查询user_info表中列簇为base_info的信息
scan \'user_info\', {COLUMNS => \'base_info\'}

# 删除user_info表row key为zhangsan_20150701_0001,列标示符为base_info:name的数据
delete \'user_info\', \'zhangsan_20150701_0001\', \'base_info:name\'

scan \'user_info\', {COLUMNS => \'base_info\'}

image-20200907155358110

使用过滤器

# 从mytable表中找到row1开头的所有row,那么就需要用到PrefixFilter
scan \'user_info\', { FILTER => "(PrefixFilter (\'zhangsan\'))"}

# 使用KeyOnlyFilter
scan \'user_info\', { FILTER => "(KeyOnlyFilter ())"}

# 使用 FirstKeyOnlyFilter()
scan \'user_info\', { FILTER => "FirstKeyOnlyFilter ()"}

# 使用 MultipleColumnPrefixFilter()
scan \'user_info\', { FILTER => "MultipleColumnPrefixFilter(\'age\',\'name\')"}

# 使用 ColumnCountGetFilter()
scan \'user_info\', { FILTER => "ColumnCountGetFilter(2)"}

客户端API工具

分类:

技术点:

相关文章: