Как работает двоичное кодирование в HBase?

Я сохраняю бриз SparseVectors в HBase, используя com.twitter.chill.KryoInjection для сериализации в массив байтов, который, похоже, работает нормально. Но затем я понял, что после чтения векторов из HBase некоторые значения отличаются/отсутствуют. Теперь мне интересно, как HBase кодирует данные и где может появиться мутация данных (сохранение/кодирование/возможно, сжатие данных/чтение??).

Я хотел сравнить векторы, хранящиеся в HBase, с коррелирующими векторами прямо перед сохранением в HBase, чтобы увидеть, равны ли они (тогда, вероятно, чтение будет проблемой), но я столкнулся с проблемой, как это сделать. Представление вектора в оболочке HBase выглядит так

column=d:vector, timestamp=1431936909897, value=\x01\x00breeze.linalg.SparseVector$mcD$s\xF0\x01\x00\x01\x01breeze.collection.mutable.SparseArra\xF9\x01\x1A\x01\x02 [\xC4\x01\x0E?\xF0\x00\x00\x00\x00\x00\x00?\xC5-\xF2\x15\x85Z:?\xD6,{ci\xA8\x08@\x06P\xE3\ x85\xACy'?\xEB\xA2\x09\xAA\xA3\xAD\x19?\xE4M\xCB\x98\xB8\x00f?\xE8\x00\x00\x00\x00\x00\x00@"\xA4Z\ x1C\xAC\x081?\xEB\xB0\xE3\xCD\x9AR&?\xE4\xB7\xF7K`\xDD)?\xEA\xD3\xC0\x06\x14\xEC\xF7?\xF3\x01]\xE8R46 ?\xC45\x03\x97\xE5\x0E\x8D\x0A\x00\x00\x00\x00\x00\x00\x00\x00\x01\x0E\x02\x0A0~\xB2\x01\xCC\x01\xBA \x02\xD22\xE4a\xDA\xB6\x0A\xD0\x8B&\xC0\xC0)\xDA\xCC\x05\x01\xC0\x84=\x01\x03breeze.storage.Zero$DoubleZero\xA4\x01\x01 \х03\х06

Как я могу сравнить это с «нормальным» байтовым кодом, который я получаю при сериализации вектора в текстовый файл? Кто-нибудь уже имел подобную проблему и может дать совет?


person nadinef1288    schedule 18.05.2015    source источник


Ответы (1)


HBase просто хранит данные в виде массива байтов, которые вы ему дали. Ему все равно, создано ли оно с помощью крио или любой другой технологии. Так что проблема, скорее всего, в вашем коде, а не в HBase.

person kostya    schedule 22.05.2015