Flink侧输出流

Flink 侧输出流(SideOutput) ProcessFunction 的 side outputs 功能可以产生多条流,并且这些流的数据类型可以不一样。一个 side output 可以定义为 OutputTag[X]对象,X 是输出流的数据类型。process function 可以通过 Context 对象发射一个事件到一个或者多个 side outputs。注意:OutputTag是如何根据旁路输出流包含的元素类型typed的。✨可以通过以下几种函数发射数据到旁路输出。当使用旁路输出时,首先需要定义一个。来标识一个旁路输出流。 阅读详情

除了从DataStream操作输出主结果流外,也可以生成任一数量的额外的侧输出流.结果流可以和主输出流的类型可以不匹配,并且侧输出流可以有不同类型.侧输出流的操作当你分流时非常有用,之前你需要先复制一个流再过滤出来,有了侧输出流,就不需要这样操作.

当使用侧输出流时,首先需要定义一个OutputTag,它将要被用来确定一个侧输出流.

val outputTag = OutputTag[String]("side-output")

 注意:侧输出流的类型是根据侧输出流包括元素的类型来确定.

可以从以下方法中来把数据输出到侧输出流

在以上的函数中可以用参数Context来暴露给用户发送数据到侧输出流. 下面例子是用ProcessFunction来发送数据到侧输出流.


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))
    }
  })

可以通过DataStream操作结果上使用getSideOutput(OutputTag)来获得侧输出流.将得到一个与侧输出流一样类型的DataStream.

val outputTag = OutputTag[String]("side-output")

val mainDataStream = ...

val sideOutputStream: DataStream[String] = mainDataStream.getSideOutput(outputTag)

Flink——Side Output侧输出流 主要内容: 在处理数据的时候,有时候想对不同情况的数据进行不同的处理,那么就需要把数据流进行分流。可以在主数据流上产生出任意数量额外的侧输出流。 阅读详情

相关推荐

Flink之侧输出流和流的拆分

一、准备数据 首先构建一个DataStream case class Sensor(id: String, timestamp: Long, temperature: Double) 传感器样例类包含,传感器id、时间戳、温度 构建Stream val env = StreamExecutionEnvironment.getExecutionEnvironment env.setParal...

heroking 5982

Flink 侧输出流

【代码】Flink 侧输出流。

TB_CYX的博客 746

Flink侧输出流(Side Output)

需求:如果温度值小于32F,就将报警信息输出到侧输出流中 package com.run.wc import org.apache.flink.streaming.api.scala.{OutputTag, StreamExecutionEnvironment} import org.apache.flink.api.scala._ import org.apache.flink.streami...

大唐帝国—前营 2323

flink的侧输出流

flink的侧输出流 在 flink处理数据流时,我们经常会遇到这样的情况:在处理一个数据源时,往往需要将该源中的不同类型的数据做分割处理,如果使用 filter算子对数据源进行筛选分割的话,势必会造成数据流的多次复制,造成不必要的性能浪费;flink中的侧输出就是将数据流进行分割,而不对流进行复制的一种分流机制。flink的侧输出的另一个作用就是对延时迟到的数据进行处理,这样就可以不必丢弃迟到的数据。 /** * 把呼叫成功的Stream(主流)和不成功的Stream(侧流)分别输出。 */...

weixin_46266718的博客 2835

【Flink】Flink的处理函数、TopN案例和侧输出流

