Apache Flink 官方文档--流(DataStream API)-旁路输出
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,旁路输出(side output) 除了来自数据流算子的主流结果输出之外,可以产生任意数量的流旁路输出结果。旁路输出结果数据类型与主流结果的数据类型以及其他旁路输出结果数据类型可以是完全不同的。当你
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
河北省网络安全保卫工作条例
32位机子装哪个数据库
日常服务器管理方案
七十年代数据库多久更新一次
张雪峰网络安全视频
网络安全法处罚 医院
网络安全类招聘
共享资源最多的服务器
中国电子学会网络安全标准
网络技术方面论文
smtp 服务器 端口
软件开发 测试流程详细解读
app和服务器通信安全性
网络安全技术培训方案
计算机应用软件开发需要多久
毕翻译软件开发
福尔摩斯下载软件开发
web怎样网页链接数据库
怎么用家用电脑组建服务器
二次元社交软件开发风险
小软件开发怎么报价
数据库加解密实现机制
怎么修复服务器
kdb数据库默认账号密码
樊小于网络技术工作室
天津新云网络技术有限责任公司
小怪团必须要一个服务器的吗
旧电脑变成一体服务器
腾讯服务器服务商
html5创建单机数据库