进行HBase的增删改查的基础训练是需要搭建好Hbase的基础环境的,搭建教程参考V客公众号上一篇的搭建教程《
hbase-1.2.9安装教程(mac版)
》。Hbase提供了非常多的接口交互方式,本次实验将在HBase Shell的交互方式下进行。
进入HBase Shell控制台
由于HBase在本机是利用homebrew来安装的,所以可以用brew list hbase来查看hbase的安装地址,然后运行start-hbase.sh的启动脚本,然后用jps查看下hbase的启动状态,确认hbase的服务正常启动后,然后进入habase shell的控制台,连接hbase成功后,可以随便运行一个查看命令验证hbase的功能,确保能够正常的在hbase里面进行后续的增删改查的操作实验。
运行如图:
创建表
创建一张客户信息表customer,包含两个列族,第一个是基本信息 baseinfo,第二个列族是财产信息property,执行命令行如下:
运行如图:
查看所有的表
运行命令 :
运行如图:
这里我们可以查看我们刚才创建好的表。
新增记录
我们往customer表里的baseinfo列族里面新增了一些数据。运行命令:
$ put 'customer','1','baseinfo:age','29'
$ put 'customer','1','baseinfo:phone','13006214788'
$ put 'customer','1','baseinfo:address','shanghai'
运行如图:
我们往customer表里的property列族里面新增了一些数据。运行命令:
$ put 'customer','1','property:wechatpay','1000'
$ put 'customer','1','property:alipay','1100'
$ put 'customer','1','property:bankCard','2000'
$ put 'customer','1','property:cash','600'
运行如图:
根据RowKey查询
现在我们去查customer表里的RowKey为1的(行号为1的数据),运行命令:
$ get 'customer','1'
运行如图:
这里我们可以查询到customer表行号为1的所有数据记录。
查看列族
现在我们去分别去查customer表里的RowKey为1且列族为baseinfo和property的所有数据,运行命令:
$ get 'customer', '1', 'baseinfo'
$ get 'customer', '1', 'property'
运行如图:
我们可以看到我们刚才往customer表插入的两个列族的数据。
查看表内容
现在我们去查看customer表的内容,运行命令:
$ scan 'customer'
运行如图:
我们可以看到customer所存储的数据。
更新记录
现在我们准备更新customer表列族baseinfo的name信息,更新前name的值为zhengshangchao,更新后name的值为shangchao。运行命令:
$ get 'customer','1','baseinfo:name'
$ put 'customer','1','baseinfo:name','shangchao'
$ get 'customer','1','baseinfo:name'
运行如图:
支持历史版本
首先我们看下customer表两个列族支持的版本VERSIONS的值是多少,运行命令:
$ describe 'customer'
运行如图:
我们可以看到新建表的时候版本VERSIONS的默认值是1,HBase官方建议是VERSIONS的值最好不要超过3,现在我们修改列族baseinfo的VERSIONS的值为3,运行命令:
$ alter 'customer',
然后再看看修改的结果,运行命令:
$ describe 'customer'
运行如图:
我们可以看到列族baseinfo的VERSIONS值已经改为3,而列族property的VERSIONS值仍然是1。下面我们来看看这个VERSIONS怎么用。首先我们做一次数据的更新,执行命令:
$ put 'customer','1','baseinfo:name','zhengshangchao'
$ get 'customer','1',
$ get 'customer','1',
运行如图:
我们通过运行结果看到带VERSIONS的查询可以查找到历史版本的更新信息。其实除了VERSIONS支持历史版本查询外,借助Timestamp查询历史版本也可以完成历史版本查询,运行命令:
$ get 'customer','1',
运行如图:
我们可以通过时间戳Timestamp查询到那个时间点的历史版本。
删除记录
我们现在准备删除一个列数据baseinfo的phone,运行命令:
$ delete 'customer','1','baseinfo:phone'
运行如图:
我们发现执行删除列数据后,baseinfo:phone这列数据消失了。接下来我们试验一下按RowKey为维度来删除数据,我们要删除数据是RowKey=1的数据,运行命令:
$ deleteall 'customer','1'
运行如图:
删除表
删除表的操作需要在删除之前禁用这张表,然后再删除这张表,运行命令:
$ disable 'customer'
$ drop 'customer'
运行如图:
删除后我们可以看到再去查看这张表的时候,这张表已经不存在了。
此外,HBase还提供了web的管理端界面http://localhost:16010/master-status。运行如图:
领取专属 10元无门槛券
私享最新 技术干货