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
答案 0 :(得分:2)
PagingPredicate在内部对所有记录进行排序。 Hazelcast保持记录分区。排序发生在每个分区上,并选择前100个记录。因此,对于271(默认)分区,您将在本地拥有27100条记录。这些记录将被合并并再次排序,并返回前100条记录。
例如,如果您有1-90000条记录,则pagingSize = 100时,paging-predicate应返回1-100。