Кассандра и Гектор = MultiGetSliceQuery со значениями столбцов разных типов?

Привет,

Я не понимаю, как запросить cassandra с помощью hector, но возвращаемые значения столбцов не одного типа, а многих:

Я вставил ???? где я не знаю, что делать:

MultigetSliceQuery<String, String, ??????> multigetSliceQuery = HFactory.createMultigetSliceQuery(keyspace, stringSerializer, stringSerializer, ???????);

Например, если все мои значения столбца имеют тип String, я бы вставил String. Но у меня есть разные, такие как String, Integer и byte[] в одной строке. Поэтому я должен передать более одного сериализатора.

Как это решить?

Спасибо.

(можно ли создать Гектора как тег? Мне не разрешено это делать)


person Markus    schedule 03.06.2011    source источник


Ответы (2)


Вы можете использовать ByteBufferSerializer, а затем преобразовать ByteBuffers, возвращенные из ByteBufferSerializer, в качестве аргумента в StringSerializer и IntegerSerializer для преобразования столбцов, которые являются строками и целыми числами.

person sbridges    schedule 04.06.2011
comment
Правильно, вот как ты это делаешь. Это был распространенный вопрос среди пользователей hector, но лучшее решение, похоже, именно то, что вы предлагаете. - person Ran; 07.06.2011
comment
Но это предполагает, что вы знаете типы каждого столбца, чтобы иметь возможность выбрать правильный сериализатор (де) в своем коде. Что, если вы хотите десериализовать произвольно набранную строку? Это не такой необычный вариант использования, как может показаться на первый взгляд. Нам нужно было хранить в Cassandra произвольные объекты JSON с каждым свойством в отдельном столбце. В конце концов мы решили зарезервировать первый байт значения столбца для представления типа. Хотя это решение работает очень хорошо для нас и удаляет безумное количество котельной плиты Hector, большинство экспертов Hector-Cassandra не рекомендуют этот подход. - person David Semeria; 08.10.2011

Мы предоставляем произвольную типизацию с помощью шаблона метода шаблона. См. тестовый пример: https://github.com/rantav/hector/blob/master/core/src/test/java/me/prettyprint/cassandra/service/template/ColumnFamilyTemplateTest.java

Новое руководство по началу работы также должно быть полезным: https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29

person zznate    schedule 14.06.2011