2011-10-12 30 views
5

Im làm việc trên một dự án mà tôi đã sử dụng HBase.Các dự án là dựa trên java. Tôi cần biết api client hbase tốt nhất cho java là gì.API khách hàng HBase tốt nhất cho java

+0

Tôi sẽ giả sử rằng bạn đang hỏi về việc liệu bạn có nên viết mã Java trực tiếp hoặc truy cập HBase qua REST hay không. Câu trả lời tùy thuộc vào nhu cầu của ứng dụng của bạn. – kdgregory

+0

tôi muốn hỏi rằng làm thế nào để kết nối với HBase bằng cách sử dụng java. vì vậy phải có một api cho nó. Tôi muốn tải xuống nhưng bây giờ vẫn không thể làm như vậy –

+1

Trang web HBase có hướng dẫn đầy đủ về cách tải xuống và cài đặt HBase. Bắt đầu ở đó: http://hbase.apache.org/book/book.html – kdgregory

Trả lời

7

HBase có ứng dụng khách java riêng trong thư viện lõi. Nó bao gồm tất cả mọi thứ. (Có kết nối là tốt). Nếu bạn cần một máy khách không đồng bộ Bạn có thể kiểm tra asyncbase từ stumbleupon, đó là một khách hàng vững chắc. Nhưng nó hỗ trợ bộ lọc bị hạn chế. (Nó có bộ lọc cơ bản mặc dù, và chúng hoạt động như sự quyến rũ). Nếu bạn đang sử dụng java tôi sẽ không khuyên bạn nên sử dụng thông qua phần còn lại.

2

Kundera là một công cụ lập bản đồ đối tượng-datastore cho HBase cùng với Cassandra và MongoDB.

Một số tính năng nổi bật là:

  • JPA 2.0.
  • Lập chỉ mục gia đình cột/cột bằng cách sử dụng lucene.
  • Hỗ trợ cho các mối quan hệ thực thể và truy vấn JPA.
  • Cross-kho dữ liệu bền bỉ

Nó được lưu trữ ở đây: https://github.com/impetus-opensource/Kundera

+0

Bạn có lưu trữ chỉ số lucene của họ cột/cột trên hdfs không? – debarshi

1

playOrm là một công cụ java khác mà bạn có thể chú thích các đơn vị của bạn và ngay lập tức được lên và chạy. Nó không phải là JPA phù hợp với mục đích vì nosql là quá khác nhau. Nó có các phương thức như findAll() khi bạn muốn song song các lần đọc của bạn trong nosql.

playOrm thêm JQL nhưng với một twist cho nosql .... Là một ví dụ của twist, bạn có thể phân chia một nghìn tỷ hàng thành 1 tỷ phân vùng và thực hiện JQL vào bất kỳ phân vùng nào và tham gia với các bảng khác. Nó làm cho việc chuyển đổi sang noSql dễ dàng hơn nhiều nếu bạn đến từ thế giới JPA.

6

Kundera là khách hàng được đề xuất để sử dụng. tác giả là công việc khó khăn cho nó.

1

HBaseExecutor, trình bao bọc đơn giản của ứng dụng khách HBase Java. So sánh với Trình điều khiển Java HBase bản địa, HBaseExecutor có các tính năng sau:

  • Cung cấp API tích hợp/Concise cho hoạt động (CRUD) với thực thể/Chuỗi.
  • Trình bao bọc cho các tham số/hoạt động byte để cải thiện khả năng hoạt động.

Đây là một mẫu đơn giản với 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())); 

So với các mẫu với HBase Java client:

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

(Tuyên bố: Tôi là nhà phát triển của HBaseExecutor)

Các vấn đề liên quan