Hbase如何使用

这篇文章主要介绍了Hbase如何使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

与mysql 对比:

1 创建表 只需要指定famliy 列族,不需要指定具体的列以及类型

@PostConstruct

public boolean createTable() {   

 log.info("create table start");   

 TableName tableName = TableName.valueOf(this.getTableName());   

 try {        

   Admin admin = connection.getAdmin();    

    if (!admin.tableExists(tableName)) {   

         log.info(tableName.toString() + "is not  exist,create it");       

        HTableDescriptor tdesc = new HTableDescriptor(tableName);           

       HColumnDescriptor colDesc = new HColumnDescriptor(FAMILY);        

       tdesc.addFamily(colDesc);         

       admin.createTable(tdesc);       

       admin.close();     

   }     

   log.info("create table end");     

   return true;   

 } catch (  IOException e) {  

     log.error("create table error {} {}", tableName, e.getLocalizedMessage());   

     return false;    

}

}

2 存储数据格式 HBASE  value全部采用byte[] 字节数据形式存储

  优势:1 不需要提前处理数据类型 统一采用 Bytes.toByte() so 存储速度更高

     2 与原始数据类型相比,序列化后的byte[]  形式存储可以节省字节

3 可以根据rowKey 进行范围查找,这个需要将rowKey设计得当。

@Override

public List<T> getByRange(String start, String end) { 

 try { 

   Table table = connection.getTable(TableName.valueOf(getTableName()));  

  Scan scan = new Scan(); 

   scan.withStartRow(start.getBytes(), true)  

           .withStopRow(end.getBytes(), true);   

 ResultScanner scanner = table.getScanner(scan);   

 List<T> list = new ArrayList<>(); 

   for (Result result : scanner) { 

     list.add(getObj(result));  

  }    

return list;  

} catch (Exception e) {    

log.error("HBase批量获取数据失败", e); 

 } 

 return Collections.emptyList();}

感谢你能够认真阅读完这篇文章,希望小编分享的“Hbase如何使用”这篇文章对大家有帮助,同时也希望大家多多支持蜗牛博客,关注蜗牛博客行业资讯频道,更多相关知识等着你来学习!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram