HBase 最常用的shell操作(基础详细,小白必看)

HBase

一图看懂 HBase 架构

HBase 最常用的shell操作

HBase 工作机制及读写流程



前言

本篇博客,为大家梳理 HBase 最常用的 shell 操作。需要的小伙伴们可以自行其食!


General

进入HBase客户端命令操作界面

[root@vmmaster bin]# hbase shell

查看帮助命令

hbase(main):001:0> help

显示服务器状态

hbase(main):003:0> status
1 active master, 0 backup masters, 4 servers, 0 dead, 0.7500 average load

#结果:
一台活动主机,0个备份主机,4个服务器,0死机,平均负载0.7500

显示HBase当前用户

hbase(main):006:0> whoami
root (auth:SIMPLE)
    groups: root

# 结果:
root分组下的root用户

DDL 数据定义语言

create

建库(命名空间)

create_namespace 'kb08'

建表语法:

1.完整方式:create 'NS:表名',{NAME=>'列族1名',VERSION='版本号',TTL='超时时间',BLOCKCACHE='是否缓存'},{...}...

#备注:
#VERSION: 版本号:默认最小版本号:0
#TTL: 超时设定:默认值FOREVER
#BLOCKCACHE: 设定列族是否缓存:默认为true
	
2.简易方式:create '[NS:]表名','列族1名','列族2名'...

例如:

# 法一
create 'kb08:handphone',{NAME=>'base',VERSION=>'0'},{NAME=>'price'}

# 法二
create 'kb08:handphone','base','price'

上述两者方式是一样的效果。

alter

更新版本号

alter 'kb08:handphone','huawei', NAME => 'base', VERSIONS => 5

删除一个列族

#法一:
alter 'kb08:handphone', NAME => 'base', METHOD => 'delete'

#法二:
alter 'kb08:handphone', 'delete' => 'base'

增加一个列族:

hbase> alter 'kb08:handphone', NAME => 'CF2', VERSIONS => 2

truncate

清空表数据

truncate 'kb08:handphone'

drop

删除表:
首先需要先让该表为disable状态,使用命令:

disable 'kb08:handphone'

然后才能drop这个表,使用命令:

drop 'kb08:handphone'

注意:如果直接drop表,会报错:Drop the named table. Table must first be disabled

describe

展示库(命名空间)信息:

describe_namespace 'kb08'

展示表结构信息:

describe 'kb08:handphone'

#结果:
Table kb08:handphone is ENABLED                                                         
kb08:handphone                                                                          
COLUMN FAMILIES DESCRIPTION                                                             
{NAME => 'base', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELET
ED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NO
NE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE 
=> '0'}                                                                                                                                                                
{NAME => 'price', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELE
TED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'N
ONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE
 => '0'}                                                                                
2 row(s) in 0.0380 seconds

exists

检查表是否存在,适用于表量特别多的情况

exists 'kb08:handphone'

#结果:
Table kb08:handphone does exist                                                         
0 row(s) in 0.0250 seconds

is_enabled、is_disabled

检查表是否启用或禁用,返回值true或者false

is_disabled 'kb08:handphone'

is_enabled 'kb08:handphone'

disable/enable

禁用一张表/启用一张表

disable/enable 'kb08:handphone'

DML 数据操纵语言

put

添加数据操作:

#向kb08:handphone表中插入信息,row key为huawei,列族base中添加seriesNo列标示符,值为nova4
put 'kb08:handphone','huawei','base:seriesNo','nova4'

修改数据存在:

#向kb08:handphone表中修改信息,row key为huawei,列族base中seriesNo列标示符,修改值为p4
put 'kb08:handphone','huawei','base:seriesNo','p4'

添加其他数据操作:

put 'kb08:handphone','huawei','base:cpu','4c8t'
put 'kb08:handphone','huawei','base:resolution','1024*768'
put 'kb08:handphone','huawei','price:costPrice','1200.00'
put 'kb08:handphone','huawei','price:retailPrice','3200.00'
put 'kb08:handphone','iphone','base:seriesNo','12'
put 'kb08:handphone','iphone','base:cpu','8c8t'
put 'kb08:handphone','iphone','base:resolution','1680*1024'
put 'kb08:handphone','iphone','price:costPrice','1200.00'
put 'kb08:handphone','iphone','price:retailPrice','4800.00'

delete

<1>指定rowkey以及列名进行删除

