我正在将密钥保存为字节数组。在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
1条答案
按热度按时间mec1mxoz1#
hbase shell使用称为字节数组的“二进制字符串”(转义十六进制)表示形式来打印键/值(请参阅bytes.tostringbinary方法)。此方法基本上对每个字节执行以下两个操作之一:
如果字节值在范围内,则将其转换为可打印(ascii)表示形式。
如果字节值不在ascii范围内,则将其转换为\xhh(其中“h”表示十六进制数字)。
其思想是使用可打印的表示。如果您的键/值都是可打印的字符,那么shell将不会打印出这些奇怪的\xhh序列。
如果您更喜欢十六进制表示法,请在hbase shell中尝试以下操作:
您可以修改hbase shell ruby wrappers以使用tohex()方法而不是tostringbinary()来打印数据(或者更好;如果您愿意的话,您可以向hbase提供一个补丁来包含这两个选项的标志;请参阅hbase开发人员指南)。