当前位置: 首页 > news >正文

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

  1. print 打印
  2. writerAsText 以文本格式输出
  3. writeAsCsv 以csv格式输出
  4. writeUsingOutputFormat 以指定的格式输出
  5. writeToSocket 输出到网络端口
  6. 自定义连接器(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,什么是滑动,滚动窗口

滚动窗口- TumblingWindow概念

流是连续的ÿ


http://www.mrgr.cn/news/78770.html

相关文章:

  • 【golang】单元测试,以及出现undefined时的解决方案
  • 如何手搓一个智能宠物喂食器
  • 洛谷 P2895 [USACO08FEB] Meteor Shower S C语言 bfs
  • c++类和对象(2)
  • 【IMF靶场渗透】
  • VUE 入门级教程:开启 Vue.js 编程之旅
  • 预处理详解(完结篇)
  • 4399大数据面试题及参考答案(数据分析和数据开发)
  • IDEA自定义帆软函数步骤详解
  • 解决“ VMware Tools for Windows Vista and later“报错问题
  • Hive元数据表解析
  • 联合汽车电子嵌入式面试题及参考答案
  • SAP SD学习笔记17 - 投诉处理3 - Credit/Debit Memo依赖,Credit/Debit Memo
  • 第144场双周赛:移除石头游戏、两个字符串得切换距离、零数组变换 Ⅲ、最多可收集的水果数目
  • Formality:设置Automated Setup Mode模式
  • 《装甲车内气体检测“神器”:上海松柏 K-5S 电化学传感器模组详解》
  • redis面试复习
  • Spring Shell如何与SpringBoot集成并快速创建命令行界面 (CLI) 应用程序
  • QT5 Creator (Mingw编译器) 调用VS2019 (阿里云 oss C++库) 报错的解决方法
  • Python毕业设计选题:基于django+vue的智慧社区可视化平台的设计与实现+spider
  • 快速学习GO语言总结
  • livekit 服务部署
  • 计算机的错误计算(一百七十一)
  • SQL进阶——聚合函数与分组
  • 给定一个整数可能为正,0,负数,统计这个数据的位数.
  • 【NebulaGraph】深入了解查询语句(二)