我将密钥保存为字节数组。在 HBase Shell 中,当我查看我的密钥时,我看到了非十六进制值……我没有启用任何编码,也没有启用任何压缩。
这是一个示例……什么是 VNQ?什么是 BBW?我猜有某种编码正在进行?
\xFB\xC6\xE8\x03\xF0VNQ\x8By\xF6\x89D\xC1\xBBW\x00\x00\x00\x00\x00\x00\x01\xF3\x00\x00\x00\x00\x00\x07\xA1\x1F
我将密钥保存为字节数组。在 HBase Shell 中,当我查看我的密钥时,我看到了非十六进制值……我没有启用任何编码,也没有启用任何压缩。
这是一个示例……什么是 VNQ?什么是 BBW?我猜有某种编码正在进行?
\xFB\xC6\xE8\x03\xF0VNQ\x8By\xF6\x89D\xC1\xBBW\x00\x00\x00\x00\x00\x00\x01\xF3\x00\x00\x00\x00\x00\x07\xA1\x1F
HBase shell 使用字节数组的“二进制字符串”(转义十六进制)表示来打印出键/值(参见Bytes.toStringBinary 方法)。这个方法基本上对每个字节做两件事之一:
这个想法是使用可打印的表示。如果您的键/值都是可打印的字符,那么 shell 将不会打印出任何那些奇怪的 \xHH 序列。
如果您更喜欢十六进制表示,请在 HBase shell 中尝试以下操作:
> import org.apache.hadoop.hbase.util.Bytes
> Bytes.toHex(Bytes.toBytesBinary("\xFB\xC6\xE8\x03\xF0VNQ"))
> fbc6e803f0564e51
您可以修改 hbase shell ruby 包装器以使用 toHex() 方法而不是 toStringBinary() 来打印数据(或更好;如果您愿意,可以向 HBase 提供一个补丁以包含两个选项的标志;请参阅HBase 开发者指南)。