这篇文章主要介绍了Hbase如何使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
10年积累的成都网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有哈尔滨免费网站建设让你可以放心的选择与我们合作。
与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 =newHColumnDescriptor(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
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
for (Result result : scanner) {
list.add(getObj(result));
}
return list;
} catch (Exception e) {
log.error("HBase批量获取数据失败", e);
}
return Collections.emptyList();}
感谢你能够认真阅读完这篇文章,希望小编分享的“Hbase如何使用”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!