delete 'kb08:handphone', 'huawei', 'price:costPrice'

<2>指定rowkey,列名以及字段值进行删除

delete 'kb08:handphone', 'huawei', 'price:costPrice','1200.00'

count

统计指定表的记录数

count 'kb08:handphone'

DQL 数据查询语言

get

<1>通过rowkey进行查询

hbase(main):011:0> get 'kb08:handphone','huawei'

#结果:
COLUMN                  CELL                                                            
 base:cpu               timestamp=1598942682877, value=8c16t                            
 base:resolution        timestamp=1598941643092, value=1024*768                         
 base:seriesNo          timestamp=1598940984249, value=nova4                            
 price:costPrice        timestamp=1598941652759, value=1200.00                          
 price:retailPrice      timestamp=1598941661543, value=3200.00                          
5 row(s) in 0.1040 seconds

<2>查看rowkey下面的某个列族的信息

hbase(main):012:0> get 'kb08:handphone','huawei','base'

#结果:
COLUMN                  CELL                                                            
 base:cpu               timestamp=1598942682877, value=8c16t                            
 base:resolution        timestamp=1598941643092, value=1024*768                         
 base:seriesNo          timestamp=1598940984249, value=nova4                            
3 row(s) in 0.0060 seconds

<3>查看rowkey指定列族指定字段的值

hbase(main):013:0> get 'kb08:handphone','huawei','base:cpu'

#结果:
COLUMN                  CELL                                                            
 base:cpu               timestamp=1598942682877, value=8c16t                            
1 row(s) in 0.0060 seconds

<4>查看rowkey指定多个列族的信息

hbase(main):014:0> get 'kb08:handphone','huawei','base','price'

#结果:
COLUMN                  CELL                                                            
 base:cpu               timestamp=1598942682877, value=8c16t                            
 base:resolution        timestamp=1598941643092, value=1024*768                         
 base:seriesNo          timestamp=1598940984249, value=nova4                            
 price:costPrice        timestamp=1598941652759, value=1200.00                          
 price:retailPrice      timestamp=1598941661543, value=3200.00                          
5 row(s) in 0.0060 seconds

<5>指定rowkey与列值查询

hbase(main):018:0> get 'kb08:handphone','huawei', {FILTER => "ValueFilter(=, 'binary:8c16t')"}

#结果:
COLUMN                  CELL                                                            
 base:cpu               timestamp=1598942682877, value=8c16t                            
1 row(s) in 0.0270 seconds

<6>指定rowkey与列值模糊查询

hbase(main):023:0> get 'kb08:handphone','huawei', {FILTER => "(QualifierFilter(=, 'substring:s'))"}

#结果:
COLUMN                  CELL                                                            
 base:resolution        timestamp=1598941643092, value=1024*768                         
 base:seriesNo          timestamp=1598940984249, value=nova4                            
 price:costPrice        timestamp=1598941652759, value=1200.00                          
3 row(s) in 0.0120 seconds

scan

<1>查询所有数据

hbase(main):024:0> scan 'kb08:handphone'

#结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=base:cpu, timestamp=1598942682877, value=8c16t           
 huawei                 column=base:resolution, timestamp=1598941643092, value=1024*768 
 huawei                 column=base:seriesNo, timestamp=1598940984249, value=nova4      
 huawei                 column=price:costPrice, timestamp=1598941652759, value=1200.00  
 huawei                 column=price:retailPrice, timestamp=1598941661543, value=3200.00
 iphone                 column=base:cpu, timestamp=1598941872962, value=8c8t            
 iphone                 column=base:resolution, timestamp=1598941881365, value=1680*1024
 iphone                 column=base:seriesNo, timestamp=1598941861292, value=12         
 iphone                 column=price:costPrice, timestamp=1598941891311, value=1200.00  
 iphone                 column=price:retailPrice, timestamp=1598943314865, value=4800.00
2 row(s) in 0.0460 seconds

<2>指定表和列族或指定字段查询

1. scan 'kb08:handphone', {COLUMNS => 'base'}

# 结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=base:cpu, timestamp=1598942682877, value=8c16t           
 huawei                 column=base:resolution, timestamp=1598941643092, value=1024*768 
 huawei                 column=base:seriesNo, timestamp=1598940984249, value=nova4      
 iphone                 column=base:cpu, timestamp=1598941872962, value=8c8t            
 iphone                 column=base:resolution, timestamp=1598941881365, value=1680*1024
 iphone                 column=base:seriesNo, timestamp=1598941861292, value=12         
