有没有办法在hbase中进行整数排序?
Is there any way to integer sort in hbase?
据我所知,HBase 仅支持用于写入目的的字节数组。
有什么方法可以接收整数排序而不是字典顺序
的扫描结果
例如
1
2
10
不如
1
10
2
有人说我们可以像这样存储
00001
00002
00010
还有其他方法吗?
来自org.apache.hadoop.hbase.util.Bytes:
/**
* Convert an int value to a byte array. Big-endian. Same as what DataOutputStream.writeInt
* does.
*
* @param val value
* @return the byte array
*/
public static byte[] toBytes(int val) {
byte [] b = new byte[4];
for(int i = 3; i > 0; i--) {
b[i] = (byte) val;
val >>>= 8;
}
b[0] = (byte) val;
return b;
}
因此您可以清楚地看到,您可以使用此实用程序 class 在保存之前转换您的密钥。获取时,它们将按整数值排序。
这有效地处理了您在评论中提到的填充。
据我所知,HBase 仅支持用于写入目的的字节数组。
有什么方法可以接收整数排序而不是字典顺序
的扫描结果例如
1
2
10
不如
1
10
2
有人说我们可以像这样存储
00001
00002
00010
还有其他方法吗?
来自org.apache.hadoop.hbase.util.Bytes:
/**
* Convert an int value to a byte array. Big-endian. Same as what DataOutputStream.writeInt
* does.
*
* @param val value
* @return the byte array
*/
public static byte[] toBytes(int val) {
byte [] b = new byte[4];
for(int i = 3; i > 0; i--) {
b[i] = (byte) val;
val >>>= 8;
}
b[0] = (byte) val;
return b;
}
因此您可以清楚地看到,您可以使用此实用程序 class 在保存之前转换您的密钥。获取时,它们将按整数值排序。 这有效地处理了您在评论中提到的填充。