进入hbase
hbase shell
部分命令清单
查询服务器状态 status
查询hbase版本 version
1. 创建一个表
create 'table1', 'tab1_id', 'tab1_add', 'tab1_info'
# create '表名', '列族1', '列族2'...
hbase(main):002:0> create 'person', 'name', 'age'
# 等价于
hbase(main):002:0> create 'person',{NAME=>'name' },{NAME=>'age'}
# 建表时可以指定表属性信息
hbase(main):005:0> create 'user_info',{NAME=>'base_info',VERSIONS=>3 },{NAME=>'extra_info',IN_MEMORY=>'true'}
2. 列出所有的表
list
3. 获得表的描述
describe "table1"
或者
desc 'table1'
4. 删除一个列族 disable alter enable
disable 'table1' alter 'table1', {NAME=>'tab1_add', METHOD=>'delete'} enable 'table1'
5. 查看表是否存在
exists 'table2'
6. 判断表是否为‘enable’
is_enabled 'table1'
判断表是否为‘disable’
--(1) 禁用表
disable 'table_name'
--(2) 查看表是否禁用
is_disabled 'table_name'
--(3) 启用表
enable 'table_name'
--(4) 查看表是否启用
is enabled 'table_name'
7. 删除一个表
disable 'table1' drop 'table1'
dml操作
1. 插入几条记录
1
2
3
4
5
6
|
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' |
--(1)
# put '表名','rowkey','列族名:列名','值'
put 'person','0001','name:firstname', 'Jed'
--(2) 可以指定时间戳,否则默认为系统当前时间
put 'person','0002','info:age',20,1482077777778
2. 全表扫描 scan
--(1) 扫描全表 scan 'person' --(2) 扫描时指定列族 scan 'person', {COLUMNS => 'name'} --(3) 扫描时指定列族,并限定显示最新的5个版本的内容 scan 'person', {COLUMNS => 'name', VERSIONS => 5} --(4) 设置开启Raw模式,开启Raw模式会把那些已添加删除标记但是未实际删除的数据也显示出来 scan 'person', {COLUMNS => 'name', RAW => true} --(5) 列的过滤 # 查询user表中列族为info和data的信息 scan 'user', {COLUMNS => ['info', 'data']} # 查询user表中列族为info,列名为name、列族为data,列名为pic的信息 scan 'user', {COLUMNS => ['info:name', 'data:pic']} # 查询user表中列族为info,列名为name的信息,并且版本最新的5个 scan 'user', {COLUMNS => 'info:name', VERSIONS => 5} # 查询user表中列族为info和data且列名含有a字符的信息 scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"} # 查询user表中列族为info,rk范围是[rk0001, rk0003)的数据 scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'} # 查询user表中row key以rk字符开头的 scan 'user',{FILTER=>"PrefixFilter('rk')"} # 查询user表中指定时间范围的数据 scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}
3. 获得数据 get
--(1) get 'person', '0001' --(2) 查询某行,指定列名 get 'person', '0001', 'name:firstname' --(3) 查询某行,添加其他限制条件 # 查询person表中,rowkey为'0001'的这一行,只显示name:firstname这一列,并且只显示最新的3个版本 get 'person', '0001', {COLUMNS => 'name:firstname', VERSIONS => 3} # 查看指定列的内容,并限定显示最新的3个版本和时间范围 get 'person', '0001', {COLUMN => 'name:first', VERSIONS => 3, TIMERANGE => [1392368783980, 1392380169184]} # 查询person表中,rowkey为'rk0001',且某列的内容为'中国'的记录 scan'person', 'rk0001', {FILTER => "ValueFilter(=, 'binary:中国')"}
4. 更新一条记录 put(把scutshuxue年龄改为99)
put 'member', 'scutshuxue', 'info:age', 99
4.1修改表
--(1) 增加列族 alter 'table_name', 'add_family' # 或者 alter 'table_name', {NAME => 'add_family'} # 当然,新增加的列可以设置属性,比如 alter 'table_name', {NAME => 'add_family', VERSIONS => 3} --(2) 删除列族 alter 'table_name', {NAME => 'delete_family', METHOD => 'delete'} 或者 alter 'table_name', 'delete' => 'delete_family' --(3) 添加列族f1同时删除列族f2 alter 'user', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'} --(4) 修改列族 # 将user表的f1列族版本号改为5 alter 'user', NAME => 'f1', VERSIONS => 5
5. 删除 delete、 deleteall
5.1 (删除行'scutshuxue', 列族为‘info' 中age的值
delete 'member', 'scutshuxue', 'info:age'
5.2 删除整行
deleteall 'member', 'scutshuxue'
6. 查询表中有多少行
count 'member'
7. 给‘xiaoming’这个id增加'info:age'字段,并使用counter实现递增
incr 'member', 'xiaoming', 'info:age'
8. 将整个表清空
truncate 'member'
参考:
https://www.cnblogs.com/kaituorensheng/p/3814925.html
https://cloud.tencent.com/developer/article/1336648