2 row(s) in 0.0220 seconds

2. scan 'kb08:handphone', {COLUMNS => 'base:cpu'}

# 结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=base:cpu, timestamp=1598942682877, value=8c16t           
 iphone                 column=base:cpu, timestamp=1598941872962, value=8c8t            
2 row(s) in 0.0190 seconds

<3>指定表和多列族或多字段查询

1. scan 'kb08:handphone', {COLUMNS => ['base','price']}

# 结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=base:cpu, timestamp=1598942682877, value=8c16t           
 huawei                 column=base:resolution, timestamp=1598941643092, value=1024*768 
 huawei                 column=base:seriesNo, timestamp=1598940984249, value=nova4      
 huawei                 column=price:costPrice, timestamp=1598941652759, value=1200.00  
 huawei                 column=price:retailPrice, timestamp=1598941661543, value=3200.00
 iphone                 column=base:cpu, timestamp=1598941872962, value=8c8t            
 iphone                 column=base:resolution, timestamp=1598941881365, value=1680*1024
 iphone                 column=base:seriesNo, timestamp=1598941861292, value=12         
 iphone                 column=price:costPrice, timestamp=1598941891311, value=1200.00  
 iphone                 column=price:retailPrice, timestamp=1598943314865, value=4800.00
2 row(s) in 0.0180 seconds

2. scan 'kb08:handphone', {COLUMNS => ['base:cpu','price:costPrice']}

#结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=base:cpu, timestamp=1598942682877, value=8c16t           
 huawei                 column=price:costPrice, timestamp=1598941652759, value=1200.00  
 iphone                 column=base:cpu, timestamp=1598941872962, value=8c8t            
 iphone                 column=price:costPrice, timestamp=1598941891311, value=1200.00  
2 row(s) in 0.0150 seconds

<4>指定列族与字段名以及限定版本查询

scan 'kb08:handphone', {COLUMNS => 'base:cpu', VERSIONS => 5}

#结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=base:cpu, timestamp=1598942682877, value=8c16t           
 iphone                 column=base:cpu, timestamp=1598941872962, value=8c8t            
2 row(s) in 0.0130 seconds

<5>指定多个列族与按照数据值模糊查询

 scan 'kb08:handphone', {COLUMNS => ['base:cpu','price:costPrice'],FILTER => "(QualifierFilter(=, 'substring:s'))"}

#结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=price:costPrice, timestamp=1598941652759, value=1200.00  
 iphone                 column=price:costPrice, timestamp=1598941891311, value=1200.00  
2 row(s) in 0.0150 seconds

<6>rowkey的范围值查询

scan 'kb08:handphone', {COLUMNS => 'price', STARTROW => 'huawei', ENDROW => 'iphone'}

#结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=price:costPrice, timestamp=1598941652759, value=1200.00  
 huawei                 column=price:retailPrice, timestamp=1598941661543, value=3200.00
1 row(s) in 0.0160 seconds

<7>指定rowkey模糊查询

#iph 开头
scan 'kb08:handphone',{FILTER=>"PrefixFilter('iph')"}

结果:
ROW                     COLUMN+CELL                                                     
 iphone                 column=base:cpu, timestamp=1598941872962, value=8c8t            
 iphone                 column=base:resolution, timestamp=1598941881365, value=1680*1024
 iphone                 column=base:seriesNo, timestamp=1598941861292, value=12         
 iphone                 column=price:costPrice, timestamp=1598941891311, value=1200.00  
 iphone                 column=price:retailPrice, timestamp=1598943314865, value=4800.00
1 row(s) in 0.0260 seconds

<8>指定数据范围值查询

scan 'kb08:handphone', {TIMERANGE => [1598941891311, 1598943314865]}

#结果:
ROW                     COLUMN+CELL                                                     
 huawei                 column=base:cpu, timestamp=1598942682877, value=8c16t           
 iphone                 column=price:costPrice, timestamp=1598941891311, value=1200.00  
2 row(s) in 0.0140 seconds

list

# 显示所有的表
hbase(main):007:0> list

# 显示命名空间
hbase(main):007:0> list_namespace

# 显示命名空间'kb08'下所有的表
hbase(main):010:0> list_namespace_tables 'kb08'
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值