Flink问题总结
目录
1、Flink 的四大特征(基石)
2、Flink 中都有哪些 Source,哪些 Sink,哪些算子(方法)
3、什么是侧道输出流,有什么用途
4、Flink 中两个流如何合并为一个流
5、Flink 中两个流如何 join
6、Flink 中都有哪些 window,什么是滑动,滚动窗口
7、flink 中都有哪些时间语义,对于 event_time 中数据迟到的处理(数据乱序)
8、flink 中的状态指的是什么?有哪些状态,用过哪些状态
Keyed State (键控状态)
9、flink 中 checkpoint 是什么,如何设置。
10、flink 中的重启策略 (流式计算中的重启策略)
11、什么是维表 join,如何实现,在哪使用过维表 join
1、 预加载维表
2、 热存储维表
12、flinksql 如何读取 kafka 或者 mysql 的数据。
1、Flink 的四大特征(基石)
Checkpoint:基于Chandy-Lamport算法,实现了分布式一致性快照,提供了一致性的语义。
State:状态,可以理解为历史计算结果。分为有状态计算和无状态计算。
Time:实现了Watermark机制,乱序数据处理,迟到数据容忍。
Window:开箱即用的滚动,滑动,会话窗口,以及灵活的自定义窗口。其实窗口本身就是状态,他不是立即出结果,而是将数据都保存起来,达到触发条件才计算。
2、Flink 中都有哪些 Source,哪些 Sink,哪些算子(方法)
Source:
一.预定义Source基于本地集合的source(Collection-based-source)
基于文件的source(File-based-source)
基于网络套接字(socketTextStream)
具体:
在flink最常见的创建DataStream方式有四种:
l 使用env.fromElements(),这种方式也支持Tuple,自定义对象等复合形式。
注意:类型要一致,不一致可以用Object接收,但是使用会报错,比如:env.fromElements("haha", 1);
源码注释中有写:
l 使用env.fromCollection(),这种方式支持多种Collection的具体类型,如List,Set,Queue
l 使用env.generateSequence()方法创建基于Sequence的DataStream --已经废弃了
l 使用env.fromSequence()方法创建基于开始和结束的DataStream
一般用于学习测试时编造数据时使用
1.env.fromElements(可变参数);
2.env.fromColletion(各种集合);
3.env.fromSequence(开始,结束);
******************************************************************************************************
二.自定义Source
SourceFunction:非并行数据源(并行度只能=1) --接口
RichSourceFunction:多功能非并行数据源(并行度只能=1) --类
ParallelSourceFunction:并行数据源(并行度能够>=1) --接口
RichParallelSourceFunction:多功能并行数据源(并行度能够>=1) --类 【建议使用的】
Rich 字样代表富有,在编程中,富有代表可以调用的方法很多,功能很全的意思。
Sink:
经过一系列Transformation转换操作后,最后一定要调用Sink操作,才会形成一个完整的DataFlow拓扑。只有调用了Sink操作,才会产生最终的计算结果,这些数据可以写入到的文件、输出到指定的网络端口、消息中间件、外部的文件系统或者是打印到控制台.
flink在批处理中常见的sink
- print 打印
- writerAsText 以文本格式输出
- writeAsCsv 以csv格式输出
- writeUsingOutputFormat 以指定的格式输出
- writeToSocket 输出到网络端口
- 自定义连接器(addSink)
Transformation-转换算子:
map算子:一个元素转换一个元素
FlatMap算子:将DataStream中的每一个元素转换为0...n个元素
Filter:过滤
KeyBy:按key聚合
Sum(底层是Reduce):可以对一个dataset 或者一个 group 来进行聚合计算,最终聚合成一个元素
Union合并:union可以合并多个同类型的流将多个DataStream 合并成一个DataStream【注意】:union合并的DataStream的类型必须是一致的
Connect连接:connect可以连接2个不同类型的流(最后需要处理后再输出)和union类似,但是connect只能连接两个流,两个流之间的数据类型可以不同,对两个流的数据可以分别应用不同的处理逻辑.
3、什么是侧道输出流,有什么用途
侧输出(Side Outputs)是一种流处理框架提供的功能,允许用户在一个流处理操作中产生多个输出流。 这使得开发者能够在同一个操作符中根据不同的条件将数据分流到不同的下游操作符,从而实现更复杂的业务逻辑。 侧输出可以看作是操作符的一个额外的输出通道,除了主输出流之外,操作符还可以产生一个或多个侧输出流。
比如在延迟数据问题里,超级迟到的数据用侧道输出流输出。
4、Flink 中两个流如何合并为一个流
Union合并:union可以合并多个同类型的流将多个DataStream 合并成一个DataStream【注意】:union合并的DataStream的类型必须是一致的
Connect连接:connect可以连接2个不同类型的流(最后需要处理后再输出)和union类似,但是connect只能连接两个流,两个流之间的数据类型可以不同,对两个流的数据可以分别应用不同的处理逻辑.
5、Flink 中两个流如何 join
参考问题11
6、Flink 中都有哪些 window,什么是滑动,滚动窗口
Window可以分成两类:
CountWindow:按照指定的数据条数生成一个Window,与时间无关。
滚动计数窗口,每隔N条数据,统计前N条数据
滑动计数窗口,每隔N条数据,
相关文章:
Flink问题总结
目录 1、Flink 的四大特征(基石) 2、Flink 中都有哪些 Source,哪些 Sink,哪些算子(方法) 3、什么是侧道输出流,有什么用途 4、Flink 中两个流如何合并为一个流 5、Flink 中两个流如何 join 6、Flink 中都有哪些 window,什么是滑动,滚动窗口 7、flink 中都有哪些…...
Day17 C++ vector 容器
2024.12.3 C vector 容器 C vector 容器 类比成数组 C 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。 与 C 数组相比&a…...
常见Linux命令(详解)
文章目录 常见Linux命令文件目录类命令pwd 打印当前目录的绝对路径ls 列出目录内容cd 切换路径mkdir 建立目录rmdir 删除目录touch 创建空文件cp 复制文件或目录rm 移除文件或者目录mv 移动文件与目录或重命名cat 查看文件内容more 文件分屏查看器less 分屏显示文件内容head 显…...
AgGrid 组件封装设计笔记:自定义 icon 以及每个 icon 的点击事件处理
文章目录 问题目前解决效果 v1思路 目前解决效果 v0思路 代码V1 问题 自己封装的 AgGrid 如何自定义传递 icon ,以及点击事件的处理? 目前解决效果 v1 思路 目前解决效果 v0 思路 一张图片说明一下 代码 V1 父组件使用 <template><MyPageL…...
vb.net常用命名空间
.NET的命名空间分为两个主要部分。一个是与微软程序语言相关的microsoft,一个是与操作系统相关的system,其中system主要分为应用程序类的命名空间和WEB程序类的命名空间两部分。 下面是常见的命名空间: Microsoft.VisualBasic 包含VB.NET的RUNTIME和编译运行VB程序…...
Netty面试内容整理-Netty 工作原理
Netty 的工作原理主要基于异步、事件驱动的 I/O 模型,结合 Reactor 多线程模式和高效内存管理来实现高并发网络通信。以下是 Netty 的工作原理详细解析: Reactor 线程模型 Netty 基于 Reactor 模式 来处理并发连接和 I/O 操作,主要分为 单线程模型、多线程模型 和 主从多线程…...
CMD 介绍
CMD 介绍 CMD 是 Windows 操作系统中的命令提示符(Command Prompt)程序,它是一种命令行工具,可以让用户通过键入命令来与计算机进行交互。 DOS: disk operating system, 磁盘操作系统. 是利用命令行来操作计算机. DOS 不是 CMD…...
【项目日记】仿mudou的高并发服务器 --- 实现HTTP服务器
对于生命,你不妨大胆一点, 因为我们始终要失去它。 --- 尼采 --- ✨✨✨项目地址在这里 ✨✨✨ ✨✨✨https://gitee.com/penggli_2_0/TcpServer✨✨✨ 仿mudou的高并发服务器 1 前言2 Util工具类3 HTTP协议3.1 HTTP请求3.2 HTTP应答 4 上下文解析模块…...
Android 使用TabLayout + ViewPager2 实现标签页的视图切换
学习笔记 步骤概览 添加依赖创建布局文件创建 ViewPager2 适配器设置 TabLayout 和 ViewPager2 的联动自定义每个页面内容(Fragment)自定义 TabLayout 样式(可选) 1. 添加依赖 首先,你需要在 build.gradle 文件中添…...
vue 项目实现阻止浏览器记住密码
在各个浏览器中,登录输入密码一般都会弹出是否记住密码的功能,如果记住之后,会在各个密码框自动填充记住的密码,这无疑是一种不安全的操作,所以要实现禁用阻止浏览器记住密码的行为 查阅资料,也得到很多…...
7. 一分钟读懂“单例模式”
7.1 模式介绍 单例模式就像公司里的 打印机队列管理系统,无论有多少员工提交打印任务,大家的请求都汇总到唯一的打印管理中心,按顺序排队输出。这个中心必须全局唯一,避免多个队列出现资源冲突,保证打印任务井然有序。…...
28个炫酷的纯CSS特效动画示例(含源代码)
CSS是网页的三驾马车之一,是对页面布局的总管家,2024年了,这里列出28个超级炫酷的纯CSS动画示例,让您的网站更加炫目多彩。 文章目录 1. 涌动的弹簧效果2. 超逼真的3D篮球弹跳,含挤压弹起模态3. 鼠标放div上࿰…...
百问FB网络编程 - 主要函数介绍
6.3 网络编程主要函数介绍 下面全部函数的头文件都是 #include <sys/types.h> #include <sys/socket.h>6.3.1 socket函数 int socket(int domain, int type,int protocol);此函数用于创建一个套接字。 domain是网络程序所在的主机采用的通讯协族(AF_UNIX和AF_I…...
Unity类银河战士恶魔城学习总结(P155 More example on audio effects更多的音效细节)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节添加了更多的音效细节 音频管理器 AudioManager.cs 使得多个音效可以同时播放,注释掉以下代码 public void PlaySFX(in…...
【题解】—— LeetCode一周小结48
🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结47 25.网络延迟时间 题目链接:743. 网络延迟时间 …...
040集——CAD中放烟花(CAD—C#二次开发入门)
效果如下: 单一颜色的烟花: 渐变色的火花: namespace AcTools {public class HH{public static TransientManager tm TransientManager.CurrentTransientManager;public static Random rand new Random();public static Vector3D G new V…...
一文理解多模态大语言模型——下
作者:Sebastian Raschka 博士, 翻译:张晶,Linux Fundation APAC Open Source Evangelist 编者按:本文并不是逐字逐句翻译,而是以更有利于中文读者理解的目标,做了删减、重构和意译,…...
ROS2创建 base 包用于其他模块的参数配置和头文件依赖
Demo 背景 ROS2项目开发中存在以下需求:有多个包需要读取一些共同的配置项(以txt或者yaml形式存在),且依赖于一些公用的utils工具代码(C)。Solution: 创建一个 base_config 包来“存放” 配置文件和公用的头文件。gitee address: Gitee/CDal…...
自然语言处理期末试题汇总
建议自己做,写完再来对答案。答案可能存在极小部分错误,不保证一定正确。 一、选择题 1-10、C A D B D B C D A A 11-20、A A A C A B D B B A 21-30、B C C D D A C A C B 31-40、B B B C D A B B A A 41-50、B D B C A B B B B C 51-60、A D D …...
前端热门面试题目(四)——计算机网路篇
计算机网络常见面试题: 计算机网络面试(一) 计算机网络面试(二) 计算机网络速成: 计算机网络速成一 计算机网络速成二 计算机网络速成三 2. HTTP 1.0 和 2.0 的区别 连接复用: HTTP/1.0 使用短连…...
cv_unet_image-matting图像抠图:5分钟快速部署,小白也能轻松上手
cv_unet_image-matting图像抠图:5分钟快速部署,小白也能轻松上手 1. 引言:为什么选择这个工具? 你是否遇到过这样的烦恼:需要快速抠出一张人像照片,但Photoshop操作太复杂?或者有一批产品图片…...
Pixel Language Portal实操手册:自定义天空蓝主题(#e3f2fd)与金币黄按钮配置
Pixel Language Portal实操手册:自定义天空蓝主题(#e3f2fd)与金币黄按钮配置 1. 工具概览 **像素语言跨维传送门(Pixel Language Portal)**是一款基于腾讯Hunyuan-MT-7B核心引擎构建的创新翻译工具。与传统翻译软件不同,它将语言转换过程设计成一场16-…...
亚马逊Buy for Me代购服务全流程实测:从下单到收货的完整避坑手册
亚马逊Buy for Me代购服务实战解析:从入门到精通的完整指南 跨境购物早已不是新鲜事,但每次看到海外电商平台上那些国内买不到的好物,心里总免不了痒痒的。亚马逊最新推出的Buy for Me服务,或许正是解决这一痛点的钥匙。作为一名长…...
OpenClaw开源贡献指南:Qwen3.5-9B技能模块PR提交流程
OpenClaw开源贡献指南:Qwen3.5-9B技能模块PR提交流程 1. 为什么需要你的贡献 去年冬天,当我第一次尝试用OpenClaw自动整理电脑上的照片时,发现现有的技能库缺少一个"智能相册整理"模块。那一刻我突然意识到:这个开源项…...
Qwen2_5_VLForConditionalGeneration实战:如何用forward方法处理多模态输入(附避坑指南)
Qwen2.5_VL多模态实战:工业级forward方法优化与避坑指南 当文本遇到图像和视频,AI模型的认知能力便迈入了全新维度。Qwen2.5_VLForConditionalGeneration作为当前最先进的多模态生成模型之一,其forward方法的设计直接决定了模型处理图文视频混…...
程序员鼓励师的消亡:当ChatGPT学会调情时
凌晨三点的代码战场凌晨三点的办公室,最后一行代码刚刚通过测试。疲惫的测试工程师瘫在椅上,屏幕右下角突然弹出消息:“亲爱的debug战士,今天的你又一次战胜了bug宇宙呢~(眨眼emoji)”。这不是人类同事的关…...
从CPython 3.12到3.14:我们逆向了217个AOT相关PR,提炼出6个决定编译成功率的核心宏定义(含Py_BUILD_CORE_MODULE与Py_LIMITED_API冲突解决方案)
第一章:Python 原生 AOT 编译方案 2026 高级开发技巧Python 社区在 2026 年迎来关键演进:CPython 官方正式集成原生 Ahead-of-Time(AOT)编译能力,无需依赖第三方运行时或 JIT 层即可生成平台专用的静态可执行文件。该特…...
OpenClaw技能扩展实战:安装Phi-3-vision-128k-instruct专用图文处理模块
OpenClaw技能扩展实战:安装Phi-3-vision-128k-instruct专用图文处理模块 1. 为什么需要专用技能模块? 上周我在整理技术文档时遇到一个典型场景:需要将十几份混杂着截图和文字说明的会议纪要,自动转换成结构化的Markdown文件。当…...
硅橡胶资源平台对接的靠谱对接企业哪家强
在深圳这座创新与制造之都,硅橡胶产业上下游企业林立,从原材料、模具设计到制品生产,形成了一个庞大而复杂的产业链。对于许多企业而言,“深圳硅橡胶资源平台对接” 的需求日益迫切——无论是寻找稳定供应商、开拓新客户ÿ…...
SEO优化对网站收录有什么作用
SEO优化对网站收录有什么作用 在当今互联网信息爆炸的时代,网站的收录问题显得尤为重要。SEO优化对于网站的收录有着至关重要的作用,无论是对于新开的网站还是已经运营一段时间的网站,优化都能为其带来更多的流量和潜在客户。SEO优化对网站收…...
