大数据 Hbase 一些命令

增删改查

添加

1
put 'test','row1','cf:name','iFan'

查询

1
2
3
4
5
6
7
8
9
get 'test','row1',{COLUMN=>'cf:name', VERSIONS=>3}
scan 'test',{STARTROW=>'row3', ENDROW=>'row4'}
// 查询表未经过过滤的原始记录
scan 'test',{RAW=>true, VERSION>5}
scan '表名', {LIMIT=>行数量}
# 分页查询
scan 'myns:user_info', {COLUMNS => ['base_info:username'], LIMIT => 10, STARTROW => '001'}
# 根据时间查询
scan 'myns:user_info','001', {'TIMERANGE' => [1571650017702, 1571650614606]}

删除

HBase并不是即时删除数据,而是设置了一个墓碑标记,会定期清除过期数据

1
2
3
4
5
# 删除这个版本之前的所有数据
delete 'test','row4','cf:name' ts

# 删除整列的数据
deleteall 'test','row5' ts

表操作

创建表

1
2
# 创建表
create '表名', {NAME=>'列族1', 属性名=>值}, {NAME=>'列族2'}

添加列族

1
alter 'test', 'cf2'

修改列族属性

1
2
3
4
5
alter 'test',{NAME=>'cf', VERSIONS=>5}
alter '表名', 属性名=>值, 属性名=>值
alter '表名', NAME=>'列族', 属性名=>值, 属性名=>值
alter '表名', {NAME=>'列族', 属性名=>值, 属性名=>值},{NAME=>'列族', 属性名=>值, 属性名=>值}
alter '表名', 'delete' => '列族'

查看符合条件的表

1
list ['通配符']

查看表属性

1
2
3
describe '表名'
# 查看表是否存在
exit 'table_name'

禁用表

1
2
3
4
5
# 禁用表
disable 'table_name'

# 禁用符合条件的表
disable_all 'tab.*'

启用表

1
enable '表名'

删除表

1
2
3
4
5
# 删除表
drop 'table_name'

# 删除符合条件的表
drop_all 'tab.*'

数据导入导出

1
2
3
4
5
# 数据导出
hbase org.apache.hadoop.hbase.mapreduce.Export 表名 数据文件位置 版本 开始时间 结束时间

# 数据导入
hbase org.apache.hadoop.hbase.mapreduce.Import 表名称 hdfs上的目录

REST API

API

查询单个column cf:q:

1
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?columns=cf:q

查询多个column cf1:q1和cf2:q2:

1
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?columns=cf1:q1,cf2:q2

从key1开始查询两条记录:

1
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?startrow=key1&limit=2

查询1389900769772和1389900800000之间的版本:

1
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?starttime=1389900769772&endtime=1389900800000