2012-04-11 10 views
7

Sono nuovo in cassandra e hector.Recupera tutte le colonne di una riga in Cassandra utilizzando Client Hector

Voglio recuperare tutte le colonne di una riga in Cassandra utilizzando hector. Dopo un po 'di esplorazione sul web ho avuto qualche codici di esempio, ma richiede gamma o colonna nome, come,

SliceQuery<String,String,String> query = HFactory.createSliceQuery(keyspace, ss, ss, ss); 
    query.setColumnFamily("MyColumnFamily").setKey("S001").setRange(null, null, false, 100); 
    QueryResult<ColumnSlice<String,String>> result = query.execute(); 
    for (HColumn<String, String> column : result.get().getColumns()) { 
     System.out.println(column.getName() +"::"+ column.getValue()); 
    } 

Qui ho bisogno di impostare Gamma in setRange() metodo che recupera colonne in questa gamma. Possiamo anche impostare l'inizio e la fine in questo metodo, ma questo fornirà anche colonne di un intervallo particolare. Se non sto impostando l'intervallo, devo fornire i nomi delle colonne come array.

C'è un modo per ottenere tutte le colonne di una riga particolare? Non voglio impostare i nomi di intervallo o colonna, voglio solo tutte le colonne di una riga. perché nella mia applicazione le colonne non sono predefinite.

Oppure esiste un modo per ottenere il conteggio totale di righe di una riga in modo da poterlo impostare nel metodo setRange()?

Grazie.

risposta

10

Il modo per eseguire questa operazione per righe un po 'piccole è utilizzare il metodo setRange() esattamente come viene utilizzato nell'esempio che è stato incollato. Se si impostano i parametri di inizio e fine dell'intervallo su null, l'intervallo da recuperare è l'intera riga.

L'unica cosa che devi rendere conto a quel punto è il limite. Nell'esempio che hai incollato il limite è impostato su 100, quindi la query non restituirà più di 100 colonne. Puoi impostare il limite su un numero molto grande (più grande del numero possibile di colonne che avresti) se vuoi recuperare sempre tutte le colonne di una riga, ma questo è non generalmente una buona idea.

Invece, probabilmente si vorrebbe creare un hector ColumnSliceIterator, per la query di intervallo, che fornirà un'interfaccia iteratore per la riga e permetterà di scorrere l'intera riga senza interrogare troppe colonne contemporaneamente. Vedere l'esempio in "Iterazione colonne" nella parte inferiore di questa pagina:

https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29

Problemi correlati