java - Hbase使用整数作为行键和字典顺序

标签 java hbase lexicographic

我正在设计一个 Hbase 架构,其中行键应该是整数。我打算使用 java 中的 scan API 以及带有整数值的 startrow 和 endrow。

我想我可以用 '0' 填充将整数转换为字符串,以尊重字典顺序,但我的键将比使用整数的二进制表示形式大得多。

如何在 byte[] 中转换我的整数(比如说 int),以便如果我对 startrow 使用相同的转换,扫描将返回预期值和endrow?

答案:

尼尔斯给出了答案,我在这里找到了确认:

Java Comparator for byte array (lexicographic)

Hbase 从 byte[] 中提取 int 并进行比较。

最佳答案

您可以使用 hbase-client 库中的 org.apache.hadoop.hbase.util.Bytes 来执行此操作。

从字节数组到int:

Bytes.toInt(byteArray)

从 int 到字节数组:

Bytes.toBytes(intvalue)

我实际上制作了一个在线工具来生成在 hbase shell 中查询 row-ids 所需的十六进制值 right here

关于java - Hbase使用整数作为行键和字典顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302145/

相关文章:

java - 在不使用弃用代码的情况下从 YMD HMS 值创建 Java 日期

java - Android如何为ImageView的自定义部分设置透明度

对本地 apache 服务器的 Java http 请求 - UnknownHostException

c++ - 高效计算字典序中特定元素的索引

c - 搜索二叉树C,字典顺序,下一个排列,递归

multithreading - Java:对从异步任务检索的结果进行排序

hbase - 如何从 HBase 获取图像

java - JPA2 与 HBase 数据存储使用 Datanucleus 写入重复行

hadoop - Phoenix-Spark API是否具有像HBase API这样的checkAndPut方法?

java - Java 中的字典顺序