首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hazelcast Jet java.util.streaming

Hazelcast Jet java.util.streaming
EN

Stack Overflow用户
提问于 2018-07-30 00:44:46
回答 1查看 85关注 0票数 1

我真的很喜欢jazelcast jet与java util流一起工作的方式,但是当我运行这些流时,我搞不懂它是如何以分布式的方式运行的。

代码语言:javascript
复制
    public class IstreamHazelcastDemo {

    public static void main( String[] args ) {

        JetInstance jet = Jet.newJetInstance();
        Jet.newJetInstance();

        IListJet<String> list = jet.getList("list");


        for(int i = 0; i < 50; i++) {
            list.add("test" + i);
        }

         DistributedStream.fromList(list)
                .map(word -> {
                    System.out.println("word: " + word);
                    return word.toUpperCase();
                })
                .collect(DistributedCollectors.toIList("sink"))
                 .forEach(System.out::println);


    }
}

这是一个简单的例子,我创建了一个jet实例,首先运行另一个主程序,然后运行这段代码,这样它就形成了一个包含2个节点的集群。因此,当我运行上面的代码时,我希望看到map函数中的print语句在两个节点中打印,因为我认为它是分布式的,并将发送到多个节点。但它总是只在一个节点上执行整个流程。我正在努力思考这是如何分布的,或者是我缺乏对hazelcast Jet的理解。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 04:27:55

尝试此更改,您应该会看到不同之处

代码语言:javascript
复制
        IMapJet<String, String> map = jet.getMap("map");

        for(int i = 0; i < 50; i++) {
            map.put("test" + i, "test" + i);
        }

         DistributedStream.fromMap(map)
            .map(entry -> {
                System.out.println("word: " + entry.getKey());
                return entry.getKey().toUpperCase();
            })
            .collect(DistributedCollectors.toIList("sink"))
            .forEach(System.out::println);

这里的区别在于分布和分区。

列表是分布式的,这意味着发送到网格进行托管,但它仍然是单个对象。一个网格成员持有它,因此您将看到来自映射器的单个sysout流。

地图是分布式的,但也是分区的,这意味着托管是跨网格成员拆分的。如果有两个网格成员,他们将分别拥有大约一半的地图内容。因此,您将看到多个sysout流。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51582452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档