在更底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提 炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自 定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。 在处理函数中,我们直面的就是数据流中最基本的元素:数据事件(event)、状态(state)以及时间(time)。这就相当于对流有了完全的控制权。 一、基本处理函数(ProcessF...

克里斯的博客 2365

Flink-侧输出流(SideOutput)及用侧输出流进行分流操作

GitHub https://github.com/SmallScorpion/flink-tutorial.git 侧输出流(SideOutput) 大部分的DataStream API的算子的输出是单一输出,也就是某种数据类型的流。除了split算子,可以将一条流分成多条流,这些流的数据类型也都相同。process function的side outputs功能可以产生多条流,并且这些流的数据类型可以不一样。一个side output可以定义为OutputTag[X]对象,X是输出流的数据类型。proc

SmallScorpion 3565

Flink流处理(开窗、水印、侧输出流)

Flink流处理高阶编程 目录Flink流处理高阶编程一、Flink的window机制1.1 窗口概述1.2 窗口的分类1.2.1 基于时间的窗口1.2.2 基于元素个数的窗口1.3 Window Function二、Keyed vs Non-Keyed Windows三、Flik中的时间语义与WaterMark3.1 Flink中的时间语义3.1.1 处理时间(process time)3.1.2 事件时间(event time)3.2 哪种时间更重要3.3 Flink中的WaterMar

weixin_42796403的博客 3741

Flink 侧输出流使用

Flink 侧输出流使用

congge_study的博客 1万+

Flink侧输出流机制

6.5 侧输出流(sideOutput) 6.5.1 功能1:处理允许迟到后迟到的数据 允许迟到数据,窗口也会真正的关闭,如果允许迟到后,还是有迟到的数据怎么办?Flink提供一种侧输出流的机制来处理关窗之后到达的数据。 public class Flink19_Watermark_SideOutput { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env

qq_43523503的博客 1229

【Flink】侧输出流

在我们实际开发过程中,会出现一个flink流需要做多种处理的情况,假如我们既需要把Flink从kafka中消费的数据入到大数据数据库,又需要把主流中的部分数据拿出来发送到kafka中,这种情况就可以考虑使用flink侧输出流,通过侧输出流的数据类型不必与主要流中的数据类型相匹配,并且不同旁路输出的类型也可以不同。 下面看例子 1、maven依赖如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:...

一杯咖啡半杯糖的博客 1973

Flink 异常 - 13.getSideOutput 侧输出流无数据

Flink 侧输出流无输出异常排查与解决。

BITDDD小栈 1168

flink使用侧输出流OutputTag报错

flink使用侧输出流OutputTag报错一、问题前提二、代码三、报错信息四、解决方案五、深入5.1 思考5.2 探索报错信息5.3 Debug5.4 大胆假设5.5 小心论证 一、问题前提 熟悉flink过程中涉及到侧输出流应用方式,故在本地想运行一套测试逻辑将flink读取的流切分流两个,这里切分流的方式采用侧输出流实现。【侧输出流也大多可以用在窗口中或者join,当数据延迟或者connect或者join失败可以将该数据输入到侧输出流来进行下一步的逻辑处理。这里不进行展开描述】 【flink】1.13

weixin_41998764的博客 2677

ROC-RK3588S-PC 刷机 安装Android系统

rk3588刷机,装系统

Wjz_www的博客 4834

Flink 侧输出流拆分流应用

业务场景:使用Flink同步Kafka数据近实时写入MySQL,需要将登录数据拆分为登录,日活,新增分别入三个MySQL表。采用侧输出流将流拆分为多个流,分别进行处理。 /** * Flink 读取 Kafka,每秒聚合一次数据,批量写入 MySQL * * create by LiuJinHe 2020/5/26 */ object CpDataKafkaToMySQL { private val logger = LoggerFactory.getLogger(thi...

L, there! 1390

vins-mono前端详解(2)——imu预积分

本篇文章详细讲解了vins-mono中imu预积分内容,包括复杂的公式推导。

weixin_44587828的博客 1192

基于ANSYS的电磁兼容仿真教程

最近,在做某系统的EMC仿真,使用ANSYS套件,对仿真学习做简要记录。本书简介与目录如下:本书配套有:视频教程+工程源文件+彩色仿真图片,下载链接如下:(审核中)第1章 基础知识1.1 电磁兼容基础​​​MS2、EMC三要素:3、 国际无线电干扰特别委员会标准:CISPR标准4、电磁兼容测试认证:传导发射(CE)、传导敏感度(CS)、辐射发射(RE)和辐射敏感度(RS)测试。

weixin_42508010的博客 2051

输出流_5分钟Flink - 侧输出流(SideOutput)

代码版本 Flink : 1.10.0 Scala : 2.12.6 侧输出流(SideOutput)本文介绍的内容是侧输出流(SideOutput),在平时大部分的 DataStream API 的算子的输出是单一输出,也就是某一种或者说某一类数据流,流向相同的地方。在处理不同的流中,除了 split 算子,可以将一条流分成多条流,这些流的数据类型也都相同。ProcessFunction 的 s...

weixin_39768444的博客 734

ZYNQ Linux 应用层 利用 AXI DMA 进行数据传输

ZYNQ Linux应用层 利用 AXI DMA 进行数据传输 软件版本: VIVADO2018.2 操作系统: Debian 9 硬件平台: ZYNQ-MZ7100FA 嵌入式操作系统:Debian(4.19.0-xilinx) AXI-DMA驱动:GitHub:bperez77/xilinx_axidma 一、搭建硬件环境 参见:《ZYNQ 修炼秘籍裸机篇 2019 版》第21章:CH21 利用 AXI DMA 进行批量数据环路测试 参考文章: ZYNQ跑系统 系列(四) AXI-DMA的linux下运

jin787730090的博客 1万+

Flink流数据分流:Filter与侧输出流实战

本文介绍了如何使用Apache Flink对流数据进行分流操作,主要分为两种方式:filter和侧输出流(Side Output)。首先,通过filter将数据流按用户分为mary_stream、bob_stream和else_stream,但这种方式效率较低,因为需要多次遍历流。接着,使用侧输出流在ProcessFunction中实现分流,通过OutputTag定义侧输出流标签,并在processElement方法中将数据发送到不同的侧输出流。侧输出流只需遍历流一次,效率更高,适合处理大规模数据或复杂场景

渣渣盟的博客 1313

K210视觉项目上位机避坑指南:解决C#解析ESP8266 TCP图像流的乱码、卡顿与连接中断

本文详细解析了K210与ESP8266在视觉项目中的上位机开发问题,重点解决TCP图像流解析中的乱码、卡顿与连接中断问题。通过自定义协议、JPEG流重组、TCP连接优化等实战技巧,提升系统稳定性和性能,适用于嵌入式视觉开发者和C#上位机程序员。

weixin_28730131的博客 402

ck3m多轴运动控制器笔记1:电机的配置与注意事项

利用PMAC(CK3M)运动控制器来实现对电机的控制,对具体的配置流程和注意事项讲解

p975468132的博客 4640

Flink中开窗的延迟触发、侧输出流的应用

Flink中开窗的延迟触发、侧输出流的应用 注意如何处理迟到数据和侧数据流♥: flink 解决乱序事件: 1.设定eventTime 和 waterMark 通过延时时长,使窗口等待一定时间以后再触发 2.如果窗口已经触发了,还有数据没有来,那就使用允许迟到时间 (allowedLateness)此时窗口虽然被触发了到那时没有关闭,等数据来了再次触发 3.若允许迟到时间过了,还有数据没有来,那就使用将数据放入侧输出流 流程图示意如下: import java.time.Duration impor

YYDS_emmm的博客 1429

10.2 构网型变流器引发的次同步振荡与宽频振荡问题:机理分析与抑制技术

随着构网型变流器在新型电力系统中的规模化部署,其作为电压源主动支撑电网的能力得到验证的同时,也引发了一系列前所未有的稳定性问题。传统的同步发电机主导的电力系统中,振荡模式主要集中于**低频区间**。然而,构网型变流器通过快速数字控制实现的虚拟同步、惯性响应等先进功能,其控制环路动态与电网阻抗、其他电力电子设备之间产生了复杂的交互作用。这种交互不仅可能诱发经典的**次同步振荡**,更可能催生频率范围从数赫兹到数百赫兹甚至上千赫兹的**宽频振荡**。

技术工作者 1304

Flink笔记-侧输出流

public class OutPutTagStream { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(3); FlinkKafkaConsumer010<St.

ooeeerrtt的博客 777

荒岛逃生游戏

正负表示逃生方向(正表示向右逃生,负表示向左逃生),绝对值表示战斗力,越左边的数字表示里左边港口越近,逃生方向相同的人永远不会发生决斗。- 如果左逃生者的战斗力大于右逃生者,则左逃生者获胜,减少其战斗力,并将右逃生者出栈。- 处理完所有输入后,统计仍在右逃生者栈和左逃生者栈中的战斗力,即可得到成功逃生的人数。- 如果左逃生者的战斗力小于右逃生者,则右逃生者获胜,减少其战斗力,左逃生者出局。- 向左逃生:从右逃生者栈中取出元素,与当前逃生者进行决斗。- 继续进行决斗,直到没有右逃生者或左逃生者的战斗力用尽。

面试高手的博客 2101

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: spark streaming数据背压(积压)
下一篇: hive 逻辑判断
大怀特
博客等级 码龄6年 5787粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值