我想在hbase表上扫描10个版本。但是,结果给出了最新到最旧订单的数据。我想以相反的顺序得到它。有没有办法做到这一点?
示例:
如果我把数据…
您可以按以下两种方法放置具有反向订单时间戳的记录:
执行put总是在某个时间戳创建一个新版本的单元格。默认情况下,系统使用currentTimeMillis,但您可以在每列级别上自行指定时间戳(=长整数)。这意味着您可以在过去或将来分配时间,或者将长值用于非时间目的。
将时间戳值初始化为:
long timestamp = Long.MAX_VALUE - System.currentTimeMillis() Put put = new Put(Bytes.toBytes(rowKey), timestamp); put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value.toString())); table.put(put);
参考: https://hbase.apache.org/1.1/apidocs/org/apache/hadoop/hbase/client/Put.html#Put(byte[],%20long) https://www.ngdata.com/bending-time-in-hbase/
使用 的 哈希映射 强> 使用Key as:“family_column”字符串(列族和列名与'|'或'_'连接)和值LinkedList的值。
HashMap<String, LinkedList> values = new HashMap<String, LinkedList>()
使用Key将值作为LinkedList插入。 在for循环之后,迭代HashMap并为HashMap中的每个元素,获取LinkedList并使用以下方法反转LinkedList:
Collections.reverse(list)
现在迭代反转列表并将元素放入HBase中。