尝试简化基于hbase的java应用开发的simplehbase介绍
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;}
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; }}
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);
MyRecord myRecord2 = simpleHbaseClient.findObject(myRecordRowKey, MyRecord.class);
MyRecordRowKey startRowKey = new MyRecordRowKey("key_allen1"); MyRecordRowKey endRowKey = new MyRecordRowKey("key_allen8"); List<MyRecord> list = simpleHbaseClient.findObjectList(startRowKey, endRowKey, MyRecord.class);