Scala HBase中的二进制编码是如何工作的?

Scala HBase中的二进制编码是如何工作的?,scala,encoding,hbase,kryo,scala-breeze,Scala,Encoding,Hbase,Kryo,Scala Breeze,我正在使用com.twitter.chill.KryoInjection将breeze SparseVector保存到HBase,以便序列化到字节数组,这似乎工作正常。但后来我发现,从HBase中读取向量后,有些值不同/缺失。 现在我想知道HBase是如何对数据进行编码的,以及数据的突变可能出现在哪里(保存/编码/可能压缩数据/读取??) 在保存到HBase之前,我想将HBase中存储的向量与相关向量进行比较,看看它们是否相等(那么很可能是读取问题),但我遇到了如何做到这一点的问题。HBase外

我正在使用com.twitter.chill.KryoInjection将breeze SparseVector保存到HBase,以便序列化到字节数组,这似乎工作正常。但后来我发现,从HBase中读取向量后,有些值不同/缺失。 现在我想知道HBase是如何对数据进行编码的,以及数据的突变可能出现在哪里(保存/编码/可能压缩数据/读取??)

在保存到HBase之前,我想将HBase中存储的向量与相关向量进行比较,看看它们是否相等(那么很可能是读取问题),但我遇到了如何做到这一点的问题。HBase外壳中向量的表示形式如下所示

column=d:vector,timestamp=143193690997,value=\x01\x00breeze.linalg.SparseVector$mcD$s\xF0\x01\x00\x01\x01\x01breeze.collection.mutable.sparseara\xF9\x01\x1A\x01\x02[\xC4\x01\x0 E?\xF0\x00\x00\x00\x00\x00\X05-\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\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\x01\x0E\x02\ x0A0~\xB2\x01\xCC\x01\xBA\x02\xD22\xE4a\xDA\xB6\x0A\xD0\x8B&\xC0\xC0\xC0\xC0\x05\x01\xC0\x84=\x01\x03breeze.storage.Zero$DoubleZero\xA4\x01\x01\x03\x06

如何将其与将向量序列化为文本文件时得到的“普通”字节码进行比较?
是否有人已经遇到过类似的问题并可以提供建议?

HBase只是将数据存储为您提供的字节数组。它不关心数据是否是使用kryo或任何其他技术创建的。因此,问题可能出在您的代码中,而不是HBase中