wat*_*zup 1 apache-flink flink-streaming
我有一个用例,我想在 Flink 上运行 2 个独立的处理流程。所以 2 个流看起来像
Source1 -> operator1 -> Sink1
Source2 -> operator2 -> Sink2
我想为两个流重新使用相同的 Flink 集群。我可以想到通过两种方式来做到这一点:
1) 在同一个 Flink 应用程序上提交 2 个不同的作业
2) 在同一个作业中设置 2 个管道
我能够设置第一个选项,但不确定如何执行第二个选项。有没有人试过这样的设置?一个比另一个有什么优势?
小智 6
您可以在 setupJob() 方法中简单地创建多个管道(具有单独或共享的源使用者)。下面是一个例子:
private void buildPipeline(StreamExecutionEnvironment env, String sourceName, String sinkName) {
DataStream<T> stream = env
.addSource(getInputs().get(sourceName))
.name(sourceName);
stream = stream.filter(evt -> filter());
....
}
@Override
public void setupJob(AthenaFlinkJobConfiguration jobConfig, StreamExecutionEnvironment env) throws Exception {
...
buildPipeline(env, sourceTopic1, sink1, ...);
buildPipeline(env, sourceTopic2, sink2, ...);
...
}
Run Code Online (Sandbox Code Playgroud)
这是两种方法的快速对比。使用单独作业的利弊:
在单个作业中使用单独管道的好处:
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |