Получить все столбцы строки в Cassandra с помощью клиента Hector

Я новичок в Кассандре и Гекторе.

Я хочу получить все столбцы строки в Cassandra, используя 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()?

Спасибо.


person Jignesh Dhua    schedule 11.04.2012    source источник


Ответы (1)


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

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

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

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

person nickmbailey    schedule 11.04.2012