Thanks.
Tamar


On January 23, 2012 at 11:24 AM aaron morton <aa...@thelastpickle.com> wrote:


> The columns are stored at the intersection of the row and the CF. So if you
> read all the columns for a row in a CF you are only getting those ones. 
>  
> Your hector code (using the range) looks correct to me. 
>  
> Have fun. 
> Aaron
> 
> 
> 
> 
> 
> 
> 
> -----------------
> Aaron Morton
> Freelance Developer
> @aaronmorton
> http://www.thelastpickle.com
> 
> 
> On 23/01/2012, at 9:24 PM, Tamar Fraenkel wrote:
> 
> > 
> > 
> > Hi!
> > 
> > I am getting started with Cassandra and Hector and have a question.
> > If I have CF with many columns, only a small portion of them having values
> > for any given key. I want to read all columns for a given key, but I don't
> > know which columns were populated.
> > I managed to do that with the code below (assumes that column names are
> > incremental numbers).
> > Is there any better way?
> > Thanks,
> > Tamar 
> > private static void readAllColunsForRowKey(String key) {
> >   MultigetSliceQuery<String, Long, String> multigetSlicesQuery =
> >     HFactory.createMultigetSliceQuery(tutorialKeyspace,
> > StringSerializer.get(), LongSerializer.get(),
> >        StringSerializer.get());
> >   multigetSlicesQuery.setColumnFamily(CF);
> >   multigetSlicesQuery.setKeys(key);
> >   multigetSlicesQuery.setRange(null, null, false, COL_COUNT);
> >   QueryResult<Rows<String, Long, String>> results =
> > multigetSlicesQuery.execute();
> >   Long lastColName;
> >   while ((lastColName = printColsAndGetLastColName(results, key)) != null) {
> >     multigetSlicesQuery.setRange(lastColName + 1, null, false, COL_COUNT);
> >     results = multigetSlicesQuery.execute();
> >   }
> > }
> > 
> > private static Long printColsAndGetLastColName(QueryResult<Rows<String,
> > Long, String>> results, String key) {
> >   Rows<String, Long, String> rows = results.get();
> >   if (rows.getCount() != 1) {
> >     System.out.println("No such key");
> >     return null;
> >   }
> >   Row<String, Long, String> row = rows.getByKey(key);
> >   ColumnSlice<Long, String> columnSlice = row.getColumnSlice();
> >   List<HColumn<Long, String>> columns = columnSlice.getColumns();
> >   for (HColumn<Long, String> column : columns) {
> >     System.out.println("Column Name: " + column.getName()
> >       + ", Column Val: " + column.getValue());
> >   }
> >   if (columns.size() == COL_COUNT) {
> >     return columns.get(COL_COUNT - 1).getName();
> >   }
> >   return null;
> > }
> > 


 

Reply via email to