文章目录
- 需求
- 创建表
- 添加数据
- 查看添加的数据
- 更新操作
- 删除操作
- 执行command文件
- 计数操作
- 扫描操作
需求
有以下订单数据,我们想要将这样的一些数据保存到HBase中。
创建表
- 启动HBase Shell:
hbase shell
- 创建表
语法:create ‘表名’,‘列蔟名1’,‘列蔟名2’…
创建订单表,表名为ORDER_INFO,该表有一个列蔟为C1
create 'ORDER_INFO','C1';
- 查看表:
list
- 删除表
要删除某个表,必须要先禁用表
- 禁用表:
disable "表名"
- 删除表:
drop "表名"
添加数据
- 需求:
- PUT操作
HBase中的put命令,可以用来将数据保存到表中。但put一次只能保存一个列的值。
put 'ORDER_INFO','000001','C1:ID','000001'
put 'ORDER_INFO','000001','C1:STATUS','已提交'
put 'ORDER_INFO','000001','C1:PAY_MONEY',4070
put 'ORDER_INFO','000001','C1:PAYWAY',1
put 'ORDER_INFO','000001','C1:USER_ID',4944191
put 'ORDER_INFO','000001','C1:OPERATION_DATE','2020-04-25 12:09:16'
put 'ORDER_INFO','000001','C1:CATEGORY','手机;'
查看添加的数据
- 语法:get ‘表名’,‘rowkey’
将rowkey为:000001对应的数据查询出来:
get 'ORDER_INFO','000001'
- 显示中文
在HBase shell中,如果在数据中出现了一些中文,默认HBase shell中显示出来的是十六进制编码。要想将这些编码显示为中文,我们需要在get命令后添加一个属性:{FORMATTER => ‘toString’}
get 'ORDER_INFO','000001', {FORMATTER => 'toString'}
更新操作
语法:put ‘表名’, ‘rowkey’, ‘列族:列’, ‘更新值’
将订单ID为000001
的状态,更改为已付款
put 'ORDER_INFO', '000001', 'C1:STATUS', '已付款'
注:
- HBase中会自动维护数据的版本
- 每当执行一次put后,都会重新生成新的时间戳
删除操作
- 删除列
语法:delete ‘表名’, ‘rowkey’, ‘列蔟:列’
注意:此处HBase默认会保存多个时间戳的版本数据,所以这里的delete删除的是最新版本的列数据。
删除ORDER_INFO表的STATUS列
delete 'ORDER_INFO','000001','C1:STATUS'
- 删除整行
格式:deleteall ‘表名’,‘rowkey’
删除制定订单:
deleteall 'ORDER_INFO','000001'
- 清空表
格式:truncate “表名”
清空ORDER_INFO的所有数据:
truncate 'ORDER_INFO'
执行command文件
- 将该数据集文件上传到指定的目录中
- 执行
hbase shell /export/software/ORDER_INFO.txt
计数操作
格式:count ‘表名’
查看ORDER_INFO表有多少条数据:
count 'ORDER_INFO'
补充:大量数据的计数统计
格式:$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter ‘表名’
1.启动YARN集群
start-yarn.sh
2.启动history server
mr-jobhistory-daemon.sh start historyserver
3.执行MR JOB
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'ORDER_INFO'
扫描操作
语法:scan ‘表名’
注:get是查看某一行数据,scan是全表扫描
扫描ORDER_INFO表:
scan 'ORDER_INFO',{FORMATTER => 'toString'}
注:要避免scan一张大表
扫描ORDER_INFO表(只显示三条):
scan 'ORDER_INFO', {LIMIT => 3, FORMATTER => 'toString'}
只查询订单状态以及支付方式,并且只展示3条数据:
scan 'ORDER_INFO', {LIMIT => 3, COLUMNS => ['C1:STATUS', 'C1:PAYWAY'], FORMATTER => 'toString'}
根据ROWKEY来查询对应的数据,ROWKEY为02602f66-adc7-40d4-8485-76b5632b5b53,只查询订单状态、支付方式,并以中文展示:
scan 'ORDER_INFO', {ROWPREFIXFILTER => '02602f66-adc7-40d4-8485-76b5632b5b53', COLUMNS => ['C1:STATUS', 'C1:PAYWAY'], FORMATTER => 'toString'}