java - Hazelcast keySet 流媒体?

标签 java memory java-stream hazelcast hazelcast-jet

我是 Hazelcast 的新手,我正在尝试使用它来将数据存储在太大而无法容纳在单台计算机上的 map 中。

我需要实现的过程之一是检查 map 中的每个值并对其执行某些操作 - 不是累积或聚合,而且我不需要立即查看所有数据,因此有与此无关的内存问题。

我的简单实现是使用IMap.keySet(),然后迭代所有键以依次获取每个存储的值(并允许在处理后对该值进行GC),但是我担心的是,系统中会有如此多的数据,即使只是获取 key 列表也会足够大,给系统带来过度的压力。

我希望有一个流式 API,我可以以这样的方式流式传输 key (甚至完整条目),以便本地节点不必在本地缓存整个集合 - 但未能找到任何似乎与我在文档中。

如果您提出任何建议,我将不胜感激。谢谢。

最佳答案

Hazelcast Jet 提供 j.u.s 的分布式版本,并向 IMap 添加“流”功能。 它允许在 Hazelcast 集群上执行 Java Streams API。

import com.hazelcast.jet.JetInstance;
import com.hazelcast.jet.stream.DistributedCollectors;
import com.hazelcast.jet.stream.IStreamMap;
import com.hazelcast.jet.stream.IStreamList;

import static com.hazelcast.jet.stream.DistributedCollectors.toIList;

    final IStreamMap<String, Integer> streamMap = instance1.getMap("source");
    // stream of entries, you can grab keys from it
    IStreamList<String> counts = streamMap.stream()
                    .map(entry -> entry.getKey().toLowerCase())
                    .filter(key -> key.length() >= 5)
                    .sorted()
                    // this will store the result on cluster as well
                    // so there is no data movement between client and cluster
                    .collect(toIList());

请查找有关喷气式飞机的更多信息 here和更多示例 here .

干杯, 维克

关于java - Hazelcast keySet 流媒体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42227680/

相关文章:

java - 使用Java 8流来转换嵌套集合

java - 在 Java 8 中查找高点和低点

Java For-each 循环数据类型不匹配

java - 以编程方式将输入发送到计算机

java - Spring Boot + HTML 5 视频流

c++ - 不占用物理内存的静态局部变量

java - 强制 JVM 释放内存

Java 流 : Optional to stream

java - 在 Eclipse 中并行运行 JUnit 参数化测试

memory - windows平台上是否有内存映射api,就像linux上的mmap()一样?