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);