Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by OnTimer Context ctx
day4_Flink基础-CSDN博客
Flink基础 Flink中的多流转换 分流 基础合流操作 基于时间的合流操作-双流连接 Flink 中的状态 状态的概念 状态的分类 按键分区状态(Keyed State) 算子状态(Operator State) 广播状态(Broadcast State) 状态持久化和状态后端 分流 侧输出流分流 典型的使用场景如下: 异常数据处理 场景描述:在数据处理过程中,经常会遇到不符合预期格式或包含错误的数据。例如,在一个日志分析系统中,正常的日志数据可能是按照特定的格式(如包含时间戳、日志级别、消息内容等字段)进行记录的。但由于各种原因,如网络故障、软件漏洞等,可能会产生格式错误的日志。 侧输出流的作用:可以将这些异常数据通过侧输出流分流出来,单独进行处理。这样可以保证主流的数据处理逻辑不受异常数据的干扰,同时也能够对异常数据进行针对性的分析,比如记录错误信息、统计错误类型的频率等。在 Flink 中,可以定义一个 OutputTag 来标记异常数据的侧输出流,当遇到不符合正常数据处理规则的日志时,将其发送到这个侧输出流中。 多类型数据分类...
Flink入门-通过DataStream Api实现消费欺诈检测
最新推荐文章于 2024-10-09 23:33:19 发布 似水_逆行 最新推荐文章于 2024-10-09 23:33:19 发布 阅读量1.2k 收藏 29 点赞数 24 分类专栏: Flink 文章标签: flink 大数据 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 1 信用卡消费欺诈 信用卡消费欺诈是指在信用卡的使用过程中,通过不正当手段获取或使用信用卡资金,侵犯他人或银行的财产权益的行为。这种行为可能包括但不限于盗刷、伪造信用卡、冒用他人信用卡、恶意透支等 2 模拟场景 我们模拟不同账户的信用卡消费记录,通过分析实时的消费记录,针对常见的消费欺诈进行检测,检测出来的欺诈行为进行告警。 3 核心流程与代码 1)通过TransactionSource构建消费记录,主要包含accountId,timestamp,amount三个字段,分别代表账户id,时间戳,消费金额。 2)然后通过keyBy按照accountId账户进行分区;即同一样账户的消费记录进行检测,不同账户的消费记录没有关联性;...
详解 Flink 的 ProcessFunction API
Flink 拥有易于使用的不同级别分层 API 使得它是一个非常易于开发的框架 最底层的 API 仅仅提供了有状态流处理,它将处理函数(Process Function )嵌入到了 DataStream API 中。底层处理函数(Process Function)与 DataStream API 相集成,可以对某些操作进行抽象,允许用户可以使用自定义状态处理来自一个或多个数据流的事件,且状态具有一致性和容错保证。除此之外,用户可以注册事件时间并处理时间回调,从而使程序可以处理复杂的计算。 核心 API(Core APIs),比如 DataStream API (用于处理有界或无界流数据)以及 DataSet API (用于处理有界数据集)在实际生产中一般使用较多。这些 API 为数据处理提供了通用的构建模块,比如由用户定义的多种形式的转换(transformations)、连接(joins)、聚合(aggregations)、窗口(windows)操作等。 Table API 是以表为中心的声明式编程,其中表在表达流数据时会动态变化。 Table API...
15、Flink 的广播状态 (Broadcast State) 详解
1、广播状态 (Broadcast State) 广播状态是一种特殊的算子状态,支持将一个流中的元素需要广播到所有下游任务的使用情形,广播状态用于保持所有子任务状态相同。 2、广播状态和其他算子状态的区别: 它具有 map 格式, 它仅在一些特殊的算子中可用,这些算子的输入为一个广播数据流和非广播数据流, 这类算子可以拥有不同命名的多个广播状态 。 3、广播状态 API 案例:存在一个序列,序列中的元素是具有不同颜色与形状的图形,希望在序列里相同颜色的图形中寻找满足一定顺序模式的图形对(比如在红色的图形里,有一个长方形跟着一个三角形)同时希望寻找的模式也会随着时间而改变。 定义两个流,一个流包含图形(Item),具有颜色和形状两个属性;另一个流包含特定的规则(Rule),代表希望寻找的模式,在图形流中,首先使用颜色将流进行进行分区(keyBy),确保相同颜色的图形会流转到相同的物理机上。 // 将图形使用颜色进行划分 KeyedStream<Item, Color> colorPartitionedStream = itemStream .keyBy(new...
【Flink】Flink 处理函数之基本处理函数(一)
1. 处理函数介绍 流处理API,无论是基本的转换、聚合、还是复杂的窗口操作,都是基于DataStream进行转换的,所以统称为DataStreamAPI,这是Flink编程的核心。 但其实Flink为了更强大的表现力和易用性,Flink本身提供了多层API,DataStreamAPI只是中间一环,如下图所示: 在更底层,Flink可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。 在处理函数中,操作的就是数据流中最基本的元素:数据事件(event)、状态(state)以及时间(time)。这就相当于对流有了完全的控制权。处理函数比较抽象,没有具体的操作,所以对于一些常见的简单应用(比如求和、开窗口)会显得有些麻烦;不过正是因为它不限定具体做什么,所以理论上我们可以做任何事情,实现所有需求。 2.
Flink处理函数(2)-- 按键分区处理函数
按键分区处理函数(KeyedProcessFunction):先进行分区,然后定义处理操作 1.定时器(Timer)和定时服务(TimerService) 定时器(timers)是处理函数中进行时间相关操作的主要机制 定时服务(TimerService)提供了注册定时器的功能 TimerService 是 Flink 关于时间和定时器的基础服务接口: // 获取当前的处理时间 long currentProcessingTime(); // 获取当前的水位线(事件时间) long currentWatermark(); // 注册处理时间定时器,当处理时间超过 time 时触发 void registerProcessingTimeTimer(long time); // 注册事件时间定时器,当水位线超过 time 时触发 void registerEventTimeTimer(long time); // 删除触发时间为 time 的处理时间定时器 void deleteProcessingTimeTimer(long time); // 删除触发时间为 time...
Flink处理函数(ProcessFunction、KeyedProcessFunction、ProcessWindowFunction、 ProcessAllWindowFunction)
Flink处理函数(ProcessFunction、KeyedProcessFunction、ProcessWindowFunction、 ProcessAllWindowFunction) 处理函数 处理函数是最为灵活的处理方法,可以实现各种自定义的业务逻辑;同时也是整个 DataStream API 的底层基础。 之前所介绍的流处理 API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都 是基于 DataStream 进行转换的;所以可以统称为 DataStream API,这也是 Flink 编程的核心。 而我们知道,为了让代码有更强大的表现力和易用性,Flink 本身提供了多层 API,DataStream API 只是中间的一环。 ProcessFunction是用于处理数据流的通用函数。它是一个抽象类,定义了处理数据流的常用方法,如processElement,onTimer等。您可以扩展ProcessFunction类并重写这些方法,以便在Flink程序中执行复杂的数据流处理逻辑。...
Flink中定时器的使用_flink 定时器 ontimerf()方法获取 事件-CSDN博客
定时器 让 Flink 流处理程序对处理时间和事件时间的变化作出反应。通常在KeyProcessFunction中使用。 基于处理时间或者事件时间处理过一个元素之后,注册一个定时器,然后在指定的时间运行。 最常见的显式利用Timer的地方就是KeyedProcessFunction。我们在其processElement()方法中注册Timer,然后覆写其onTimer()方法作为Timer触发时的回调逻辑。根据时间特征的不同: 处理时间——调用Context.timerService().registerProcessingTimeTimer()注册;onTimer()在系统时间戳达到Timer设定的时间戳时触发。 事件时间——调用Context.timerService().registerEventTimeTimer()注册;onTimer()在Flink内部水印达到或超过Timer设定的时间戳时触发。 Context和OnTimerContext所持有的TimerService对象拥有以下方法: currentProcessingTime(): Long 返回当前处理时间...
Flink 处理函数(1)-- 基本处理函数
在 Flink 的多层 API中,处理函数是最底层的API,是所有转换算子的一个概括性的表达,可以自定义处理逻辑 在处理函数中,我们直面的就是数据流中最基本的元素:数据事件(event)、状态(state)以及时间(time)。这就相当于对流有了完全的控制权 基本处理函数主要是定义数据流的转换操作,其所对应的函数类为ProcessFunction 处理函数的功能和使用 对于常用的转换算子来说: MapFunction只能获取到当前的数据; AggregateFunction 中除数据外,还可以获取到当前的状态(以累加器 Accumulator 形式出现); RichMapFunction提供了获取运行时上下文的方法 getRuntimeContext(); 但是无论那种算子,如果我们想要访问事件的时间戳,或者当前的水位线信息,都是完全做不到的 与时间相关的操作只能用时间窗口去处理,但如果要求对时间有更精细的控制,需要能够获取水位线,甚至要“把控时间”、定义什么时候做什么事,这就不是基本的时间窗口能够实现的了 因此需要使用处理函数:...
Flink多流转换(1)-- 分流&合流
目录 分流 代码示例 使用侧输出流 合流 联合(Union) 连接(Connect) 简单划分的话,多流转换可以分为“分流”和“合流”两大类 目前分流的操作一般是通过侧输出流(side output)来实现,而合流的算子比较丰富,根据不同的需求可以调用 union、connect、join 以及 coGroup 等接口进行连接合并操作 分流 将一条数据流拆分成完全独立的两条、甚至多条流。也就是基于一个DataStream,得到完全平等的多个子DataStream 调用.filter()方法进行筛选,将符合条件的数据拣选出来放到对应的流里 public class SplitStreamByFilter { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1);...
Flink编程--风险欺诈检测-CSDN博客
Flink 风险欺诈检测 Apache Flink 提供了 DataStream API 来实现稳定可靠的、有状态的流处理应用程序。 Flink 支持对状态和时间的细粒度控制,以此来实现复杂的事件驱动数据处理系统。 这个入门指导手册讲述了如何通过 Flink DataStream API 来实现一个有状态流处理程序。 在当今数字时代,信用卡欺诈行为越来越被重视。 罪犯可以通过诈骗或者入侵安全级别较低系统来盗窃信用卡卡号。 用盗得的信用卡进行很小额度的例如一美元或者更小额度的消费进行测试。 如果测试消费成功,那么他们就会用这个信用卡进行大笔消费,来购买一些他们希望得到的,或者可以倒卖的财物。 在这个教程中,你将会建立一个针对可疑信用卡交易行为的反欺诈检测系统。 通过使用一组简单的规则,你将了解到 Flink 如何为我们实现复杂业务逻辑并实时执行。 这个代码练习假定你对 Java 有一定的了解,当然,如果你之前使用的是其他开发语言,你也应该能够跟随本教程进行学习。 Flink提供了一个准备好的 Flink Maven Archetype 能够快速创建一个包含了必要依赖的 Flink...
53、Flink 的Broadcast State 模式介绍及示例
Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、Flik Table API和SQL基础系列 本部分介绍Flink Table Api和SQL的基本用法,比如Table API和SQL创建库、表用法、查询、窗口函数、catalog等等内容。 4、Flik Table API和SQL提高与应用系列 本部分是table api 和sql的应用部分,和实际的生产应用联系更为密切,以及有一定开发难度的内容。 5、Flink 监控系列 本部分和实际的运维、监控工作相关。 二、Flink 示例专栏 Flink 示例专栏是 Flink 专栏的辅助说明,一般不会介绍知识点的信息,更多的是提供一个一个可以具体使用的示例。本专栏不再分目录,通过链接即可看出介绍的内容。 两专栏的所有文章入口点击:Flink...
Flink---10、处理函数(基本处理函数、按键分区处理函数、窗口处理函数、应用案例TopN、侧输出流)-CSDN博客
星光下的赶路人star的个人主页 我的敌手就是我自己,我要他美好到能使我满意的程度 1、处理函数 之前所介绍的流处理API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都是基于DataStream进行转换的,所以可以统称为DataStream API。 在Flink更底层,我们可以不定义任何具体的算子(比如map,filter,或者window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。 1.1.1 处理函数的功能和使用 我们之前学习的转换算子,一般只是针对某种具体操作来定义的,能够拿到的信息比较有限。如果我们想要访问事件的时间戳,或者当前的水位线信息,都是完全做不到的。跟时间相关的操作,目前我们只会用窗口来处理。而在很多应用需求中,要求我们对时间有更精细的控制,需要能够获取水位线,甚至要“把控时间”、定义什么时候做什么事,这就不是基本的时间窗口能够实现的了。...
大数据-玩转数据-Flink定时器_人猿宇宙的博客-CSDN博客
一、说明 基于处理时间或者事件时间处理过一个元素之后, 注册一个定时器, 然后指定的时间执行.
Apache Flink_浅谈_的博客-CSDN博客
1 Flink的特点 1. 支持Scala和Java API。 2. 支持批流一体。 3. 同时支持高吞吐、低延迟、高性能。 4. 支持事件时间和处理时间语义,基于事件时间语义能够针对无序事件提供精确、一致的结果;基于处理时间语义能够用在具有极低延迟需求中。 5. 支持不同时间语义下的窗口编程。 6. 支持具有Backpressure功能的持续流模型。 7. 提供精确一次(Exactly Once)的状态一致性保障。 8. Flink在JVM内部实现了自己的内存管理。 9. 基于轻量级的分布式快照CheckPoint的容错。 10. 支持SavePoint机制,手工触发,适用于升级。 11. 支持高可用配置(无单点失效),与k8s、Yarn、Apache Mesos紧密集成。 12. 提供常见存储系统的连接器,Kafka、Elasticsearch等。 13. 提供详细、可自由定制的系统及应用指标集合,用于提前定位和响应问题。 14.
Flink总结之一文彻底搞懂处理函数-51CTO.COM
2023-04-12 08:38:44 processElement:编写我们的处理逻辑,每个数据到来都会走这个函数,有三个参数,第一个参数是输入值类型,第二个参数是上下文Context,第三个参数是收集器(输出)。 处理函数是Flink底层的函数,工作中通常用来做一些更复杂的业务处理,这次把Flink的处理函数做一次总结,处理函数分好几种,主要包括基本处理函数,keyed处理函数,window处理函数,通过源码说明和案例代码进行测试。 处理函数就是位于底层API里,熟悉处理函数能够更好的处理Flink流处理。 Flink官方文档:https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/dev/datastream/operators/process_function/ 一、基本处理函数(ProcessFunction) 首先我们看ProcessFunction的源码,ProcessFunction是一个抽象类,继承了AbstractRichFunction类,那么处理函数就拥有了富函数的所有特性。 1.
【Flink】各种窗口的使用(处理时间窗口、事件时间窗口、窗口聚合窗口)_flink窗口_OneTenTwo76的博客-CSDN博客
1 Window (1)Window概述 streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而window是一种切割无限数据为有限块进行处理的手段。 Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。 (2) Window类型 Window可以分成两类: CountWindow:计数窗口,按照指定的数据条数生成一个Window,与时间无关。 TimeWindow:时间窗口,按照时间生成Window。 对于TimeWindow,可以根据窗口实现原理的不同分成三类: 滚动窗口(Tumbling Window):是滑动窗口的特殊形式,是窗口大小和滑动距离相同的滑动窗口。 滑动窗口(Sliding Window):窗口间可以重叠。 会话窗口(Session Window):只有 Flink 支持。 a 滚动窗口(Tumbling Windows) 将数据依据固定的窗口长度对数据进行切片。 特点:时间对齐,窗口长度固定,没有重叠。...
Flink中常用的去重方案_flink利用状态去重_大大大大肉包的博客-CSDN博客
1、状态去重 将数据保存到状态中,进行累计 select window_start, window_end, count(distinct devId) as cnt from table (tumble(table source_table,descriptor(rt),interval '60' minute )) --滚动窗口 group by window_start,window_end; 2、利用HyperLogLog进行去重 select window_start, window_end, hllDistinct(distinct devId) as cnt from table (tumble(table source_table,descriptor(rt),interval '60' minute )) --滚动窗口 group by window_start,window_end; 3、Deduplication方式 当rownum<=1时,flink采用的是Deduplication方式进行去重。该方式有两种去重方案:有保留第一条(Deduplicate...
flink定时器(Timer)_flink 定时器_ambitfly的博客-CSDN博客
flink定时器(Timer) 定时器(Timer)和定时服务(TimerService) 只有在 KeyedStream 中才支持使用 TimerService 设置定时器的 操作。所以一般情况下,我们都是先做了 keyBy 分区之后,再去定义处理操作;代码中更加常见的处理函数是 KeyedProcessFunction,最基本的 ProcessFunction 反而出镜率没那么高。 接下来我们就先从定时服务(TimerService)入手,详细讲解 KeyedProcessFunction 的用法。 KeyedProcessFunction 的一个特色,就是可以灵活地使用定时器。 定时器(timers)是处理函数中进行时间相关操作的主要机制。在.onTimer()方法中可以实 现定时处理的逻辑,而它能触发的前提,就是之前曾经注册过定时器、并且现在已经到了触发 时间。注册定时器的功能,是通过上下文中提供的“定时服务”(TimerService)来实现的。 TimerService 是 Flink 关于时间和定时器的基础服务接口,包含以下六个方法: // 获取当前的处理时间...
Flink处理函数(一)_singleoutputstreamoperator_大数据阿嘉的博客-CSDN博客
目录 之前所介绍的流处理 API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都 是基于 DataStream 进行转换的;所以可以统称为 DataStream API,这也是 Flink 编程的核心。 而我们知道,为了让代码有更强大的表现力和易用性,Flink 本身提供了多层 API,DataStream API 只是中间的一环。 在更底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自 定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。 在处理函数中,我们直面的就是数据流中最基本的元素:数据事件(event)、状态(state) 以及时间(time)。这就相当于对流有了完全的控制权。处理函数比较抽象,没有具体的操作, 所以对于一些常见的简单应用(比如求和、开窗口)会显得有些麻烦;不过正是因为它不限定 具体做什么,所以理论上我们可以做任何事情,实现所有需求。所以可以说,处理函数是我们 进行 Flink...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with OnTimer Context
Contact OnTimer Context, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack