![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Flink学习之路
文章平均质量分 88
Hello Guava
坚持写一些JAVA、大数据相关的博文,有助于自己工作、学习、成长!
展开
-
Flink进阶(五):天维度的统计中涉及的自定义触发器
前言:一看时间,都快1年不写flink的谢列文章了,今天写一个很实用的一个场景内容,也是我们生产中的用法。就是按天维度的统计,要求3s统计一次结果。首先这个需求,我的想法是:开一个24H的窗口,然后自定义触发器,3s触发一次窗口计算,然后把计算结果sink到redis中去。话不多说,直接上代码。基本代码这里为了方便直接用socket去模拟数据源,数据格式大概是:sensor_1,1547718228000,38.1有个实体类:@Data@NoArgsConstructor@AllArgsCon原创 2021-03-16 11:36:02 · 726 阅读 · 0 评论 -
Flink进阶(五):Flink中的反压问题
有段时间没写flink系列文章了,今天写一写Flink中的反压问题。何为反压?在短时间内的负载高峰导致系统接收的数据远大于它能处理数据的速率,如果反压问题不能解决,就会导致系统资源耗尽甚至系统崩溃。那么Flink自身是有反压机制的,它能够自己检测到哪些Operator被阻塞了,然后自适应地降低源头或上游数据的发送速率,从而维持整个系统的稳定。1.5之前Flink的反压机制将反压机制之前,先...原创 2020-04-24 22:03:47 · 2489 阅读 · 0 评论 -
Flink进阶(四):Flink中的Exactly Once
Flink内部Exactly Once通过checkpoint和状态来保证checkpoint流程:Flink在数据流中加入了一个叫barrier的东西(中文名栅栏),barrier在SourceTask处生成,一致到SinkTask,期间所有的Task只要碰到barrier就会触发自身进行快照。barrier的作用就是为了把数据区分开,barrier之前的数据是本次checkpoint之前...原创 2020-04-05 21:40:06 · 759 阅读 · 0 评论 -
Flink进阶(三):双流connect的用法
业务需求:根据id将两个流中的数据匹配在一起组合成新的流数据,默认两个流的最大延迟时间为60s超过60s还未匹配成功,意味着当前只有一个流来临,则任务流信息异常,需要将数据侧流输出思路:先将两个流keyBy(),再connect,然后调用CoProcessFunction函数,在里面处理流1和流2,再设置一个60s的定时器,如果60s内另一个流没来,则把达到的流侧输出直接上代码:// 流1...原创 2020-04-05 21:30:43 · 7277 阅读 · 8 评论 -
Flink进阶(二):使用 ParameterTool 读取配置
在Flink中会有很多配置,比如像算子的并行度配置、Kafka 数据源的配置(broker 地址、topic 名、group.id)、Checkpoint 是否开启、状态后端存储路径、数据库地址、用户名和密码等。这些配置肯定不能写死在代码中,需要在配在配置文件中。先指定环境可以先配置一个application.properties,里面配置哪个环境,比如ykc.profile=dev#yk...原创 2020-04-05 21:20:46 · 5716 阅读 · 4 评论 -
Flink进阶(一):Side Output 分流的使用
工作场景中会经常遇到对一个流按照不同维度做拆分,那么该如何做拆分呢?使用 Filter 分流filter算子分流,略…Split + Select 分流先在 split 算子里面定义 OutputSelector 的匿名内部构造类,然后重写 select 方法,根据数据的类型将不同的数据放到不同的 tag 里面,这样返回后的数据格式是 SplitStream,然后要使用这些数据的时候,可以...原创 2020-04-05 20:48:31 · 1125 阅读 · 0 评论 -
Flink基础(十二):Parallelism 和 Slot 详解
Parallelismparallelism 是并行的意思,在 Flink 里面代表每个算子的并行度,适当的提高并行度可以大大提高 Job 的执行效率,比如你的 Job 消费 Kafka 数据过慢,适当调大可能就消费正常了。parallelism的设置有三个地方:flink-conf.yaml 配置文件中parallelism.default: 1代码中设置全局的并行度 env...原创 2020-04-05 19:55:01 · 3185 阅读 · 0 评论 -
Flink基础(十一):Flink整合kafka的读写
文章将讲解一下用的最多的 Connector —— Kafka,带大家利用 Kafka Connector 读取 Kafka 数据,做一些计算操作后然后又通过 Kafka Connector 写入到 kafka 消息队列去。环境准备此处略过,准备kafka环境添加依赖,暂时用的是kafka0.10版本<dependency> <groupId>org.apa...原创 2020-04-02 22:53:31 · 1545 阅读 · 0 评论 -
Flink基础(十):Flink常用的Source和Sink
通过前面我们可以知道 Flink Job 的大致结构就是 Source ——> Transformation ——> Sink那么这个 Source 是什么意思呢?Data Source 介绍Data Source 是什么呢?就字面意思其实就可以知道:数据来源。Flink 中你可以使用 StreamExecutionEnvironment.addSource(sourceFun...原创 2020-04-02 22:29:10 · 4491 阅读 · 1 评论 -
Flink基础(九):Checkpoint的说明和用法
Checkpoint 在 Flink 中是一个非常重要的 Feature,Checkpoint 使 Flink 的状态具有良好的容错性,通过 Checkpoint 机制,Flink 可以对作业的状态和计算位置进行恢复。Checkpoint 介绍及使用Flink 的 Checkpoint 有以下先决条件:需要具有持久性且支持重放一定时间范围内数据的数据源。例如:Kafka、RabbitMQ ...原创 2020-04-02 22:13:50 · 5883 阅读 · 0 评论 -
Flink基础(八):流作业中的广播变量和BroadcastState
Broadcast State支持将某一个流的数据广播到下游所有的 Task 中,数据都会存储在下游 Task 内存中,接收到广播的数据流后就可以在操作中利用这些数据,一般我们会将一些规则数据进行这样广播下去,然后其他的 Task 也都能根据这些规则数据做配置,更常见的就是规则动态的更新,然后下游还能够动态的感知。Broadcast state 的特点是:使用 Map 类型的数据结构仅适...原创 2020-03-15 21:52:30 · 3114 阅读 · 4 评论 -
Flink基础(七):状态的使用
Flink官网说,Flink是数据流上的有状态计算。那么问题来了,何为状态?比如Word Count 程序来说,需要不断的对word进行计数,来一个计数一次,那么这个计数的值(count)我们就需要一直在处理过程中存着,那么,这个count就是一个状态。即在数据处理过程中过程中存储数据。总结下来说,当任务运行过程中突然挂了,如果是批任务可以重新跑一遍;但如果是流任务,是不是需要知道数据消费到...原创 2020-03-15 21:16:12 · 1243 阅读 · 0 评论 -
Flink基础(六):常用算子详解
本文将给大家介绍的就是 Flink 中的批和流程序常用的算子DataStream Operator我们先来看看流程序中常用的算子。MapMap 算子的输入流是 DataStream,经过 Map 算子后返回的数据格式是 SingleOutputStreamOperator 类型,获取一个元素并生成一个元素,举个例子:SingleOutputStreamOperator<Employ...原创 2020-03-15 17:45:18 · 3052 阅读 · 0 评论 -
Flink基础(五):WaterMark详解
一、WaterMark机制引入的背景前面提到了Time的概念,如果我们使用Processing Time,那么在 Flink 消费数据的时候,它完全不需要关心的数据本身的时间,意思也就是说不需要关心数据到底是延迟数据还是乱序数据。因为 Processing Time 只是代表数据在 Flink 被处理时的时间,这个时间是顺序的。但是如果你使用的是 Event Time 的话,那么你就不得不面临...原创 2020-03-15 17:05:42 · 3342 阅读 · 0 评论 -
Flink基础(四):Windows详解
什么是 Window?下面我们结合一个现实的例子来说明。就拿交通传感器的示例:统计经过某红绿灯的汽车数量之和?假设在一个红绿灯处,我们每隔 15 秒统计一次通过此红绿灯的汽车数量,如下图:可以把汽车的经过看成一个流,无穷的流,不断有汽车经过此红绿灯,因此无法统计总共的汽车数量。但是,我们可以换一种思路,每隔 15 秒,我们都将与上一次的结果进行 sum 操作(滑动聚合),如下:这个结...原创 2020-03-15 15:57:56 · 482 阅读 · 0 评论 -
Flink基础(三):Time详解
flink系列文章中,flink版本是1.9.0Flink中的时间Flink 在流应用程序中支持不同的 Time 概念,就比如有 Processing Time、Event Time 和 Ingestion Time。下面我们一起来看看这三个 Time。Processing TimeProcessing Time 是指事件被处理时机器的系统时间。如果我们 Flink Job 设置的时...原创 2020-03-15 15:38:54 · 503 阅读 · 0 评论 -
Flink基础(二):WordCount入门
flink系列文章中,flink版本是1.9.0环境准备linux上安装:你可以通过该地址 https://flink.apache.org/downloads.html 下载到最新版本的 Flink。安装好之后进去bin目录下运行 ./start-cluster.sh 如果提示你运行成功,则可以打开UI界面进去看下,访问地址 http://192.168.10.45:8081/ID...原创 2020-03-15 15:18:18 · 388 阅读 · 0 评论 -
Flink基础(一):什么是Flink
什么是flink引用官网的一句话:数据流上的有状态计算。优势Flink 提供了 State、Checkpoint、Time、Window 等,它们为 Flink 提供了容错性、实效性等优势。部署方式Local:直接在 IDE 中运行 Flink Job 时则会在本地启动一个 mini Flink 集群。Standalone:在 Flink 目录下执行 bin/start-cluster...原创 2020-03-15 14:45:26 · 500 阅读 · 0 评论