Hazelcast Jet Pipelines API:处理来自多个父节点的数据

时间:2018-03-21 16:47:55

标签: java union pipeline hazelcast hazelcast-jet

这个问题是关于Hazelcast Jet 0.5.1中的Pipeline API

我试图创建的管道有两个无限的来源:一个是自动收报机(每分钟发送一个事件的自定义源),另一个是Kafka主题。

看起来像是:

Pipeline pipeline = Pipeline.create();
ComputeStage<Object> tickerSource = pipeline.drawFrom(Sources.fromProcessor("ticker", TickerSource.getSupplier()));
ComputeStage<Object> kafkaSource  = pipeline.drawFrom(KafkaSources.kafka(sourceProperties, KAFKA_TOPIC));

当其中任何一个源发出事件时,我希望该事件经历相同的步骤并流向相同的接收器。如果我们将我的问题翻译成SQL术语,我想要一个&#34; UNION&#34;看起来像这样的东西:

target pipeline

我发现的关于将两个节点合二为一的所有示例和文档都等同于SQL&#34; JOIN&#34;操作,而不是&#34; UNION&#34;。

我发现绕过我的问题的唯一方法是做这样的事情,但我觉得这是框架应该已经拥有的东西,尽管我似乎无法找到它。

Arrays.asList(tickerSource, kafkaSource).forEach(source ->
{
    ComputeStage<Object> result = source.map(MyCustomProcessor::process);
    result.drainTo(Sinks.fromProcessor("first-sink", MyFirstSink.getSupplier());
    result.drainTo(Sinks.fromProcessor("second-sink", MySecondSink.getSupplier());
});

结果如下:

resulting pipeline

0 个答案:

没有答案