【问题标题】:PagingPredicate issues with comparator比较器的 PagingPredicate 问题
【发布时间】:2017-03-20 22:09:19
【问题描述】:

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

我使用下面的构造函数:

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

缓存中的数据将近 90000 条记录。我需要完整排序集合中的前 100 条记录,但它正在对 IMap 中的前 100 条记录应用排序

请问您能帮忙解决这个问题吗?

hazelcast 版本 - 3.7.3

【问题讨论】:

    标签: sorting pagination paging hazelcast predicate


    【解决方案1】:

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

    例如,如果您有 1-90000 条记录,对于 pagingSize=100,分页谓词应该返回 1-100。

    【讨论】:

    • 感谢您的回复阿里。我在单个节点上运行,IMap 拥有近 90000 条记录。当我将 PagingPredicate 与更大的 pageSize 一起使用时,结果将通过分页支持进行排序。但是当 pageSize 给定为 100 或 200 并尝试获取第一页(零)时,它没有提供正确的结果。
    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多