Hbase 使用整数作为行键和字典顺序
Hbase use integer as row key and lexicographical order
我正在设计一个 Hbase 模式,其中行键应该是一个整数。我打算将 java 中的扫描 API 与带有整数值的 startrow 和 endrow 一起使用。
我想我可以使用 '0'
填充将我的整数转换为字符串以遵守字典顺序,但我的密钥将比使用整数的二进制表示大得多。
如果我对 startrow 和 endrow 使用相同的转换,我如何在 byte[]
中转换我的整数(比如 int
)以便扫描将 return 预期值?
答案:
Nils 给出了答案,我在这里找到了确认:
Java Comparator for byte array (lexicographic)
Hbase 从 byte[]
中提取 int
并进行比较。
您可以使用 hbase-client 库中的 org.apache.hadoop.hbase.util.Bytes 来完成此操作。
从字节数组到整数:
Bytes.toInt(byteArray)
从整数到字节数组:
Bytes.toBytes(intvalue)
我实际上已经制作了一个在线工具来生成我需要在 hbase shell right here 中查询行 ID 的十六进制值。
我正在设计一个 Hbase 模式,其中行键应该是一个整数。我打算将 java 中的扫描 API 与带有整数值的 startrow 和 endrow 一起使用。
我想我可以使用 '0'
填充将我的整数转换为字符串以遵守字典顺序,但我的密钥将比使用整数的二进制表示大得多。
如果我对 startrow 和 endrow 使用相同的转换,我如何在 byte[]
中转换我的整数(比如 int
)以便扫描将 return 预期值?
答案:
Nils 给出了答案,我在这里找到了确认:
Java Comparator for byte array (lexicographic)
Hbase 从 byte[]
中提取 int
并进行比较。
您可以使用 hbase-client 库中的 org.apache.hadoop.hbase.util.Bytes 来完成此操作。
从字节数组到整数:
Bytes.toInt(byteArray)
从整数到字节数组:
Bytes.toBytes(intvalue)
我实际上已经制作了一个在线工具来生成我需要在 hbase shell right here 中查询行 ID 的十六进制值。