HBase Shell操作

HBase Shell操作

1.首先,我们切换到/apps/hadoop/sbin目录下,开启hadoop相关进程

  1. cd /apps/hadoop/sbin  
  2. ./start-all.sh  

2.然后切换到/apps/hbase/bin目录下,开启hbase相关进程

view plain copy

  1. cd /apps/hbase/bin  
  2. ./start-hbase.sh  

3.使用JPS查看相关进程

  1. jps  

4.输入hbase shell进入shell环境

  1. hbase shell  

 

 

  1. 创建hbasetest表,含有两个列族cf1和cf2。

create hbasetest,cf1,cf2

  1. 向表hbasetest表插入三条数据。

rowkey为201910001,列族名为cf1,列名为name,值为Tom。

rowkey为201910001,列族名为cf1,列名为age,值为21。

rowkey为201910002,列族名为cf2,列名为name,值为Adam。

put hbasetest ,201910001,cf1:name,Tom

put hbasetest ,201910001,cf1:age,21

put hbasetest ,201910002,cf2:name,Adam

  1. 使用get命令来查询一下hbasetest表,rowkey为201910001中的cf1下的age的值。

get hbasetest ,201910001,cf1:age

  1. 查看hbasetest表中第一行数据。

 

  1. 删除hbasetest表中rowkey为201910001,列族名为cf1,列名为name的数据。

delete hbasetest ,201910001,cf1:name

  1. 设置hbasetest表为只读。

12.修改table_name的表结构,将TTL(生存周期)改为30天,这里要注意,修改表结构前必须先disable使表失效,修改完成后再使用enable命令,使表重新生效(可用is_enabled 'table_name'或is_disabled 'table_name'判断表的状态)

view plain copy

  1. disable 'hbasetest '  
  2. alter 'hbasetest ',READONLY 

enable 'hbasetest '

7.删除表hbasetest。

disable hbasetest

drop hbasetest

5.使用version命令查看版本信息

view plain copy

  1. version  
  2. HBase Shell操作

 

6.使用status命令查看服务器状态

view plain copy

  1. status  
  2. HBase Shell操作

 

7.使用whoami命令可查看当前用户

view plain copy

  1. whoami  

 

8.使用list命令来查看一下都有哪些表

view plain copy

  1. list  

 

9.我们来创建一张表,表的参数如下:

表名为table_name,列族名为f1(语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>})

view plain copy

  1. create 'table_name','f1'  

我们也可以指定数据保存的版本数,如:create 'table_name2',{NAME => 'f1', VERSIONS => 2}

10.使用exists命令查看table_name表是否存在

view plain copy

  1. exists 'table_name'  

 

11.使用desc命令来查看一下table_name表结构(语法:describe <table>)

view plain copy

  1. desc 'table_name'  
  2. HBase Shell操作

 

12.修改table_name的表结构,将TTL(生存周期)改为30天,这里要注意,修改表结构前必须先disable使表失效,修改完成后再使用enable命令,使表重新生效(可用is_enabled 'table_name'或is_disabled 'table_name'判断表的状态)

view plain copy

  1. disable 'table_name'  
  2. alter 'table_name',{NAME=>'f1',TTL=>'2592000'}  
  3. enable 'table_name'  

这里2592000为30天的秒数,再次使用desc命令会发现表的TTL已经改为了2592000

HBase Shell操作

 

13.现在我们使用put命令向table_name表中插入一行数据

(语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>)

view plain copy

  1. put 'table_name','rowkey001','f1:col1','value1'  
  2. put 'table_name','rowkey001','f1:col2','value2'  
  3. put 'table_name','rowkey002','f1:col1','value1'  

 

这其中,'table_name'为表名,'rowkey001'为rowkey,'f1:col1' f1为列族,col1为列,'value1'为值,同一个列族下可以有多个列,同一个rowkey视为同一行。

14.使用get命令来查询一下table_name表,rowkey001中的f1下的col1的值

(语法:get <table>,<rowkey>,[<family:column>,....])

view plain copy

  1. get 'table_name','rowkey001''f1:col1'  

另一种用法:

view plain copy

  1. get 'table_name','rowkey001', {COLUMN=>'f1:col1'}  
  2. HBase Shell操作

 

15.查询表table_name,rowkey001中的f1下的所有列值

view plain copy

  1. get 'table_name','rowkey001'  
  2. HBase Shell操作

 

16.使用scan命令扫描全表(语法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num})

view plain copy

  1. scan 'table_name'  

也可以限定扫描表的前几行数据,我们扫描前1行数据

view plain copy

  1. scan 'table_name',{LIMIT=>1}  
  2. HBase Shell操作

 

由此也可以看出,rowkey相同的数据视为一行数据

17.使用count命令,查看table_name表中的数据行数

(语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum})

INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度

查询表table_name中的数据行数,每10条显示一次,缓存区为200

view plain copy

  1. count 'table_name', {INTERVAL => 10, CACHE => 200}  
  2. HBase Shell操作

 

由于我们的数据只有2行,所以查询结果为2

18.使用delete命令删除table_name表中,rowkey001中的f1:col2的数据

(语法:delete <table>, <rowkey>, <family:column> , <timestamp>,必须指定列名)

view plain copy

  1. delete 'table_name','rowkey001','f1:col2'  

这里需要注意,如果该列保存有多个版本的数据,将一并被删除

19.使用deleteall命令,删除table_name表中rowkey002这行数据

(语法:deleteall <table>, <rowkey>, <family:column> , <timestamp>,可以不指定列名,删除整行数据)

view plain copy

  1. deleteall 'table_name','rowkey002'  

20.使用truncate命令,删除table_name表中的所有数据

(语法: truncate <table> 其具体过程是:disable table -> drop table -> create table)

view plain copy

  1. truncate 'table_name'