2013-05-15 2 views
4

Я пытаюсь воспроизвести хеширование Murmur3 в Кассандре. Кто-нибудь знает, как получить фактические значения хэша, используемые в клавишах строк? Мне просто нужны пара ключей хеш-значения из моих данных, чтобы проверить правильность реализации хэширования.Murmur3 Алгоритм хеширования, используемый в Cassandra

Alex

ответ

4

Ask Cassandra! Вставьте некоторые данные в таблицу. Впоследствии вы можете использовать функцию токена в запросе select, чтобы получить используемые значения токена. Например:

select token(id), id from myTable; 

составной ключ раздел сериализация в п раз массива байт (который всегда предваряется коротким, указывающим его длиной), содержащим последовательную ценность вашего ключевого элемента и закрытие 0. Неясно для меня, для чего нужны эти завершающие нули. Что-то связано с SuperColumns ...

+0

Nice. У нас есть составные первичные ключи, так что это не будет работать, но достаточно, чтобы проверить базовое хеширование правильно. Вы знаете, как cassandra внутренне хэширует сложный ключ. Посмотрел через вашего водителя и все еще не может это исправить. Btw настоятельная цель этого сообщения теперь устарела. Я собирался расширить cassandra-sharp с помощью правильной стратегии определения конечных точек, но теперь я использую ваш драйвер CqlSharp, в котором он встроен. Спасибо! –

+3

Для начала [Cassandra source] (http://grepcode.com/file/repo1.maven.org/maven2/org.apache.cassandra/cassandra-all/1.2.2/org/apache/) cassandra/db/marshal/CompositeType.java /), из которого я дистиллировал следующее: составной ключ раздела сериализуется как n-кратный массив байтов (который всегда добавляется с кратким указанием его длины), содержащим сериализованное значение вашего ключевой элемент и закрытие 0. Мне непонятно, для чего нужны эти завершающие нули. Что-то связано с SuperColumns ... –

Смежные вопросы