Hbase 的基本使用和高阶使用

一、HBASE shell指令的一些使用

Hbase部署服务器使用的几点常用指令:

进入hbase指令的方式

:hbase shell

直接backspace是无法直接进行删除的,需要配合ctrl+backspace进行删除操作

增加列簇:

alter '表明','列簇名'

alter 'cmcc_sms','safeSurvey'

删除列簇:

alter 'cmcc_sms', {'delete' => 'safeSurvey'}

删除表:

disable 'cmcc_sms_blacklist'

drop 'cmcc_sms_blacklist'

扫描特定列簇的内容:

 scan '表名',{COLUMN=>'列簇名'}

 scan 'cmcc_sms',{COLUMN=>'safeSurvey'}

扫描表

 scan '表名'

插入数据:

put 'cmcc_sms_blacklist','0035','counts:count','3'

修改表中特定列簇的超时时间

hbase(main):126:0> disable 'test'           //修改表前,需要先disable 表

hbase(main):114:0> alter "表名",NAME=>'列簇',TTL=>'200'  //修改表的列簇超时时间为200s

hbase(main):114:0> enable  "test"          //使表可用,以供查询

hbase(main):129:0>  scan 'test'           //此时查询时,表中原来的5条,记录均存在,接下来我们更新其中一条。再查看

二、Hbase java API的一些使用经验

Htemplates 的实现类,只有一些基本的find,get,put,delete接口可以使用,但是要实现比如新建表,增加列簇这种,就需要通过一些其他方式去实现

public void initTables(){
    try {
        HBaseAdmin admin = new HBaseAdmin(configuration());
        boolean hastable = admin.tableExists("cmcc_sms_blacklist");
        if(hastable){
            return;
        }
        HTableDescriptor hd=new HTableDescriptor(TableName.valueOf("cmcc_sms_blacklist".getBytes()));
        HColumnDescriptor hc1=new HColumnDescriptor("counts".getBytes());   //增加列簇
        hc1.setMaxVersions(3);
        hc1.setTimeToLive(1800);   //设置超时时间
        hd.addFamily(hc1);
        admin.createTable(hd);

        //在已有表cmcc_sms,增加列簇safeSurvey
        TableName tableName = TableName.valueOf("cmcc_sms");
        admin.disableTable(tableName);
        HTableDescriptor descriptor = admin.getTableDescriptor("cmcc_sms".getBytes());
        HColumnDescriptor columnDescriptor2 = new HColumnDescriptor("safeSurvey");
        descriptor.addFamily(columnDescriptor2);
        admin.modifyTable(tableName,descriptor);
        admin.enableTable(tableName);

        admin.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

实现对指定列簇的列数据进行校验的代码实现

这里主要是对列簇指定列数据过滤,只需要大于0 小于3之间的,然后将rowkey取出来

StringBuilder sb = new StringBuilder();

try {
    HTable table = new HTable(configuration,"cmcc_sms_blacklist");

    FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
    SingleColumnValueFilter filter1 = new SingleColumnValueFilter(Bytes.toBytes("counts"),
        Bytes.toBytes("count"),
        CompareFilter.CompareOp.GREATER_OR_EQUAL,
        Bytes.toBytes("0"));

    SingleColumnValueFilter filter2 = new SingleColumnValueFilter(Bytes.toBytes("counts"),
        Bytes.toBytes("count"),
        CompareFilter.CompareOp.GREATER_OR_EQUAL,
        Bytes.toBytes("3"));
    filterList.addFilter(filter1);
    filterList.addFilter(filter2);

    Scan scan = new Scan();
    scan.setFilter(filterList);

    ResultScanner rs = table.getScanner(scan);
    for (Result r : rs){
        for(Cell cell : r.rawCells()){
            logger.info("Rowkey :{}  Values:{}  Timestamp:{} ",Bytes.toString(r.getRow()),
                    Bytes.toString(CellUtil.cloneValue(cell)),cell.getTimestamp());
            sb.append(Bytes.toString(r.getRow())).append("\n");
        }
    }
    table.close();
} catch (IOException e) {
    logger.info("getBlacklist Exception {}",e);
}

二、Hbase java API的完整接口

具体可以参阅以下文档,自认为还算比较齐全的

 

相关参考资料的链接:https://blog.csdn.net/blue_jjw/article/details/41947567   [Hbase的官方文档中文版]

https://www.csdn.net/gather_22/MtTaEgysMDM1NC1ibG9n.html

https://cloud.tencent.com/developer/article/1355413

https://www.csdn.net/gather_25/MtTaEg0sMDAxMC1ibG9n.html

https://my.oschina.net/u/3754001/blog/1803426

https://blog.csdn.net/u010967382/article/details/37878701

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值