simplehbase尝试简化基于hbase的java应用开发。
Simplehbase主要提供以下功能:
1 POJO和hbase的映射。
2 提供client,简化hbase的数据操作。
3 提供强语义的插入和更新操作。
Insert操作:只有原数据不存在时,才put成功。
Update操作:只有原数据存在时,才put成功。
simplehbase的代码,测试(示例)代码,文档见附件。
看一个简单的例子:
1 通过注解标示要保存在hbase中的POJO。该POJO对应hbase的Key-Value中的Value。
- @HBaseTable(defaultFamily = MyRecordConstants.ColumnFamilyName, defaultConvertor = DefaultColumnConvertor.class)
- public class MyRecord {
- @HBaseColumn(qualifier = "id")
- private int id;
- @HBaseColumn(qualifier = "name")
- private String name;
- @HBaseColumn(qualifier = "date")
- private Date date;
- @HBaseVersion
- @HBaseColumn(qualifier = "version")
- private long version;
- }
2 定义RowKey,该类型对应hbase的key-value中的key。
- public class MyRecordRowKey implements RowKey {
- private String row;
- public MyRecordRowKey(String row) {
- this.row = row;
- }
- @Override
- public byte[] toBytes() {
- return Bytes.toBytes(row);
- }
- @Override
- public String getTableName() {
- return MyRecordConstants.TableName;
- }
- }
3 使用simplehbase的client和hbase进行交互。
保存数据到hbase。
- MyRecord myRecord = new MyRecord();
- myRecord.setId(0);
- myRecord.setName("allen1");
- myRecord.setDate(new Date());
- myRecord.setVersion(0L);
- MyRecordRowKey myRecordRowKey = new MyRecordRowKey("key_allen1");
- simpleHbaseClient.putObject(myRecordRowKey, myRecord);
删除数据
- MyRecordRowKey myRecordRowKey = new MyRecordRowKey("key_allen1");
- simpleHbaseClient.deleteObject(myRecordRowKey);
按照key查找数据
- MyRecord myRecord2 = simpleHbaseClient.findObject(myRecordRowKey,
- MyRecord.class);
按照startKey和endKey查找列表
- MyRecordRowKey startRowKey = new MyRecordRowKey("key_allen1");
- MyRecordRowKey endRowKey = new MyRecordRowKey("key_allen8");
- List<MyRecord> list = simpleHbaseClient.findObjectList(startRowKey,
- endRowKey, MyRecord.class);