Domanda

Sto lavorando su un progetto con un amico che utilizzerà Hbase per memorizzare i suoi dati.Ci sono buoni esempi di query?Mi sembra di scrivere un sacco di codice Java per scorrere gli elenchi di RowResult quando, in SQL terra, potrei scrivere una query semplice.Mi manca qualcosa?O è Hbase manca qualcosa?

È stato utile?

Soluzione

Penso che tu, come molti di noi, stanno facendo l'errore di trattare bigtable e HBase come un altro RDBMS quando in realtà è una column-oriented storage modello pensato in modo efficiente per la memorizzazione e il recupero di grandi set di dati sparsi.Questo significa memorizzare, idealmente, molti-a-uno le relazioni all'interno di una singola riga, per esempio.Le query deve restituire poche righe, ma contengono (potenzialmente) molti datapoint.

Forse, se lei ci ha detto di più su ciò che si sta tentando di memorizzare, possiamo aiutarvi a progettare il vostro schema per abbinare la bigtable/HBase modo di fare le cose.

Per un buon resoconto di cosa HBase fa in modo diverso da un "tradizionale" RDBMS, check out questo articolo impressionante: La Corrispondenza Di Impedenza:Quando utilizzare HBase da Bryan Duxbury.

Altri suggerimenti

Se si desidera accedere HBase utilizzando un linguaggio di query e un driver JDBC è possibile.Paolo Ambrogio ha rilasciato una libreria che si chiama HBQL a hbql.com che vi aiuterà a fare questo.Io l'ho usato per un paio di progetti, e funziona bene.Si, ovviamente non hanno accesso alla versione completa di SQL, ma renderla un po ' più facile da usare.

Ho guardato Hadoop e Hbase e come Sean detto, ben presto ho capito che non mi ha dato quello che volevo, che era un cluster di JDBC database compatibile.

Penso che si potrebbe essere meglio usare qualcosa di simile C-JDBC o HA-JDBC che sembra più simile a quello che mi era stato dopo.(Personalmente, non ho più con uno di questi altri che leggere la documentazione, quindi non posso dire quale di loro è un bene, se qualsiasi.)

Mi consiglia di dare un'occhiata a Apache Hive il progetto, che è simile a HBase (nel senso che è un database distribuito) che implementa un SQL-esque lingua.

Grazie per la risposta Sean, e scusa per la mia risposta tardiva.Spesso faccio l'errore di trattare HBase come un RDBMS.Spesso, infatti, che ho dovuto ri-scrivere il codice a causa di esso!E ' una cosa difficile da dimenticare.

Adesso ci sono solo 4 tavoli.Che, in questo caso, è molto poco visto che il mio background.Stavo sperando per l'uso alcuni RDBMS funzionalità, mentre per lo più attaccare la colonna modello di archiviazione.

Sono contento di sentire che si stanno usando HBase!Io non sono un esperto con qualsiasi tratto di immaginazione, ma qui ci sono un paio di cose che potrebbero aiutare.

  • HBase è basato su / ispirato BigTable, che succede ad essere esposte da AppEngine come loro db api, in modo navigazione loro documenti dovrebbe aiutare un grande affare se si sta lavorando su una webapp.

  • Se non stai lavorando su una webapp, il tipo di iterazione stai descrivendo è di solito trattati con via mappa/ridurre (non emettono i valori non vuoi).Saltando i valori utilizzando gli iteratori praticamente garantisce che la vostra applicazione vi sono colli di bottiglia con HBase dimensioni insiemi di dati.Se si trova si sta ancora pensando in SQL, check-out cloudera del maiale tutorial e hive tutorial.

  • Insomma tutto HBase/SQL mentale differenza (per i non-webapps) si riduce a "Inviare il calcolo per i dati, non inviano i dati per il calcolo" -- se è da tenere a mente mentre si sta scrivendo il codice andrà bene :-)

Saluti,

David

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top