2012-04-11 1 views
7

Я новый участник cassandra и hector.Все Колонны подряд в Cassandra с помощью Hector Client

Я хочу получить все столбцы строки в Кассандре, используя hector. После некоторого исследования на веб-я получил некоторые примеры кодов, но для этого требуется диапазон или столбца имя, например,

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()); 
    } 

Здесь мне нужно установить диапазон в SetRange() метод, который извлекает столбцы в этом диапазоне. Мы также можем установить начало и конец этого метода, но это также даст столбцы определенного диапазона. Если я не устанавливаю диапазон, мне нужно указать имена столбцов в виде массива.

Есть ли способ получить все столбцы определенной строки? Я не хочу указывать имена диапазонов или столбцов, мне просто нужны все столбцы строки. потому что в моих приложениях столбцы не предопределены.

Или есть способ получить общее количество столбцов строки, чтобы я мог установить его в методе setRange()?

Спасибо.

ответ

10

Способ сделать это для нескольких небольших строк использует метод setRange() точно, как он используется в примере, который вы вставили. Если вы установите для начального и конечного параметров диапазона значение null, то диапазон для извлечения из него - это целая строка.

Единственное, что вам нужно учитывать в этой точке - это предел. В примере, в котором вы вставили предел, установлено значение 100, поэтому запрос не вернет более 100 столбцов. Вы можете установить предел на очень большое число (большее, чем возможное количество столбцов, которое у вас было бы), если вы хотите всегда извлекать все столбцы в строке, но это не, как правило, хорошая идея.

Вместо этого вы, вероятно, захотите создать hector ColumnSliceIterator для запроса диапазона, который даст вам интерфейс итератора для строки и позволит вам выполнять итерацию по всей строке без запроса слишком большого количества столбцов одновременно. См. Пример в разделе «Идентификация столбца» в нижней части этой страницы:

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