PagingPredicate比较器的问题

时间:2017-03-17 17:56:40

标签: sorting pagination paging hazelcast predicate

PagingPredicate应用于IMap时不对整个集合进行排序。它只对给定的pageSize进行排序。但我希望首先对集合进行排序,然后应用分页并提供结果。

我使用下面的构造函数:

PagingPredicate pagingPredicate = new PagingPredicate(predicate, comparator, 100);
Collection<Map<String, Object>> pagingResults = data.values(pagingPredicate);

缓存中的数据几乎是90000条记录。我需要来自完整排序集合的前100条记录,但它正在对IMap中的前100条记录进行排序

请帮忙解决这个问题吗?

hazelcast版本 - 3.7.3

1 个答案:

答案 0 :(得分:2)

PagingPredicate在内部对所有记录进行排序。 Hazelcast保持记录分区。排序发生在每个分区上,并选择前100个记录。因此,对于271(默认)分区,您将在本地拥有27100条记录。这些记录将被合并并再次排序,并返回前100条记录。

例如,如果您有1-90000条记录,则pagingSize = 100时,paging-predicate应返回1-100。