【问题标题】:Size of Predicate results in HazelcastHazelcast 中谓词结果的大小
【发布时间】:2016-07-20 06:39:17
【问题描述】:

在 hazelcast IMap 中查找谓词结果大小的最佳方法是什么?

在 MapProxyImpl.java 中没有直接的大小支持,并且 size() 将根据返回的集合计算,这在这种情况下是不受欢迎的。

你有什么建议吗?

谢谢。

【问题讨论】:

    标签: hazelcast hazelcast-imap


    【解决方案1】:

    您可能正在寻找尚不可用的IMap::size(Predicate) 重载,无论如何这听起来是一个不错的功能。您想为此创建一个功能请求吗?

    为了解决目前的问题,我想最好的解决方法是使用 EntryProcessor,针对所有键运行,基本上执行您的谓词并为每个键返回 1 或 0,然后将结果汇总到调用者。很抱歉没有更好的解决方案,但也许其他人有一个很棒的主意:)

    【讨论】:

    • 感谢诺克塔瑞斯! Hadoop 中的 mapreduce API 中的计数器对于这个用例也非常有用。
    • 完美! 竖起大拇指
    • Map executeOnEntries = map.executeOnEntries(new TestEntryProcessor(), predicate); class TestEntryProcessor implements EntryProcessor{ /** * 返回 null 以外的一些值,以便在 map.executreOnEntries(processor, Predicate) 中返回条目。 */ public Object process(Entry entry) { return 1; } public EntryBackupProcessor getBackupProcessor() { return null; } } 和 executeOnEntries.size() 返回大小。你推荐以上代码的建议?
    【解决方案2】:

    票上有答案

    从 3.8 开始你可以使用 map.aggregate(Aggregators.count());

    我还没有测试过

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多