Apache flink 多个FlinkkinesProducer作为数据流的接收器

Apache flink 多个FlinkkinesProducer作为数据流的接收器,apache-flink,flink-streaming,amazon-kinesis,Apache Flink,Flink Streaming,Amazon Kinesis,我有多层次的KDA与Flink应用程序在不同的帐户。我有一个用例,需要查看记录内容,以确定将数据推送到哪个AWS帐户(该帐户中的kinesis流) 显示了根据记录内容选择流名称的可能性,我需要支持多个kinesis生产者来推送到diff AWS帐户 有什么帮助吗?作为替代方案,您可以使用为不同的AWS帐户配置专用接收器(因此,FlinkkinesProducer) 您可以按如下方式制作: val流:数据流[T]=。。。 val account1OutputTag=OutputTag[T](“aw

我有多层次的KDA与Flink应用程序在不同的帐户。我有一个用例,需要查看记录内容,以确定将数据推送到哪个AWS帐户(该帐户中的kinesis流)

显示了根据记录内容选择流名称的可能性,我需要支持多个kinesis生产者来推送到diff AWS帐户


有什么帮助吗?

作为替代方案,您可以使用为不同的AWS帐户配置专用接收器(因此,
FlinkkinesProducer

您可以按如下方式制作:

val流:数据流[T]=。。。
val account1OutputTag=OutputTag[T](“aws-account-1-output”)
...
val ACCOUNTOUTPUTTAG=OutputTag[T](“aws-account-N-output”)
val maindastream=数据流
.process(新的ProcessFunction[T,T]{
重写def processElement(
值:T,
ctx:ProcessFunction[T,T]#上下文,
输出:收集器[T]:单位={
//将数据发送到常规输出
out.collect(值)
//将数据发射到相应的输出端
ctx.输出(accountKOutputTag,值)
}
})
...
val account1SideOutputStream:DataStream[T]=主数据流
.getSideOutput(account1OutputTag)
.addSink(account1KinesisProducer)
...
val AccountsInsideOutputStream:DataStream[T]=mainDataStream
.getSideOutput(accountNOutputTag)
.addSink(AccountInensisProducer)