Hazelcast Jet java.util.streaming
Hazelcast Jet java.util.streaming
我真的很喜欢 jazelcast jet 如何与 java util 流一起工作,但是当我 运行 这些流时,我感到困惑的是,这 运行 如何以分布式方式运行。
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 实例 运行ning 另一个主程序,然后 运行 此代码形成了一个由 2 个节点组成的集群。因此,当我 运行 上面的代码时,我希望看到 map 函数中的 print 语句在两个节点中打印,因为我认为它是分布式的并将发送到多个节点。但它始终只在一个节点中执行整个流程。我在想这是怎么分布的还是我对hazelcast Jet缺乏了解
谢谢
试试这个改变,你应该会看到不同
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);
这里的区别在于分布和分区。
列表是分布式的,意思是发送到网格中托管,但它仍然是一个单独的对象。一个网格成员持有它,因此您会看到来自映射器的单个系统输出流。
地图是分布式,但也是分区,这意味着托管分布在网格成员之间。如果有两个网格成员,他们将各自拥有大约一半的地图内容。所以你会看到多个系统输出流。
我真的很喜欢 jazelcast jet 如何与 java util 流一起工作,但是当我 运行 这些流时,我感到困惑的是,这 运行 如何以分布式方式运行。
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 实例 运行ning 另一个主程序,然后 运行 此代码形成了一个由 2 个节点组成的集群。因此,当我 运行 上面的代码时,我希望看到 map 函数中的 print 语句在两个节点中打印,因为我认为它是分布式的并将发送到多个节点。但它始终只在一个节点中执行整个流程。我在想这是怎么分布的还是我对hazelcast Jet缺乏了解
谢谢
试试这个改变,你应该会看到不同
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);
这里的区别在于分布和分区。
列表是分布式的,意思是发送到网格中托管,但它仍然是一个单独的对象。一个网格成员持有它,因此您会看到来自映射器的单个系统输出流。
地图是分布式,但也是分区,这意味着托管分布在网格成员之间。如果有两个网格成员,他们将各自拥有大约一半的地图内容。所以你会看到多个系统输出流。