2011-10-12 16 views
5

Im trabajando en un proyecto en el que tengo que usar hbase. El proyecto está basado en Java. Necesito saber cuál es la mejor API de cliente hbase para Java.cuál es la mejor API del cliente HBase para java

+0

Asumiré que está preguntando si debe escribir código Java directamente o acceder a HBase a través de REST. La respuesta depende de las necesidades de su aplicación. – kdgregory

+0

quiero preguntarle cómo conectarse a hbase usando java. entonces debe haber una API para ello. Quiero descargar eso pero hasta ahora no puedo hacerlo. –

+1

El sitio de HBase tiene instrucciones completas para descargar e instalar HBase. Comience allí: http://hbase.apache.org/book/book.html – kdgregory

Respuesta

7

HBase tiene su propio cliente Java en la biblioteca central. Cubre casi todo. (También tengo conexión). Si necesita un cliente asíncrono, puede marcar asyncbase desde stumbleupon, que es un cliente sólido. Pero el soporte del filtro es limitado. (Aunque tiene filtros básicos, y funcionan como el encanto). Si está usando java, no recomendaría usarlo mediante reposo.

2

Kundera es una herramienta de mapeo del datastore de objetos para Hbase junto con Cassandra y MongoDB.

Algunas de las características más destacadas son:

  • APP 2.0.
  • Columna/columna de indexación de familia con lucene.
  • Soporte para relaciones entre entidades y consultas JPA.
  • Cruz-almacén de datos de persistencia

se aloja aquí: https://github.com/impetus-opensource/Kundera

+0

¿Almacena el índice lucene de la columna/familia de columnas en hdfs? – debarshi

1

playOrm es una herramienta java otra donde se puede anotar sus entidades e inmediatamente estar en funcionamiento. NO es compatible con JPA a propósito ya que nosql es demasiado diferente. Tiene métodos como findAll() ya que quiere que sus lecturas sean paralelas en nosql.

playOrm no agrega JQL pero con un giro para nosql ... Como ejemplo del giro, puede dividir un billón de filas en mil millones de particiones y hacer JQL en cualquier partición y unir con otras tablas. Hace una transición a noSql mucho más fácil si vienes del mundo JPA.

6

Kundera es un cliente recomendado para su uso. el autor trabaja duro para ello.

1

HBaseExecutor, un contenedor simple del cliente HBase Java. En comparación con el controlador nativo HBase Java, HBaseExecutor abajo Características:

  • proporciona APIs compatibles/integrables/concisos para las operaciones CRUD() con entidad/Cadena.
  • Contenedores para los parámetros de bytes/operaciones para mejorar la operabilidad.

Este es un ejemplo sencillo con 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())); 

En comparación con la muestra con el cliente 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()))); 

(Declaración: Soy el desarrollador de HBaseExecutor)

Cuestiones relacionadas