Hbase编程实践(利用shell命令)

访问Hbase,以及操作hbase,命令不用使用分号
1、hbase shell 进入hbase

Hbase编程实践(利用shell命令)_第1张图片

2、list 查看表
hbase shell -d

hbase(main):024:0> scan '.META.'

编程实例

1. 创建一个表member

create '表名’,'列族名1','列族名2','列族名3'...

第一次创建时,提示错误如下:

ERROR: KeeperErrorCode = NoNode for /hbase/master

For usage try 'help "create"'

Took 8.3604 seconds      

对于这样的错误可以通过如下几种方式排查:

(1)jps看下zookeeper和hbase的角色是否正常启动
(2)ps命令查看相关进程是否正常,ps -ef | grep hbase 和ps -ef | grep zookeeper
(3)查看zookeeper的/hbase下是否有对应的文件查看zookeeper的/hbase下是否有对应的文件
根据上面的方法进行有针对性解决,通常如果服务未正常启动,只需重启服务即可:

#停止服务
bin/stop-hbase.sh

#间隔1分钟

#启动服务
bin/start-hbase.sh


#修复之后

hbase(main):001:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 2.0000 average load
Took 1.1624 seconds 

重新create,成功。

2.list #查看所有表

3.查看表描述
hbase(main):028:0> describe 'member'

4. scan浏览表中数据
scan 'member'

Hbase编程实践(利用shell命令)_第2张图片

Hbase编程实践(利用shell命令)_第3张图片


6.插入几条记录

使用put命令,可以插入行到一个表。它的语法如下:

put ’’,’row1’,’’,’

HBase的表中会有一个系统默认的属性作为主键,主键无需自行创建,默认为put命令操作中表名后第一个数据

put'member','scutshuxue','info:age','24'

put'member','scutshuxue','info:birthday','1987-06-17'

put'member','scutshuxue','info:company','alibaba'

put'member','scutshuxue','address:contry','china' 

put'member','scutshuxue','address:province','zhejiang' 

put'member','scutshuxue','address:city','hangzhou' 

scan 'member'

Hbase编程实践(利用shell命令)_第4张图片
 

给‘scutshuxue’这个id增加'info:Go'字段,并使用counter实现递增
hbase(main):041:0> incr 'member','scutshuxue','info:go'
连续执行incr以上,COUNTER VALUE 的值会递增,通过get_counter

Hbase编程实践(利用shell命令)_第5张图片

1.scan '表名' #查看所有数据

2.get是根据主键查看一列
get '表名','主键'[,'列簇名'][,'列簇名:列名']

7.获取数据
获取一个id的所有数据
hbase(main):001:0>get 'member','scutshuxue'

获取一个id,一个列族的所有数据
hbase(main):002:0>get 'member','scutshuxue','info'

获取一个id,一个列族中一个列的所有数据
hbase(main):002:0>get 'member','scutshuxue','info:age' 

通过timestamp来获取两个版本的数据
hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}

Hbase编程实践(利用shell命令)_第6张图片

 

过滤查询表的内容
1.FirstKeyOnlyFilter() 得到每一行的列族info的第一个列

2.查看列簇是info,LIMIT是显示的行数,STARTROW是开始行对应的是主键
hbase(main):008:0> scan 'student',{COLUMNS=>['info'],LIMIT=>4,STARTROW=>'200977100710'}

3.查看列簇是info,name
hbase(main):007:0> scan 'student',{COLUMNS=>['info','name'],LIMIT=>4,STARTROW=>'200977100710'}

查询表的历史版本,需要两步。 
1、在创建表的时候,指定保存的版本数。(假设指定为5)

  create 'student',{NAME=>'username',VERSIONS=>5}

2、查询时,指定查询的历史版本数。默认会查询出最新的数据。(有效取值为1到5)

  get 'student','1',{COLUMN=>'username',VERSIONS=>5}

Hbase编程实践(利用shell命令)_第7张图片

获取当前count的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age' 

hbase(main):058:0>get 'member','xiaofeng','info:go'  

获取当前count的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age' 

使用scan,指定startrow

hbase(main):031:0>  scan 'student', {COLUMNS => ['info:age', 'address'], LIMIT => 10, STARTROW => '2'}
ROW                        COLUMN+CELL
 2                         column=address:area, timestamp=1491533426297, value=CBD
 2                         column=address:city, timestamp=1491533426292, value=beijing
 2                         column=info:age, timestamp=1491533426269, value=21
 3                         column=address:area, timestamp=1491533426329, value=pudong
 3                         column=address:city, timestamp=1491533426323, value=shanghai
 3                         column=info:age, timestamp=1491533426305, value=22
2 row(s) in 0.0190 seconds
 

8.  更新一条记录

将scutshuxue的年龄改成99
hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99'

Hbase编程实践(利用shell命令)_第8张图片

5.删除一个列族m_id

先将表disable(如果表中之前有数据的话,会把数据清空)
hbase(main):030:0> disable 'member'

hbase(main):033:0> is_enabled 'member'

hbase(main):034:0> alter 'member',{NAME=>'m_id',METHOD=>'delete'}

最后enable,否则不能进行其他操作
hbase(main):038:0> enable 'member'

11.删除id为scutshuxue的值的‘info:birthday’字段
hbase(main):016:0>delete 'member','temp','info:age'

12.删除整行
hbase(main):001:0>deleteall 'member','scutshuxue'

3.将整张表清空:
hbase(main):035:0>truncate 'scores'
hbase是先将其disable掉,然后drop掉后重建表来实现truncate的功能

4.drop一个表(先disable,在drop)
hbase(main):029:0>disable 'scores'
hbase(main):029:0>drop 'scores'
 

基本操作

1.
查询表是否存在
hbase(main):021:0>exists 'scores'

2.
判断表是否enable
hbase(main):034:0>is_enabled 'scores'
                                                                                       
3.判断表是否disable
hbase(main):032:0>is_disabled 'scores'

6.查看表描述
hbase(main):028:0> describe 'member'
 

你可能感兴趣的:(Hbase编程实践(利用shell命令))