gpt4 book ai didi

hbase - HBase Shell RowKey 中的非十六进制字符是什么?

转载 作者:行者123 更新时间:2023-12-04 10:23:21 29 4
gpt4 key购买 nike

我将我的 key 保存为字节数组。在 HBase Shell 中,当我查看我的 key 时,我看到非十六进制值......我没有启用任何编码,我没有启用任何压缩。

这是一个示例...什么是 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 method)。此方法基本上对每个字节执行以下两项操作之一:

  • 如果字节值在范围内,则将其转换为可打印 (ASCII) 表示。
  • 如果字节值不在 ASCII 范围内,则将其转换为\xHH(其中 'H' 表示十六进制数字)。

  • 这个想法是使用可打印的表示。如果您的键/值都是可打印的字符,那么 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 developer guide)。

    关于hbase - HBase Shell RowKey 中的非十六进制字符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353013/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com