Flink
文章平均质量分 83
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。
电光闪烁
一个大数据开发工程师的学习之路
展开
-
Flink文章汇总
Flink基础知识点博文汇总:Flink(1):Flink概述Flink(2):为什么选择FlinkFlink(3):Flink安装部署之Local本地模式Flink(4):Flink安装部署之Standalone独立集群模式Flink(5):Flink安装部署之Standalone-HA高可用集群模式Flink(6):Flink安装部署之Flink On Yarn模式Flink(7):Flink提交命令之参数总结Flink(8):Flink的API说明和pom文件汇总原创 2022-01-18 22:34:58 · 5048 阅读 · 1 评论 -
Flink(64):Flink中异步匹配维度信息(AsyncJoinDimUtil)工具类
在进行Flink作业的开发中,我们可能需要经常用到维度匹配的功能,即根据传入的数据(比如商品id),然后去维度表中匹配该数据对应的维度信息(比如根据商品id获取商品的颜色、尺码等)。这时如果我们使用Map或者Process算子,在每个并发中获取数据的话,等待数据库的响应时间就比较慢;所以这时候我们需要使用到Flink高级特性AsynIO,但是如果每次都自己写,重复代码就比较多,这时我们可以将其中的通用代码抽取出来,变成工具类,使用模板设计模式的思想,每个不同业务的核心方法不同即可。原创 2023-01-04 17:23:19 · 598 阅读 · 0 评论 -
Flink(63):Flink中通用RedisUtil工具类
在使用SpringBoot后端开发中,我们如果需要对Redis进行增删查改,可以很方便的使用RedisTemplate或者StringRedisTemplate等对象进行操作。但是在大数据中,如果想要对Redis进行操作,就没有那么方便,特别当flink新一代流式计算框架兴起后,没有直接读取和写入Redis的连接源,不管是开始的时候从Redis中获取数据,还是在中间需要读取维度数据,或者最后将数据写入到Redis,都不方便。此时一个较为方便的工具类就能很方便的使用,能达到节省开发时间、减小开发难度等目的。原创 2023-01-03 18:13:02 · 2109 阅读 · 0 评论 -
Flink(62):Flink中通用MySQLUtil工具类
此时一个较为方便的工具类就能很方便的使用,能达到节省开发时间、减小开发难度等目的。upsertByPrimaryKey(String tableName, boolean underScoreToCamel, Object object, String... fields) : 根据主键使用ON DUPLICATE KEY UPDATE语法对对应的表中的数据进行更新,也可以对传入的数据中的字段是否下划线驼峰命名转换,并将传入的字段集合作为update条件(字段集合必须在object中有数据)原创 2022-05-18 20:35:14 · 2793 阅读 · 4 评论 -
Flink(61):Flink中通用KafkaUtil工具类
0. 相关文章链接Flink文章汇总1. 开发目的 在日常的Flink开发中,我们经常要从Kafka中获取数据,或将计算统计后的结果输出到Kafka中,如果我们每次开发程序都去手动的创建 KafkaProducer 或者KafkaConsumer ,这样就会造成开发时间的浪费,并且在代码中也会很冗余。这时,就可以将公用的代码进行抽取,然后将需要变换的配置通过参数进行传入,这样使用时只需要通过调用方法就能获取到对应的生产者对象和消费者对象。2. 环境依赖具体环境依赖跟Fli...原创 2022-05-07 18:26:07 · 1717 阅读 · 1 评论 -
Flink(60):Flink中通用ModelUtil工具类
目录0. 相关文章链接1. 开发目的2. 环境依赖3. 具体代码4. 具体使用0. 相关文章链接Flink文章汇总1. 开发目的在日常的Flink中开发中,基本是在自己电脑的idea工具上进行Flink程序开发,并在本地联通测试环境进行调试(比如测试环境的Kafka等),当在本地调试通过后将代码打包,然后提交到正式环境运行。但在此过程中,因为本地调试和线上运行时使用的配置不同,会造成我们代码上线时需要修改较多配置(比如Checkpoint地址等),并且还不...原创 2022-04-25 18:18:43 · 4290 阅读 · 0 评论 -
Flink(59):Flink之FlinkCDC(下)
目录0. 相关文章链接1. FlinkCDC1.x中存在的痛点2. FlinkCDC2.x的设计目标3. FlinkCDC2.x的设计实现3.1. 整体概览3.2.Chunk切分3.3.Chunk分配3.4.Chunk读取3.5.Chunk汇报3.6.Chunk分配4. FlinkCDC2.x的核心原理分析4.1.Binlog Chunk 中开始读取位置源码4.2.读取低位点到高位点之间的Binlog0. 相关文章链接Flink文章汇...原创 2022-02-04 10:39:49 · 3472 阅读 · 0 评论 -
Flink(58):Flink之FlinkCDC(上)
目录0. 相关文章链接1. CDC简介1.1. 什么是CDC1.2. CDC的种类1.3. Flink-CDC2. 基于DataStream方式的FlinkCDC应用2.1. 导入依赖2.2. 编写代码2.2.1. 主类-从业务库中获取数据并写入到kafka中2.2.2. 自定义反序列化器2.2.3. 各方法参数详解3.FlinkSQL方式的应用0. 相关文章链接Flink文章汇总1. CDC简介1.1. 什么是CDC...原创 2022-02-03 22:41:42 · 6389 阅读 · 1 评论 -
Flink(57):Flink高级特性之FlinkSQL整合Hive
目录0. 相关文章链接1. FlinkSQL整合Hive介绍2. 集成Hive的基本方式2.1. 持久化元数据2.2. 利用 Flink 来读写 Hive 的表3. 准备工作4. SQL CLI5. 代码演示0. 相关文章链接Flink文章汇总1. FlinkSQL整合Hive介绍官网介绍:Apache Flink 1.12 Documentation: Hive知乎案例:Flink集成Hive之快速入门--以Flink1.12为例 - 知乎使用Hiv原创 2022-02-02 11:05:30 · 1418 阅读 · 0 评论 -
Flink(56):Flink高级特性之文件写入(File Sink)
目录0. 相关文章链接1. 文件写入介绍2. 案例演示0. 相关文章链接Flink文章汇总1. 文件写入介绍官网介绍:Apache Flink 1.12 Documentation: File Sink新的 Data Sink API (Beta)之前发布的 Flink 版本中[1],已经支持了 source connector 工作在流批两种模式下,因此在 Flink 1.12 中,社区着重实现了统一的 Data Sink API(FLIP-143)。新的抽象引入.原创 2022-02-02 10:43:13 · 2870 阅读 · 3 评论 -
Flink(55):Flink高级特性之流式文件写入(Streaming File Sink)
目录0. 相关文章链接1. 流式文件写入介绍1.1. 场景描述1.2. Bucket和SubTask、PartFile2. 案例展示2.1. 需求2.2. 开发步骤2.3. 实现代码3. 流式文件写入配置详解3.1. PartFile3.1.1. PartFile生命周期3.1.2. PartFile的生成规则3.1.3. PartFile命名设置3.2. PartFile序列化编码3.2.1. Row Encoding3.2.2.Bulk .原创 2022-02-01 23:23:44 · 3410 阅读 · 0 评论 -
Flink(54):Flink高级特性之异步IO(Async I/O)
目录0. 相关文章链接1. 异步IO概述1.1. 异步IO操作的需求1.2. 使用Aysnc I/O的前提条件1.3. Async I/O API2. 案例展示2.1. 需求2.2. 数据准备2.3. 代码演示一(读取MySQL数据)2.4. 代码演示二(读取Redis数据)3. 原理深入3.1. AsyncDataStream3.2. 消息的顺序性3.2.1. 有序3.2.2. ProcessingTime 无序3.2.3. EventTim原创 2022-01-31 17:57:05 · 2373 阅读 · 0 评论 -
Flink(53):Flink高级特性之端到端精确一次消费(End-to-End Exactly-Once)
目录0. 相关文章链接1. 流处理的数据处理语议1.1.At-most-once-最多一次 1.2. At-least-once-至少一次1.3. Exactly-once-精确一次1.4. End-to-End Exactly-Once-端到端的精确一次1.5. 精确一次&有效一次1.6.流计算系统如何支持一致性语义2. End-to-End Exactly-Once的实现2.1. Source2.2. Transformation2.2.1....原创 2022-01-30 23:31:38 · 4511 阅读 · 0 评论 -
Flink(52):Flink高级特性之双流Join
目录0. 相关文章链接1. 双流Join介绍2. Window Join2.1.Tumbling Window Join2.2.Sliding Window Join2.3.Session Window Join3.Interval Join4. 案例一5. 案例二0. 相关文章链接Flink文章汇总1. 双流Join介绍介绍文章网址:Apache Flink 1.12 Documentation: Joining面试实时开发必问——Fli...原创 2022-01-29 13:31:07 · 845 阅读 · 0 评论 -
Flink(51):Flink高级特性之广播状态(BroadcastState)
目录0. 相关文章链接1. BroadcastState介绍2. 需求-实现配置动态更新3. 编码步骤4. 代码实现0. 相关文章链接Flink文章汇总1. BroadcastState介绍在开发过程中,如果遇到需要下发/广播配置、规则等低吞吐事件流到下游所有 task 时,就可以使用 Broadcast State。Broadcast State 是 Flink 1.5 引入的新特性。下游的 task 接收这些配置、规则并保存为 Br...原创 2022-01-29 12:47:03 · 6567 阅读 · 3 评论 -
Flink(50):Flink之综合练习(二)
目录0. 相关文章链接1. 需求2. 数据3. 编程步骤4. 代码实现5. 效果展示0. 相关文章链接Flink文章汇总1. 需求在电商领域会有这么一个场景,如果用户买了商品,在订单完成之后,一定时间之内没有做出评价,系统自动给与五星好评,我们今天主要使用Flink的定时器来简单实现这一功能。2. 数据自定义source模拟生成一些订单数据,在这里,我们生了一个最简单的二元组Tuple3,包含用户id,订单id和订单完成时间三个字...原创 2022-01-24 01:12:43 · 819 阅读 · 0 评论 -
Flink(49):Flink之综合练习(一)
目录0. 相关文章链接1. 需求2. 数据3. 编程步骤4. 代码实现5. 展示效果0. 相关文章链接Flink文章汇总1. 需求在大数据的实时处理中,实时的大屏展示已经成了一个很重要的展示项,比如最有名的双十一大屏实时销售总价展示。除了这个,还有一些其他场景的应用,比如我们在我们的后台系统实时的展示我们网站当前的pv、uv等等,其实做法都是类似的。需求描述:模拟双十一实时大屏统计1.实时计算出当天零点截止到当前时间的销售总额2.计算...原创 2022-01-24 01:06:55 · 1076 阅读 · 1 评论 -
Flink(48):Flink之TableAPI和FlinkSQL中的常用算子
目录0. 相关文章链接1. select算子2. where算子3. distinct算子4. group by算子5. union算子 和 union all算子6. join算子7.group window算子7.1. tumble window算子7.2. hop window算子7.3. session window算子0. 相关文章链接Flink文章汇总1. select算子SELECT 用于从 DataSet/DataStream .原创 2022-01-22 01:11:54 · 1291 阅读 · 0 评论 -
Flink(47):Flink之TableAPI和FlinkSQL的案例四
目录0. 相关文章链接1. 需求2. 代码实现0. 相关文章链接Flink文章汇总1. 需求从Kafka中消费数据并过滤出状态为success的数据再写入到Kafka数据:{"user_id": "1", "page_id":"1", "status": "success"}{"user_id": "1", "page_id":"1", "status": "success"}{"user_id": "1", "page_id":"1", "status": "s原创 2022-01-19 00:22:17 · 816 阅读 · 0 评论 -
Flink(46):Flink之TableAPI和FlinkSQL的案例三
目录0. 相关文章链接1. 需求2. 方式一3. 方式二0. 相关文章链接Flink文章汇总1. 需求使用Flink SQL来统计5秒内 每个用户的 订单总数、订单的最大金额、订单的最小金额也就是每隔5秒统计最近5秒的每个用户的订单总数、订单的最大金额、订单的最小金额。编码步骤:1.创建环境2.使用自定义函数模拟实时流数据3.设置事件时间和Watermaker4.注册表5.执行sql-可以使用sql风格或table风格(了解)...原创 2022-01-19 00:17:35 · 510 阅读 · 0 评论 -
Flink(45):Flink之TableAPI和FlinkSQL的案例二
目录0. 相关文章链接1. 需求2. SQL实现3. TableAPI实现0. 相关文章链接Flink文章汇总1. 需求使用SQL和Table两种方式对DataStream中的单词进行统计2. SQL实现package cn.itcast.sql;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.apache.flin原创 2022-01-19 00:13:54 · 513 阅读 · 0 评论 -
Flink(44):Flink之TableAPI和FlinkSQL的案例一
目录0. 相关文章链接1. 需求2. 代码0. 相关文章链接Flink文章汇总1. 需求将DataStream注册为Table和View并进行SQL统计2. 代码package cn.itcast.sql;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.apache.flink.streaming.api.datastr原创 2022-01-19 00:11:06 · 1298 阅读 · 0 评论 -
Flink(43):Flink之TableAPI和FlinkSQL中的案例准备
目录0. 相关文章链接1. 依赖介绍2. 程序结果3. API3.1. 获取环境3.2. 创建表3.3. 查询表3.4. 写出表3.5. 与DataSet/DataStream集成3.6. TableAPI & SQL4. 相关概念4.1. 动态表和连续查询4.2. 表到流的转换4.2.1. 表中的Update和Delete4.2.2. 对表的编码操作4.2.3.将表转换为三种不同编码方式的流0. 相关文章链接Flink文章汇.原创 2022-01-19 00:05:22 · 1206 阅读 · 0 评论 -
Flink(42):Flink之TableAPI和FlinkSQL中的函数(Functions)
目录0. 相关文章链接1. 系统内置函数1.1. 比较函数1.2. 逻辑函数1.3. 算术函数1.4. 字符串函数1.5. 时间函数1.6. 聚合函数2. UDF2.1.注册用户自定义函数UDF2.2.标量函数(Scalar Functions)2.3.表函数(Table Functions)2.4.聚合函数(Aggregate Functions)2.5.表聚合函数(Table Aggregate Functions)0. 相关文章链接...原创 2021-10-24 11:39:02 · 919 阅读 · 1 评论 -
Flink(41):Flink之TableAPI和FlinkSQL的窗口(Windows)
目录0. 相关文章链接1. 窗口的概述2.分组窗口(Group Windows)2.1.滚动窗口2.2. 滑动窗口2.3. 会话窗口3.Over Windows3.1. 无界的over window3.2. 有界的over window4.SQL中窗口的定义4.1.Group Windows4.2.Over Windows5. 代码练习(以分组滚动窗口为例)0. 相关文章链接1. 窗口的概述时间语义,要配合窗口操...原创 2021-08-29 22:07:54 · 1381 阅读 · 0 评论 -
Flink(40):Flink之TableAPI和FlinkSQL的流处理中的特殊概念
目录0. 相关文章链接1.流处理和关系代数(表,及SQL)的区别2. 动态表(Dynamic Tables)3.流式持续查询的过程3.1. 概述3.2.将流转换成表(Table)3.3.持续查询(Continuous Query)4.将动态表转换成流4.1.仅追加(Append-only)流4.2.撤回(Retract)流4.3.Upsert(更新插入)流0. 相关文章链接1.流处理和关系代数(表,及SQL)的区别Ta...原创 2021-08-29 11:15:40 · 1031 阅读 · 0 评论 -
Flink(39):Flink之TableAPI和FlinkSQL的API调用(下)
目录0. 相关文章链接1. 输出表数据到文件2. 输出表数据到Kafka3. 输出表数据到Elasticsearch4. 输出表数据到MySQL5. 输出表数据到各种更新模式5.1.追加模式(Append Mode)5.2.撤回模式(Retract Mode)5.3.Upsert(更新插入)模式6. 将表转换成DataStream7. Query的解释和执行0. 相关文章链接1. 输出表数据到文件// 注册输出表tableEnv .conn...原创 2021-08-29 11:05:37 · 817 阅读 · 0 评论 -
Flink(38):Flink之TableAPI和FlinkSQL的API调用(中)
目录0. 相关文章链接1. 表的查询1.1. Table API 的调用1.2. SQL 查询2. 将DataStream转换成表2.1. 代码表达2.2.数据类型与 Table schema的对应3. 将DataSet转换成表4.创建临时视图(Temporary View)0. 相关文章链接1. 表的查询利用外部系统的连接器connector,我们可以读写数据,并在环境的Catalog中注册表。接下来就可以对表做查询转换了。...原创 2021-08-29 10:45:35 · 1020 阅读 · 0 评论 -
Flink(37):Flink之TableAPI和FlinkSQL的API调用(上)
目录0. 相关文章链接1. 依赖说明2. 程序结构3. 创建表环境4.在Catalog中注册表4.1.表(Table)的概念4.2.连接到文件系统(Csv格式)4.3.连接到Kafka0. 相关文章链接1. 依赖说明官网地址:https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/<dependency> <groupId>org.a...原创 2021-08-29 10:19:59 · 1193 阅读 · 0 评论 -
Flink(36):Flink之TableAPI和FlinkSQL的整体介绍
目录0. 相关文章链接1.什么是 Table API 和 Flink SQL2. 为什么需要Table API & SQL3. Table API 和 Flink SQL的特点4. Table API &Flink SQL发展历程4.1. 架构升级4.2. 查询处理器的选择4.3.Blink planner和Flink Planner具体区别5. API稳定性6. 性能对比0. 相关文章链接1.什么是 Table API 和 Fli...原创 2021-08-29 10:00:16 · 1606 阅读 · 0 评论 -
Flink(35):Flink之并行度详解
目录0. 相关文章链接1. 并行度概述2. 算子级别(Operator Level)并行度3.Env级别(Execution Environment Level)并行度4.客户端级别(Client Level)并行度5.系统默认级别(System Level)并行度6. 示例说明7. 注意0. 相关文章链接1. 并行度概述一个Flink程序由多个Operator组成(source、transformation和 sink)。...原创 2021-08-28 21:10:40 · 8322 阅读 · 0 评论 -
Flink(34):Flink之Savepoint
目录0. 相关文章链接1. Savepoint介绍2. Savepoint VS Checkpoint3. Savepoint实例演示0. 相关文章链接1. Savepoint介绍Savepoint:保存点,类似于以前玩游戏的时候,遇到难关了/遇到boss了,赶紧手动存个档,然后接着玩,如果失败了,赶紧从上次的存档中恢复,然后接着玩在实际开发中,可能会遇到这样的情况:如要对集群进行停机维护/扩容等操作,那么这时候需要执行一次Savepoint...原创 2021-08-28 21:01:06 · 1613 阅读 · 0 评论 -
Flink(33):Flink之状态恢复和重启策略
目录0. 相关文章链接1.重启策略配置方式2. 重启策略分类2.1. 默认重启策略2.2. 无重启策略2.3.固定延迟重启策略2.4.失败率重启策略3. 代码演示4. 手动重启并恢复0. 相关文章链接1.重启策略配置方式① 配置文件中在flink-conf.yml中可以进行配置,示例如下:restart-strategy: fixed-delayrestart-strategy.fixed-delay.attempts: 3restart-...原创 2021-08-28 20:50:26 · 3735 阅读 · 0 评论 -
Flink(32):Flink之Checkpoint
目录0. 相关文章链接1. State Vs Checkpoint2. Checkpoint执行流程2.1. 简单流程2.2. 复杂流程3. State状态后端/State存储介质3.1.MemStateBackend3.2. FsStateBackend3.3. RocksDBStateBackend4. Checkpoint配置方式4.1. 全局配置4.2. 在代码中配置5. 代码演示0. 相关文章链接1. State Vs Checkpoi.原创 2021-08-28 00:00:12 · 2371 阅读 · 0 评论 -
Flink(31):Flink中的状态管理(下)
目录0. 相关文章链接1. 托管状态和原始状态2. 键控状态和算子状态2.1. 键控状态2.2. 算子状态3. 存储State的数据结构/API介绍4. 键控状态代码示例5. 算子状态0. 相关文章链接1. 托管状态和原始状态从Flink是否接管角度:可以分为:ManagedState(托管状态) 和 RawState(原始状态)两者的区别如下:从状态管理方式的方式来说,Managed State 由 Flink Runtime 管理,自动存储,..原创 2021-08-26 23:45:15 · 801 阅读 · 0 评论 -
Flink(30):Flink中的状态管理(上)
0. 相关文章链接1.Flink中的有状态计算注意:Flink中已经对需要进行有状态计算的API,做了封装,底层已经维护好了状态!例如,之前下面代码,直接使用即可,不需要像SparkStreaming那样还得自己updateStateByKey也就是说我们今天学习的State只需要掌握原理,实际开发中一般都是使用Flink底层维护好的状态或第三方维护好的状态(如Flink整合Kafka的offset维护底层就是使用的State,但是人家已经写好了的)package cn.it.原创 2021-08-26 23:31:31 · 500 阅读 · 0 评论 -
Flink(29):Flink中对迟到数据的处理(Allowed Lateness 和 SideOutput)
目录0. 相关文章链接1. 需求描述2. API说明3. 代码演示0. 相关文章链接1. 需求描述有订单数据,格式为: (订单ID,用户ID,时间戳/事件时间,订单金额)要求每隔5s,计算5秒内,每个用户的订单总金额并添加Watermaker来解决一定程度上的数据延迟和数据乱序问题。并使用OutputTag+allowedLateness解决数据丢失问题2. API说明3. 代码演示import lombok.AllArgsConstructor;..原创 2021-07-13 00:28:29 · 1626 阅读 · 7 评论 -
Flink(28):Flink之Watermark案例演示
目录0. 相关文章链接1. 需求描述2. API说明3. Java代码实现一(开发中使用)4. Java代码实现二(验证版-了解)5. Scala代码实现0. 相关文章链接1. 需求描述有订单数据,格式为: (订单ID,用户ID,时间戳/事件时间,订单金额)要求每隔5s,计算5秒内,每个用户的订单总金额并添加Watermaker来解决一定程度上的数据延迟和数据乱序问题。2. API说明注意:一般我们都是直接使用Flink提供好的BoundedOutOf.原创 2021-07-13 00:23:59 · 1184 阅读 · 3 评论 -
Flink(27):Flink中的Watermark
目录0. 相关文章链接1. 什么是Watermark2. 如何计算Watermark3. Watermark有什么用4. Watermark是如何触发窗口计算的5. 图解Watermark0. 相关文章链接1. 什么是WatermarkWatermaker就是给数据再额外的加的一个时间列,也就是Watermaker是个时间戳!2. 如何计算Watermark定义: Watermaker = 数据的事件时间 - 最大允许的延迟时间或乱序时间注意:后面原创 2021-07-13 00:18:31 · 706 阅读 · 2 评论 -
Flink(26):Flink中的时间语议
目录0. 相关文章链接1. Flink中时间语议概述2. EventTime的引入3. EventTime的重要性3.1. 示例一3.2. 示例二3.3. 示例三3.4. 示例四4. Flink中时间语议总结0. 相关文章链接1. Flink中时间语议概述在Flink的流式处理中,会涉及到时间的不同概念,如下图所示:Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink通.原创 2021-07-13 00:11:40 · 584 阅读 · 9 评论