这篇文章主要介绍了Hbase如何使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
与mysql对比:
1创建表只需要指世代相传定列族,不需要指定具体的列以及类型
@PostConstruct
公共布尔不知道(){,,
, 日志 info(“创建表时),,,,
,表的表=表。的 (this.getTableName ());,,,
,尝试{,,,,,,,
,,管理员管理=connection.getAdmin (),,,,,
,,,,如果(! admin.tableExists(表)){,,
,,,,,,,,, 日志 info (tableName.toString() +“不是,存在,创造你,),,,,,,,,
,,,HTableDescriptor才能tdesc=new HTableDescriptor(表),,,,,,,,,<强>,,,强>
<强>,,,,强> <强> HColumnDescriptor colDesc=强> <强>新强> <强> HColumnDescriptor(强> <强> 家庭 强> <强>)强> <强>,>强,,,,,,,,
,,,,tdesc.addFamily (colDesc);,,,,,,,,,
,,,,admin.createTable (tdesc);,,,,,,,
,,,,admin.close (),,,,,,
,,,},,,,,
,,, 日志 info(“创建表以何种);,,,,,
,,,返回true;,,,
,}捕捉(IOException才能e) {,,
,,日志, . error(“创建表错误{}{}“,表名,e.getLocalizedMessage ());,,,
,,,,,返回false,,,,,
}
}
2存储数据格式HBASE,价值全部采用<强> byte[]字节数据形>强式存储
,,优势:1不需要提前处理数据类型统一采用<强> Bytes.toByte() >强所以存储速度更高
,,,,, 2与原始数据类型相比,序列化后的byte[],形式存储可以节省字节
3可以根据rowKey进行范围查找,这个需要将rowKey设计得当。
@Override
公共List
,尝试{,
,,,表=connection.getTable表(表。的 (getTableName ()));,,
,,扫描扫描=new扫描();,
,,, scan.withStartRow (start.getBytes(),真的),,
,,,,,,.withStopRow (end.getBytes(),真正的),,,,
, ResultScanner扫描仪=table.getScanner(扫描);,,,
, List
,,,,(结果结果:扫描仪){,
,,,,, list.add (getObj(结果));,,
,,},,,,
返回列表;,,
}捕捉(异常e) {,,,
日志 . error (“HBase批量获取数据失败“,e);,
,},
,返回集合。 emptyList ();}