tutorial - Ayuda de Hbase/Hadoop Query
hbase vs mongodb (6)
Miré a Hadoop y Hbase y, como dijo Sean , pronto me di cuenta de que no me daba lo que realmente quería, que era una base de datos agrupada de JDBC.
Creo que sería mejor usar algo como C-JDBC o HA-JDBC que pareciera más de lo que yo buscaba. (Personalmente, no he llegado más lejos con ninguno de estos que no sea la lectura de la documentación, así que no puedo decir cuál de ellos es bueno, si corresponde).
Estoy trabajando en un proyecto con un amigo que utilizará Hbase para almacenar sus datos. ¿Hay algún buen ejemplo de consulta? Parece que estoy escribiendo una tonelada de código Java para iterar a través de listas de RowResult cuando, en SQL land, podía escribir una consulta simple. ¿Me estoy perdiendo de algo? ¿O Hbase está perdiendo algo?
Gracias por la respuesta Sean, y lo siento por mi respuesta tardía. A menudo cometo el error de tratar HBase como un RDBMS. ¡Tan a menudo de hecho que he tenido que volver a escribir el código debido a eso! Es tan difícil de desaprender.
En este momento solo tenemos 4 tablas. Que, en este caso, es muy poco teniendo en cuenta mi origen. Solo esperaba utilizar algunas funcionalidades RDBMS mientras me apegaba principalmente al modelo de almacenamiento orientado a columnas.
Me alegra oír que ustedes están usando HBase! No soy un experto por ningún lado de la imaginación, pero aquí hay un par de cosas que podrían ayudar.
HBase está basado en / inspirado en BigTable, que pasa a ser expuesto por AppEngine como su API api, por lo que navegar por sus documentos debería ser de gran ayuda si está trabajando en una aplicación web.
Si no está trabajando en una aplicación web, el tipo de iteración que está describiendo generalmente se maneja a través de map / reduce (no emita los valores que no desea). Saltarse valores usando iteradores garantiza virtualmente que su aplicación tendrá cuellos de botella con conjuntos de datos del tamaño de HBase. Si descubre que todavía está pensando en SQL, consulte el tutorial de cerdos de cloudera y el tutorial de colmenas.
Básicamente, toda la diferencia mental HBase / SQL (para no-webapps) se reduce a "Enviar el cálculo a los datos, no enviar los datos al cómputo" - si lo tienes en cuenta mientras estás codificando. Lo haré bien :-)
Saludos,
David
Si desea acceder a HBase usando un lenguaje de consulta y un controlador JDBC, es posible. Paul Ambrose ha lanzado una biblioteca llamada HBQL en hbql.com que lo ayudará a hacer esto. Lo he usado para un par de proyectos y funciona bien. Obviamente no tendrá acceso a SQL completo, pero lo hace un poco más fácil de usar.
Recomiendo echar un vistazo al proyecto Apache Hive , que es similar a HBase (en el sentido de que es una base de datos distribuida) que implementa un lenguaje SQL-esque.
Creo que usted, como muchos de nosotros, está cometiendo el error de tratar bigtable y HBase como cualquier otro RDBMS cuando en realidad es un modelo de almacenamiento orientado a columnas destinado a almacenar y recuperar de forma eficiente conjuntos grandes de datos dispersos. Esto significa, idealmente, almacenar relaciones de muchos a uno dentro de una sola fila, por ejemplo. Sus consultas deben devolver muy pocas filas pero contienen (potencialmente) muchos puntos de datos.
Quizás si nos contara más sobre lo que estaba tratando de almacenar, podríamos ayudarlo a diseñar su esquema para que coincida con la forma de hacer las cosas de bigtable / HBase.
Para un buen resumen de lo que HBase hace de forma diferente a un RDBMS "tradicional", consulte este artículo impresionante: Impedancia coincidente: cuándo utilizar HBase por Bryan Duxbury.