2011-10-12 84 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的開發者)