1. 基本操作
1.1 进入Hbase客户端命令行
备注:
- 命令行反人类操作:向前删除使用
**Ctrl+Backspace**
,Backspace相当于Delete从后删除- 想知道哪个命令怎么使用,直接敲
**该命令+Enter**
有示例- Hbase增删改数据,如果不加时间戳timestamp,默认会给每条记录增加timestamp时间戳,时间在Hbase中非常的重要,查询、修改、删除、多版本等都会使用到时间戳(例如:查询某条记录时,查询的是时间戳最大的一条;修改时不是修改而是新增一条,新增的这条记录比之前数据的时间戳大;删除也一样,删除的是时间戳最大的;而多版本就是同一条数据在不同时间下进行了增删改操作存储的)
bin/hbase shell
1.2 查看帮助命令—-help
hbase(main):002:0> help
主要使用命令ddl、dml,如下
1.3 查看当前数据库中有哪些表—-list
hbase(main):005:0> list
TABLE
0 row(s) in 0.0140 seconds
=> []
2. 表的操作
2.1 创建表—-create
# create '表名','列族'
create 'student','info'
2.2 查看表结构—-describe
describe 'student'
2.3 修改表信息—-alter
修改info列族中的数据可以保存 3 个版本:(在后续数据修改、删除时可以使用)
hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3}
hbase(main):022:0> get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
2.4 清空表数据—-disable + trancate
提示:清空表的操作顺序为先 disable,然后再 truncate。
disable 'student'
truncate 'student'
2.5 删除表—-disable + drop
提示:如果直接 drop 表,会报错:ERROR: Table student is enabled. Disable it first. 解决:需要先让该表为 disable 状态,然后才能 drop 这个表
disable 'student'
drop 'student'
3. 数据的操作
3.1 插入数据—-put
# put '表名','Rowkey','列族:列名','值'
put 'student','1001','info:sex','male'
put 'student','1001','info:age','18'
put 'student','1002','info:name','Janna'
put 'student','1002','info:sex','female'
put 'student','1002','info:age','20'
3.2 扫描查看表数据—-scan
scan 'student'
# 左闭右开
scan 'student',{STARTROW => '1001', STOPROW => '1001'}
scan 'student',{STARTROW => '1001'}
3.3 更新指定字段的数据—-put
更新与新增都是使用
put
,只不过更新后同一单元格的数据还没删除还在内存中,属于不同的版本,通过增加VERSION条件可以查询到
put 'student','1001','info:name','Nick'
put 'student','1001','info:age','100'
# 通过以下命令可以查询3个版本以内的数据,前提是列族版本设置>1,否则查不到,参考2.3
get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
# 通过以下命令可以查询10个版本以内的数据,前提是列族版本设置>1,否则查不到,参考2.3
scan 'student',{RAW=>true,VERSION=>10}
3.4 查看“指定行”或“指定列族:列”的数据—-get
get 'student','1001'
get 'student','1001','info:name'
# 通过以下命令可以查询3个版本以内的数据,前提是列族版本设置>1,否则查不到,参考2.3
get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
3.5 统计表数据行数—-count
count 'student'
3.6 删除数据—-delete/deleteall
# 删除某 rowkey 的某一列数据
delete 'student','1002','info:sex'
# 删除某 rowkey 的全部数据
deleteall 'student','1001'