Apache Flink 官方文档--流(DataStream API)-旁路输出
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,旁路输出(side output) 除了来自数据流算子的主流结果输出之外,可以产生任意数量的流旁路输出结果。旁路输出结果数据类型与主流结果的数据类型以及其他旁路输出结果数据类型可以是完全不同的。当你
千家信息网最后更新 2026年11月02日Apache Flink 官方文档--流(DataStream API)-旁路输出
旁路输出(side output)
除了来自数据流算子的主流结果输出之外,可以产生任意数量的流旁路输出结果。旁路输出结果数据类型与主流结果的数据类型以及其他旁路输出结果数据类型可以是完全不同的。当你需要分割数据流时,这个算子非常有用。通常需要复制流,然后从每个数据流中过滤掉不需要的数据。
当使用旁路输出时,首先需要定义一个OutputTag来标识一个旁路输出流。
Java
// this needs to be an anonymous inner class, so that we can analyze the typeOutputTag outputTag = new OutputTag("side-output") {}; Scala
val outputTag = OutputTag[String]("side-output") 注意OutputTag是如何根据旁路输出流包含的元素类型typed的。
可以通过以下函数发射数据到旁路输出。
- ProcessFunction
- CoProcessFunction
- ProcessWindowFunction
- ProcessAllWindowFunction
可以使用Context参数(在上述函数中向用户暴露)将数据发送到OutputTag标识的旁路输出。以下是从ProcessFunction发出旁路输出数据的示例:
Java:
DataStream input = ...;final OutputTag outputTag = new OutputTag("side-output"){};SingleOutputStreamOperator mainDataStream = input .process(new ProcessFunction() { @Override public void processElement( Integer value, Context ctx, Collector out) throws Exception { // emit data to regular output out.collect(value); // emit data to side output ctx.output(outputTag, "sideout-" + String.valueOf(value)); } }); Scala:
val input: DataStream[Int] = ...val outputTag = OutputTag[String]("side-output")val mainDataStream = input .process(new ProcessFunction[Int, Int] { override def processElement( value: Int, ctx: ProcessFunction[Int, Int]#Context, out: Collector[Int]): Unit = { // emit data to regular output out.collect(value) // emit data to side output ctx.output(outputTag, "sideout-" + String.valueOf(value)) } }) 要读取旁路输出流,在数据流运算后使用getSideOutput(OutputTag)。此时将会获得键入旁路输出流的结果。
Java:
final OutputTag outputTag = new OutputTag("side-output"){};SingleOutputStreamOperator mainDataStream = ...;DataStream sideOutputStream = mainDataStream.getSideOutput(outputTag); Scala:
val outputTag = OutputTag[String]("side-output")val mainDataStream = ...val sideOutputStream: DataStream[String] = mainDataStream.getSideOutput(outputTag)
输出
旁路
数据
结果
数据流
类型
主流
函数
标识
算子
不同
元素
参数
可以通过
数量
有用
用户
示例
发射
运算
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州为想互联网科技有限公司
互联网科技公司简介
科技服务与互联网
期待互联网科技
互联网科技小额贷款
互联网金融和金融科技
深圳互联网科技怎么样
央行互联网金融科技公司
崇明区互联网教育科技诚信经营
呼和浩特新华互联网科技学院
互联网金融科技公司的优势
皮皮虾互联网科技有限公司
半导体是互联网高科技吗
本届互联网大会上的黑科技
工业互联网科技创业
山东大美朱楼互联网科技有限公司
上海同邻互联网科技有限公司规模
福建互联网展示科技馆设计
北京品多多互联网科技有限公司
互联网高科技绘画
花魁咖啡
互联网和科技技术
河南真二互联网科技有限公司
凡科互联网科技
天津摩尔互联网科技
上游互联网科技
大白互联网科技
互联网科技公司名称
无锡溥仪互联网科技有限公司
赶超互联网科技 微信多开