Hbase对rowKey进行scan时需要设置scan的范围,即startRowKey与endRowKey。
例如scan:xxxaaa ~ xxxzzz 这段范围内的数据可以这样设置:
val startRowKey: Array[Byte] = Bytes.add(Bytes.toBytes("xxx"), Bytes.toBytes("aaa"))
val stopRowKey: Array[Byte] = Bytes.add(Bytes.toBytes("xxx"), Bytes.toBytes("zzz"))
// 下面的写法与上面等价
val startRowKey: Array[Byte] = Bytes.add(Bytes.toBytes("xxx"), Bytes.toBytes("a"))
val stopRowKey: Array[Byte] = Bytes.add(Bytes.toBytes("xxx"), Bytes.toBytes("z"))
但现实需求情况下并不会这么理想,rowKey中的字段通常是经过散列的,可能包含中文或者其他情况,设置范围可能需要写成:
val startRowKey: Array[Byte] = Bytes.add(Bytes.toBytes("xxx"), Array[Byte](min))
val stopRowKey: Array[Byte] = Bytes.add(Bytes.toBytes("xxx"), Array[Byte](max))
那这个min和max需要怎么