我正在开发一个项目,我必须使用hbase。项目是基于java的。我需要知道什么是最好的hbase客户端api for java。
答案 0 :(得分:7)
HBase在核心库中有自己的java客户端。它几乎涵盖了所有内容。 (也有连接)。如果您需要异步客户端您可以从stumbleupon检查asyncbase,这是一个可靠的客户端。但它的过滤器支持是有限的。(虽然它有基本的过滤器,但它们像魅力一样工作)。如果您使用的是java,我建议不要使用via rest。
答案 1 :(得分:6)
Kundera是推荐使用的客户。 作者正在努力工作。
答案 2 :(得分:2)
Kundera是Hbase以及Cassandra和MongoDB的对象数据存储映射工具。
一些突出的特点是:
答案 3 :(得分:1)
playOrm是另一个java工具,您可以在其中注释您的实体并立即启动并运行。由于nosql太不同,故并不是JPA兼容的。它有像findAll()这样的方法,因为你想在nosql中并行读取。
playOrm确实添加了JQL,但是对于nosql有一个转折....作为扭曲的一个例子,你可以将一万亿行划分为10亿个分区,并将JQL放入任何分区并与其他表连接。如果你来自JPA世界,它会更容易过渡到noSql。
答案 4 :(得分:1)
HBaseExecutor,HBase Java客户端的简单包装器。与原生HBase Java驱动程序相比,HBaseExecutor具有以下功能:
以下是HBaseExecutor的简单示例
Account account = createAccount();
// Insert is supported by Model/entity
hbaseExecutor.put("account", toAnyPut(account));
// Get is supported by Model/entity
Account dbAccount = hbaseExecutor.get(Account.class, "account", AnyGet.valueOf(account.getId()));
N.println(dbAccount);
// Delete the inserted account
hbaseExecutor.delete("account", AnyDelete.valueOf(account.getId()));
与HBase Java客户端的示例比较:
Account account = createAccount();
// Insert an account into HBase store
Put put = new Put(Bytes.toBytes(account.getId()));
put.addColumn(Bytes.toBytes("name"), Bytes.toBytes("firstName"), Bytes.toBytes(account.getName().firstName().value()));
put.addColumn(Bytes.toBytes("name"), Bytes.toBytes("lastName"), Bytes.toBytes(account.getName().lastName().value()));
put.addColumn(Bytes.toBytes("contact"), Bytes.toBytes("city"), Bytes.toBytes(account.getContact().city().value()));
put.addColumn(Bytes.toBytes("contact"), Bytes.toBytes("state"), Bytes.toBytes(account.getContact().state().value()));
put.addColumn(Bytes.toBytes("createTime"), Bytes.toBytes(""), Bytes.toBytes(N.stringOf(account.createTime().value())));
hbaseExecutor.put("account", put);
// Get the inserted account from HBase store
Result result = hbaseExecutor.get("account", new Get(Bytes.toBytes(account.getId())));
CellScanner cellScanner = result.cellScanner();
while (cellScanner.advance()) {
final Cell cell = cellScanner.current();
N.println(Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength()));
N.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));
N.println(Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));
// ... a lot of work to do
}
// Delete the inserted account from HBase store.
hbaseExecutor.delete("account", new Delete(Bytes.toBytes(account.getId())));
(声明:我是HBaseExecutor的开发者)