
flink
文章平均质量分 90
力不竭!!!战不止!!!
You just run, OK?
展开
-
大数据flink框架入门分享(起源与发展、实时与离线计算、场景、处理流程、相关概念、特性普及、入门Demo)
起源于一个叫作 Stratosphere 的项目,它是由 3 所地处柏林的大学和欧洲其他一些大学在 2010~2014 年共同进行的研究项目,由柏林理工大学的教授沃克尔·马尔科(Volker Markl)领衔开发。2014 年 4 月,Stratosphere 的代码被复制并捐赠给了 Apache 软件基金会, 就是在此基础上被重新设计出来的。 在德语中,一词表示“快速、灵巧”。项目的 logo 是一只彩色的松鼠,当然了,这不仅是因为 Apache 大数据项目对动物原创 2023-03-06 10:48:43 · 2879 阅读 · 52 评论 -
为什么说新一代流处理器Flink是第三代流处理器(论点:发展历史、区别、适用场景)
Flink 被认为是第三代流处理器,这是因为 Flink 在设计时参考了前两代流处理器的经验教训并引入了一些新的技术和思想,从而使得 Flink 具有更高的性能和更广泛的应用场景。下面我带大家了解一下流处理器从第一代到第三代的发展历史。对于有状态的流处理,当数据越来越多时,我们必须用分布式的集群架构来获取更大的吞吐量。但是分布式架构会带来另一个问题:怎样保证数据处理的顺序是正确的呢?带着疑问往下看。原创 2023-03-02 17:49:30 · 3710 阅读 · 78 评论 -
Flink多流转换(Flink Stream Unoin、Flink Stream Connect、Flink Stream Window Join)
unionconnect、 和join是可用于组合多个流的不同操作。union:该union操作用于将多个流合并为一个流。它只是将一个流的元素附加到另一个流。输入流中的元素不会以任何方式组合或修改。union当您有多个具有相同类型元素的流并且您希望将它们作为一个流一起处理时,这很有用。connect: 该connect操作用于组合两个流并使用自定义允许您定义如何根据类型处理来自两个输入流的元素。connect当您希望根据元素的类型对来自不同输入流的元素执行不同的操作时,该操作很有用。原创 2023-01-11 18:35:37 · 788 阅读 · 20 评论 -
Flink应用简单案例-统计TopN
🍊诉求:网站中一个非常经典的例子,就是实时统计一段时间内的热门 url。例如,需要统计最近10 秒钟内最热门的两个 url 链接,并且每 5 秒钟更新一次。我们知道,这可以用一个滑动窗口来实现,而“热门度”一般可以直接用访问量来表示。于是就需要开滑动窗口收集 url 的访问数据,按照不同的 url 进行统计,而后汇总排序并最终输出前两名。这其实就是著名的“Top N”问题。🍊很显然,简单的增量聚合可以得到 url 链接的访问量,但是后续的排序输出 Top N 就很难实现了。原创 2023-01-06 19:43:37 · 534 阅读 · 1 评论 -
Flink处理函数(ProcessFunction、KeyedProcessFunction、ProcessWindowFunction、 ProcessAllWindowFunction)
DataStream API,这也是 Flink 编程的核心。而我们知道,为了让代码有更强大的表现力和易用性,Flink 本身提供了多层 API,DataStream API 只是中间的一环,如下图所示: 在更底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。在处理函数中,我们原创 2023-01-06 15:07:21 · 2044 阅读 · 0 评论 -
Flink数据流类型之间的转换(WindowedStream、DataStream、KeyedStream、AllWindowStream之间的转换)
🍊WindowedStream是一种特殊的流,其中数据已按时间或数据元素的键进行分组,并且每个分组的数据都在窗口中按时间划分。这意味着,如果你有一个WindowedStream,你可以对每个窗口执行转换,例如聚合或统计。🍊KeyedStream是一种特殊的DataStream,其中数据已按照一个键(通常是一个数值或字符串)进行分组。🍊DataStream是Flink中最基本的流类型,表示一个无界的、有序的数据流。它可以是任何类型的数据,例如数值、字符串或复杂的对象。原创 2023-01-05 19:54:42 · 1722 阅读 · 0 评论 -
Flink对迟到数据的处理
🍊水位线WaterMarker:Flink 使用水位线来跟踪流中的时间进度。水位线是由源发出的周期性时间戳,用于确定一条数据的延迟时间。您可以根据水位线指定数据的最大延迟。例如,您可以指定延迟超过 10 个水位线的数据应该被删除。🍊窗口延迟数据:Flink 允许为预计在窗口内无序到达的数据指定最大延迟(延迟)。allowedLateness可以在定义窗口时使用参数设置此最大延迟。任何在最大延迟时间之后到达的数据都将被丢弃。🍊侧输入流:Flink 还允许您使用侧输入来处理延迟数据。原创 2023-01-04 14:15:22 · 1773 阅读 · 0 评论 -
Flink窗口的生命周期
之后的方法调用就完全一样了。此外,在这两者之间,还可以基于 WindowedStream 调用.trigger()自定义触发器、调用.evictor()定义移除器、调用.allowedLateness()指定允许延迟时间、调用.sideOutputLateData()将迟到数据写入侧输出流,这些都是可选的 API,一般不需要实现。当我们设置了允许延迟,那么如果水位线超过了窗口结束时间、但还没有到达设定的最大延迟时间,这期间内到达的迟到数据也会触发窗口计算。窗口有自己的生命周期,即从窗口的开始到窗口的结束。原创 2023-01-03 15:56:19 · 788 阅读 · 1 评论 -
一文初识大数据Flink框架
🍊Apache Flink是一个开源的分布式流处理框架,用于处理流数据和批量数据。它可以在一个单独的机器或一个集群上运行,并具有高效的数据处理能力,特别是对于大规模数据集。Apache Flink 是一个流行的开源平台,用于分布式流和批处理数据。它经常与其他大数据处理框架(如 Apache Spark 和 Apache Beam)进行比较。🍊Flink提供了一个灵活的编程模型,可以轻松地执行数据流分析,包括数据流聚合,数据流连接,流式转换和多种数据流操作。原创 2022-12-19 18:53:25 · 1008 阅读 · 1 评论 -
Flink窗口api、Flink窗口分配器(Flink Window Api、Flink Window Assigners)
所以在1.12 版本之后,这种方式已经被弃用了,标准的声明方式就是直接调用.window(),在里面传入对应时间语义下的窗口分配器。这里.of()方法需要传入一个 Time 类型的参数 size,表示滚动窗口的大小,我们这里创建了一个长度为 5 秒的滚动窗口。这里.of()方法需要传入两个 Time 类型的参数:size 和 slide,前者表示滑动窗口的大小,后者表示滑动窗口的滑动步长。我们定义了一个长度为 10 的滚动计数窗口,当窗口中元素数量达到 10 的时候,就会触发计算执行并关闭窗口。原创 2022-12-14 21:06:11 · 576 阅读 · 0 评论 -
Flink窗口(Flink Window)
上一篇讲到Flink 中事件时间和水位线的概念,那它们有什么具体应用呢?当然是做基于时间的处理计算了。其中最常见的场景,就是窗口聚合计算。之前我们已经了解了 Flink 中基本的聚合操作。在流处理中,我们往往需要面对的是连续不断、无休无止的无界流,不可能等到所有所有数据都到齐了才开始处理。所以聚合计算其实只能针对当前已有的数据——之后再有数据到来,就需要继续叠加、再次输出结果。这样似乎很“实时”,但现实中大量数据一般会同时到来,需要并行处理,这样频繁地更新结果就会给系统带来很大负担了。原创 2022-12-09 21:10:34 · 969 阅读 · 1 评论 -
一文理解Flink 水位线(Flink Watermark)
在说水位线之前,我们先了解一下相关的知识,如flink的时间语义中的处理时间、事件时间 对于一台机器而言,“时间”自然就是指系统时间。但我们知道,Flink 是一个分布式处理系统。分布式架构最大的特点,就是节点彼此独立、互不影响,这带来了更高的吞吐量和容错性;但有利必有弊,最大的问题也来源于此。 在分布式系统中,节点“各自为政”,是没有统一时钟的,数据和控制信息都通过网络进行传输。比如现在有一个任务是窗口聚合,我们希望将每个小时的数据收集起来进行统计处理。而对于并行的窗口子任务,它原创 2022-12-06 22:13:01 · 666 阅读 · 0 评论 -
flink测试redis sink报错
具体报错根据报错定位到一个错误栈:Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect应该是redis连接不上,缺人配置没有问题之后检查逐步排查其他问题(host、password、port、timeout等)1、先检查了redis状态redis正常状态且能正常使用2、检查防火墙是否关闭或者是否放行redis端口(原创 2022-11-23 21:28:55 · 1846 阅读 · 1 评论 -
Flink常用Sink(elasticsearch(es)Sink、RedisSink、KafkaSink、MysqlSink、FileSink)
将数据输出到kafka中,先启动kafka consumer,再运行程序。当程序运行结束之后可以看到mysql的events表里面多了数据。因为上述source是一个无界流,所以数据一直会变化。将数据输出到elasticsearch中。将数据输出到文件中(可以输出分区文件)运行结束后会多出来一些文件。自己先准备一下相关环境。将数据输出到Redis。将数据输出到mysql。原创 2022-11-26 09:25:34 · 1018 阅读 · 0 评论