Hbase shell命令练习
启动HBase,要确认已启动Hadoop集群,Zookeeper
1 | [root@node5 hadoop-2.5.1]# start-hbase.sh |

进入Hbase
1 | [root@node5 ~]# hbase shell |

显示Hbase中的表
1 | hbase(main):001:0> list |

1.创建user表,包含info.data两个列族
1 | 创建表方式一: |

1 | 创建表方式二: |

1 | hbase(main):009:0> list |

1 | hbase(main):011:0> create 'm_user', {NAME => 'info', VERSIONS => '3'},{NAME => 'data', VERSIONS => '3'} |

2.向user表中插入信息,row key为rk0001,列族info中添加name列标识符,值为matrix
1 | hbase(main):015:0> put 'user','rk0001','info:name','matrix' |

3.向user表中插入信息,row key为rk0001,列族info中添加gender列标示符,值为female
1 | hbase(main):016:0> put 'user','rk0001','info:gender','female' |

4.向user表中插入信息,row key为rk0001,列族info中添加age列标示符,值为20
1 | hbase(main):017:0> put 'user','rk0001','info:age',20 |

5.向user表中插入信息,row key为rk0001,列族data中添加pic列标示符,值为picture
1 | hbase(main):019:0> put 'user','rk0001','data:pic','picture' |

6.获取user表中row key为rk0001的所有信息
1 | hbase(main):022:0> get 'user','rk0001' |

7.获取user表中row key为rk0001,info列族的所有信息
1 | hbase(main):023:0> get 'user','rk0001','info' |

8.获取user表中row key为rk0001,info列族的name.gender.age标示符的信息
1 | hbase(main):024:0> get 'user','rk0001','info:name','info:gender','info:age' |

9.获取user表中row key为rk0001,info.data列族的信息
1 | hbase(main):025:0> get 'user','rk0001','info','data' |

1 | hbase(main):027:0> get 'user','rk0001',{COLUMN => ['info','data']} |

1 | hbase(main):029:0> get 'user','rk0001',{COLUMN => ['info:name','data:pic']} |

10.获取user表中row key为rk0001,列族为info.版本号最新5个的信息
1 | hbase(main):030:0> get 'user','rk0001',{COLUMN => 'info' ,VERSION => 2} |

1 | hbase(main):031:0> get 'user','rk0001',{COLUMN => 'info:name',VERSION => 5} |

11.查询user表中所有信息
1 | hbase(main):032:0> scan 'user' |

11.1.查询user表中列族为info的信息
1 | hbase(main):033:0> scan 'user', {COLUMNS => 'info'} |

1 | hbase(main):033:0> scan 'user', {COLUMNS => 'info'} |

1 | hbase(main):034:0> scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5} |

11.2.查询user表中列族为info和data的信息
1 | hbase(main):035:0> scan 'user', {COLUMNS => ['info', 'data']} |

1 | hbase(main):036:0> scan 'user', {COLUMNS => ['info:name', 'data:pic']} |

12.查询user表中列族为info.列标示符为name的信息
1 | hbase(main):037:0> scan 'user', {COLUMNS => 'info:name'} |

13.查询user表中列族为info.列标示符为name的信息,并且版本最新的5个
1 | hbase(main):038:0> scan 'user', {COLUMNS => 'info:name', VERSIONS => 5} |

14.查询user表中列族为info和data且列标示符中含有a字符的信息
1 | hbase(main):041:0> scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"} |

15.查询user表中列族为info,rk范围是[rk0001, rk0003)的数据
1 | hbase(main):050:0> scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'} |

16.查询user表中row key以rk字符开头的
1 | hbase(main):051:0> scan 'user',{FILTER=>"PrefixFilter('rk')"} |

17.查询user表中指定范围的数据
1 | hbase(main):056:0* scan 'user', {TIMERANGE => [1458441570629, 1458441753608]} |

18.删除数据
18.1.删除user表row key为rk0001,列标示符为info:name的数据
1 | hbase(main):057:0> delete 'user', 'rk0001', 'info:name' |

18.2.删除user表row key为rk0001,列标示符为info:name,timestamp为1392383705316的数据
1 | hbase(main):059:0> delete 'user', 'rk0001', 'data:pic', 1458441753608 |

19.清空user表中的数据
1 | hbase(main):060:0> truncate 'user' |

20.修改表结构
20.1.首先停用user表(新版本不用)
1 | hbase(main):061:0> disable 'user' |

20.2.添加两个列族f1和f2
1 | hbase(main):062:0> alter 'user', NAME => 'f1' |

20.3.启用表
1 | hbase(main):064:0> enable 'user' |

20.1.查看表结构
hbase(main):066:0> desc 'user'

disable ‘user’(新版本不用)
20.4.删除一个列族:
1 | alter 'user', NAME => 'f1', METHOD => 'delete' 或 alter 'user', 'delete' => 'f1' |

20.1.添加列族f1同时删除列族f2
1 | hbase(main):070:0> alter 'user', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'} |

20.5.删除列族f1
1 | hbase(main):071:0> alter 'user', 'delete' => 'f1' |

20.6.将user表的f1列族版本号改为5
1 | hbase(main):073:0> alter 'user', NAME => 'info', VERSIONS => 5 |

20.7.删除表
1 | hbase(main):074:0> disable 'user' |

在Hbase Shell中运行出错:
1 | ERROR: java.util.concurrent.ExecutionException: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /hbase/.tmp/data/default/user/c5d0c0ae3199462216dbf4642987f4d5/.regioninfo could only be replicated to 0 nodes instead of minReplication (=1). There are 3 datanode(s) running and no node(s) are excluded in this operation. |
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2016/02/12/Hbase的shell命令练习/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
知识 & 情怀 | 二者兼得