Accumulo - 获取正确排序的扫描仪结果

时间:2013-08-05 21:36:57

标签: java sorting accumulo

是否有办法对从扫描仪获得的条目进行排序?我遇到的问题是我有后缀索引来减轻重复的行ID,当我扫描时,我没有得到完全升序的有序列表。例如,我得到的内容如下所示:

RowId: 2013-08-05 15:29:45.872        Value: 0
RowId: 2013-08-05 15:29:45.879        Value: 1
RowId: 2013-08-05 15:29:45.88         Value: 2
RowId: 2013-08-05 15:29:45.881        Value: 11 
//The previous should be the following:
RowId: 2013-08-05 15:29:45.88_a       Value: 3

如你所见.881> .88然后正确的行被放置了大约30个条目。有没有办法覆盖排序,还是有方便的方法来获得正确排序的扫描仪?

2 个答案:

答案 0 :(得分:2)

Accumulo中的条目按字典顺序排序。在ASCII中,'1'在'_'之前排序,这就是为什么你在'88_a'之前有'881'的原因。当您尝试在Accumulo中保留数字排序时,一种方法是使用零将数字填充到固定长度。如果您拥有的最大数字是999,那么您将使所有数字长3个字符,因此'8'将变为'008'而'88'将变为'088'。

答案 1 :(得分:0)

正如Billie所说,Accumulo对词典进行排序。在GitHub上有一个名为Orderly的project,您可能想要查看

  

该项目将各种简单和复杂的密钥数据类型序列化为排序顺序保留字节编码。对序列化字节数组进行排序会产生与基础数据类型

的自然排序顺序相同的顺序

不幸的是,它在6个月内没有更新。这是一个有趣的概念。