我在不同帐户中具有Flink应用程序的多级KDA。我有一个用例,需要查看记录内容以确定将数据推送到哪个AWS账户(该账户中的运动流)。
link显示了可以根据记录内容选择流名称的可能性,我需要支持多个kinesis生产者来推送到差异AWS账户。
有帮助吗?
答案 0 :(得分:0)
作为替代方案,您可以使用Side Outputs为其他AWS账户配置专用接收器(因此,FlinkKinesisProducer
)。
您可以按照以下步骤进行操作:
val stream: DataStream[T] = ...
val account1OutputTag = OutputTag[T]("aws-account-1-output")
...
val accountNOutputTag = OutputTag[T]("aws-account-N-output")
val mainDataStream = stream
.process(new ProcessFunction[T, T] {
override def processElement(
value: T,
ctx: ProcessFunction[T, T]#Context,
out: Collector[T]): Unit = {
// emit data to regular output
out.collect(value)
// emit data to a corresponding side output
ctx.output(accountKOutputTag, value)
}
})
...
val account1SideOutputStream: DataStream[T] = mainDataStream
.getSideOutput(account1OutputTag)
.addSink(account1KinesisProducer)
...
val accountNSideOutputStream: DataStream[T] = mainDataStream
.getSideOutput(accountNOutputTag)
.addSink(accountNKinesisProducer)