Apache flink 如何在flink应用程序中指定两个源,一个进程运算符和一个接收器运算符
我使用的是flink 1.3,我定义了两个流源,它们将发出相同的事件供后续操作符处理(我定义的进程操作符和接收器操作符) 但在源进程pink管道中,我只能指定一个源,我会问如何指定两个或多个源,并执行相同的进程和接收器Apache flink 如何在flink应用程序中指定两个源,一个进程运算符和一个接收器运算符,apache-flink,Apache Flink,我使用的是flink 1.3,我定义了两个流源,它们将发出相同的事件供后续操作符处理(我定义的进程操作符和接收器操作符) 但在源进程pink管道中,我只能指定一个源,我会问如何指定两个或多个源,并执行相同的进程和接收器 object FlinkApplication { def main(args: Array[String]): Unit = { val env = StreamExecutionEnvironment.getExecutionEnvironment env
object FlinkApplication {
def main(args: Array[String]): Unit = {
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)
env.addSource(new MySource1()) //How to MySource2 here?
.setParallelism(1)
.name("source1")
.process(new MyProcess())
.setParallelism(4)
.addSink(new MySink())
.setParallelism(2)
env.execute("FlinkApplication")
}
}
API在如何设置处理管道方面提供了很大的灵活性。如果要对多个源应用相同的逻辑,可以执行此操作:
env.addSource(新MySource1())
.process(新的MyProcess())
.addSink(新MySink())
env.addSource(新MySource2())
.process(新的MyProcess())
.addSink(新MySink())
env.execute()
或者,如果这样做更有意义,您可以合并两个流,然后处理组合流(或这些方法的某种组合):
stream1.联合(stream2)
.过程(……)
.addSink(…)
如果您希望分叉流并对每个副本应用不同的操作,也可以采用另一种方式:
val-stream:DataStream[T]=env.addSource(new-MySource())
process(新的MyProcess1())
.addSink(新的MySink1())
process(新的MyProcess2())
.addSink(新的MySink2())
env.execute()
哇,Flink 1.3已经三岁多了 API提供了很多灵活性,让您可以设置处理管道。如果要对多个源应用相同的逻辑,可以执行此操作:
env.addSource(新MySource1())
.process(新的MyProcess())
.addSink(新MySink())
env.addSource(新MySource2())
.process(新的MyProcess())
.addSink(新MySink())
env.execute()
或者,如果这样做更有意义,您可以合并两个流,然后处理组合流(或这些方法的某种组合):
stream1.联合(stream2)
.过程(……)
.addSink(…)
如果您希望分叉流并对每个副本应用不同的操作,也可以采用另一种方式:
val-stream:DataStream[T]=env.addSource(new-MySource())
process(新的MyProcess1())
.addSink(新的MySink1())
process(新的MyProcess2())
.addSink(新的MySink2())
env.execute()
哇,Flink 1.3已经三岁多了 感谢David@David anderson给出的完美答案!是的,1.3太老了,>谢谢David@David anderson给出的完美答案!是的,1.3太旧了,>