HBase简单使用

增删改查
------------------------------------
名称
命令表达式
创建表
create '表名称', '列名称1','列名称2','列名称N'
添加记录      
put '表名称', '行名称', '列名称:', '值'
查看记录
get '表名称', '行名称'
查看表中的记录总数
count  '表名称'
删除记录
delete  '表名' ,'行名称' , '列名称'
删除一张表
先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
查看所有记录
scan "表名称"  
查看某个表某个列中所有数据
scan "表名称" , ['列名称:']
更新记录
就是重写一遍进行覆盖
DDL操作
-------------------------------------------
1. 创建一个表
hbase(main):011:0>create 'member','member_id','address','info'   
0 row(s) in 1.2210seconds

2.获得表的描述
hbase(main):012:0>list
hbase(main):006:0>describe 'member'

3.删除一个列族,alter,disable,enable
     我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。
删除列族的时候必须先将表给disable掉。
hbase(main):004:0>disable 'member'                                   
hbase(main):005:0>alter'member',NAME=>'member_id',METHOD=>'delete'                                                       
该列族已经删除,我们继续将表enable
hbase(main):008:0> enable 'member'  

4.列出所有的表

hbase(main):028:0>list   
                                                                                                                                  
5.drop一个表
hbase(main):029:0>disable 'temp_table'
hbase(main):030:0>drop 'temp_table'

6.查询表是否存在
hbase(main):021:0>exists 'member'

7.判断表是否enable
hbase(main):034:0>is_enabled 'member'

8.判断表是否disable
hbase(main):032:0>is_disabled 'member'
false                                                                                                                                                        


DML操作
-----------------------------------------------
1.插入几条记录
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:city','hangzhou'


put'member','xiaofeng','info:birthday','1987-4-17'
put'member','xiaofeng','info:favorite','movie'  
put'member','xiaofeng','info:company','alibaba'
put'member','xiaofeng','address:contry','china'
put'member','xiaofeng','address:province','guangdong'
put'member','xiaofeng','address:city','jieyang'
put'member','xiaofeng','address:town','xianqiao'



2.获取一条数据
获取一个id的所有数据
hbase(main):001:0>get 'member','scutshuxue'

获取一个id,一个列族的所有数据
hbase(main):002:0>get 'member','scutshuxue','info'

获取一个id,一个列族中一个列的所有数据
hbase(main):002:0>get 'member','scutshuxue','info:age'  

6.更新一条记录
将scutshuxue的年龄改成99
hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99'

3.通过timestamp来获取两个版本的数据
hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}

hbase(main):011:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586571843}


4.全表扫描:
hbase(main):013:0>scan 'member'

5.删除id为temp的值的‘info:age’字段
hbase(main):016:0>delete 'member','temp','info:age'

6.删除整行
hbase(main):001:0>deleteall 'member','xiaofeng'

7.查询表中有多少行:
hbase(main):019:0>count 'member'                                         

8.给‘xiaofeng’这个id增加'info:age'字段,并使用counter实现递增
hbase(main):057:0>incr 'member','xiaofeng','info:age'                    

hbase(main):059:0>incr 'member','xiaofeng','info:age'
COUNTER VALUE = 2

hbase(main):060:0>get 'member','xiaofeng','info:age'  

获取当前count的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age'  

9.将整张表清空:
hbase(main):035:0>truncate 'member'
可以看出,hbase是先将掉disable掉,然后drop掉后重建表来实现truncate的功能的。

通过Hbase客户端API操纵Hbase集群
------------------------------------------------------------
    
    
  1. public class TestCRUD {
  2. private Configuration conf ;
  3. private Connection conn ;
  4. private HBaseAdmin admin;
  5. @Before
  6. public void init(){
  7. try {
  8. conf = HBaseConfiguration.create();
  9. conn = ConnectionFactory.createConnection(conf);
  10. admin=(HBaseAdmin) conn.getAdmin();
  11. } catch (IOException e) {
  12. e.printStackTrace();
  13. }
  14. }
  15. /**
  16. * 创建命名空间(类似于库)
  17. * @throws IOException
  18. */
  19. @Test
  20. public void createNameSpace() throws IOException{
  21. NamespaceDescriptor.Builder builder=NamespaceDescriptor.create("mybase");
  22. NamespaceDescriptor nd=builder.build();
  23. admin.createNamespace(nd);
  24. admin.close();
  25. }
  26. /**
  27. * 建立表
  28. * @throws IOException
  29. */
  30. @Test
  31. public void createTable() throws IOException{
  32. //创建表描述符
  33. HTableDescriptor desc=new HTableDescriptor(TableName.valueOf("mybase:student"));
  34. //创建列描述符
  35. HColumnDescriptor colDesc=new HColumnDescriptor(Bytes.toBytes("info"));
  36. //添加列描述符
  37. desc.addFamily(colDesc);
  38. //创建表
  39. admin.createTable(desc);
  40. admin.close();
  41. }
  42. /**
  43. * 删除表
  44. * @throws Exception
  45. */
  46. @Test
  47. public void dropTable() throws Exception{
  48. if(!admin.tableExists("mybase:student")){
  49. System.out.println("表不存在!");
  50. }else{
  51. admin.disableTable("mybase:student"); //禁用表
  52. admin.deleteTable("mybase:student"); //删除表
  53. System.out.println("表删除成功");
  54. admin.close();
  55. }
  56. }
  57. @Test
  58. public void put() throws IOException{
  59. Table table=conn.getTable(TableName.valueOf("mybase:student"));
  60. Put put1=new Put(Bytes.toBytes("row1"));
  61. put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("tom1"));
  62. put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("12"));
  63. put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("sex"), Bytes.toBytes("M"));
  64. table.put(put1);
  65. Put put2=new Put(Bytes.toBytes("row2"));
  66. put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("bob1"));
  67. put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("18"));
  68. put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("sex"), Bytes.toBytes("M"));
  69. table.put(put2);
  70. }
  71. @Test
  72. public void get() throws IOException{
  73. Table table=conn.getTable(TableName.valueOf("mybase:student"));
  74. Get get=new Get(Bytes.toBytes("row1"));
  75. Result r=table.get(get);
  76. String name=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("name")));
  77. String age=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("age")));
  78. String sex=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("sex")));
  79. System.out.println(name+" "+age+" "+sex);
  80. }
  81. @Test
  82. public void scan() throws IOException{
  83. Table table=conn.getTable(TableName.valueOf("mybase:student"));
  84. Scan scan=new Scan(); //遍历所有行
  85. ResultScanner rs=table.getScanner(scan);
  86. Iterator<Result> iterator=rs.iterator();
  87. while(iterator.hasNext()){
  88. Result r=iterator.next();
  89. String name=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("name")));
  90. String age=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("age")));
  91. String sex=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("sex")));
  92. System.out.println(name+" "+age+" "+sex);
  93. }
  94. }
  95. }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值