2011-10-12 86 views
5

我正在一个项目中使用hbase。这个项目是基于java的。我需要知道什么是java最好的hbase客户端API。什么是最适合java的HBase客户端API

+0

我假设你问的是你应该直接编写Java代码还是通过REST访问HBase。答案取决于您的应用程序的需求。 – kdgregory

+0

我想问一下如何使用java连接到hbase。所以必须有一个API。我想下载,但现在我无法做到这一点 –

+1

HBase站点有完整的指示下载和安装HBase。从那里开始:http://hbase.apache.org/book/book.html – kdgregory

回答

7

HBase在核心库中有自己的Java客户端。它几乎涵盖了一切。 (也有连接)。如果您需要异步客户端您可以从stumbleupon(这是一个可靠的客户端)检查asyncbase。但是它的过滤器支持是有限的(尽管它有基本的过滤器,并且它们像魅力一样工作)。如果你使用java,我不会推荐使用通过休息。

2

Kundera是与Cassandra和MongoDB一起用于Hbase的对象数据存储映射工具。

一些显着特点是:

  • JPA 2.0兼容。
  • 使用lucene进行列/列族索引。
  • 支持实体关系和JPA查询。
  • 跨数据存储持久性

它在这里举行: https://github.com/impetus-opensource/Kundera

+0

你是否在hdfs上存储了列/列族的lucene索引? – debarshi

1

playOrm是其他Java工具,您可以标注您的实体,并立即启动和运行。由于nosql太不同了,它不符合JPA的要求。它有像findAll()这样的方法,用于在nosql中并行读取数据。

playOrm确实添加了JQL,但是对于nosql有一些改动。作为扭曲的一个例子,您可以将一万亿行划分为10亿个分区,并将JQL划分到任何分区并与其他表结合。如果您来自JPA世界,它会让您更轻松地转换到noSql。

6

昆德拉是推荐使用的客户端。 作者正在努力工作。

1

HBaseExecutor,一个简单的HBase Java客户端封装器。与本地HBase Java驱动程序相比,HBaseExecutor具有以下功能:

  • 为实体/字符串提供操作(CRUD)的一致/集成/简明API。
  • 封装字节参数/操作以提高可操作性。

下面是一个简单的示例与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客户端的示例:

​​

(声明:我HBaseExecutor的开发者)