Skip to content

FlinkTutorial 专注大数据Flink流试处理技术。从基础入门、概念、原理、实战、性能调优、源码解析等内容,使用Java开发,同时含有Scala部分核心代码。欢迎关注我的博客及github。

Notifications You must be signed in to change notification settings

zzwgit/FlinkTutorial

 
 

Repository files navigation

Flink 学习链接 —— 都是干货

麻烦路过的各位亲给这个项目点个 【star】,太不易了,写了这么多,算是对我坚持下来的一种鼓励吧!

在这里插入图片描述


在这里插入图片描述

FlinkTutorial 专注大数据Flink流试处理技术

  • 从数据流向角度分析:数据源Source、转换操作Transformation、下沉Sink
  • 从窗口操作角度分析:countWindowAll、countWindow、timeWindowAll、timeWindow滑动窗口
  • 从实际项目角度分析:与kafka、mysql、redis、http、elasticsearch
  • 从容错分析析:StateBackend、checkpoint

从数据流向角度分析

数据源Source

socket通信、本地创建数据、从磁盘文件、从Kafka消息中间件中读取

转换操作Transformation

  • map: 取一个元素并生产一个元素,一个映射函数
  • flatMap: 取一个元素并产生零个、一个或多个元素
  • filter: 为每个元素评估一个布尔函数,并保留该函数返回true的布尔函数
  • keyBy: 从逻辑上将流划分为不相交的分区,具有相同键的所有记录都分配给同一分区。在内部,keyBy() 是通过哈希分区实现的
  • reduce: 对key-value数据进行“滚动”压缩。将当前元素与最后一个减少的值合并,并发出新值
  • fold: 带有初始值的key-value数据流上的“滚动”折叠。将当前元素与上一个折叠值组合在一起并发出新值
  • Aggregations: 在key-value 数据流上滚动聚合。min和minBy之间的区别是min返回最小值,而minBy返回在此字段中具有最小值的元素(与max和maxBy相同)
    1. sum 求和
    2. min 求最小值 3. max 求最大值 4. minBy
    5. maxBy
  • window: 窗口操作
  • union: 两个或多个数据流的并集,创建一个包含所有流中所有元素的新流。注意:如果将数据流与其自身合并,则在结果流中每个元素将获得两次
  • connect: “连接”两个保留其类型的数据流。连接允许两个流之间共享状态
  • split: 根据某种标准将流分成两个或多个流
  • select: 从拆分流中选择一个或多个流

下沉Sink

  • print
  • addSink
  • writeAsText
  • writeAsCsv

从窗口操作角度分析

  • countWindowAll
  • countWindow
  • timeWindowAll
  • timeWindow滑动窗口

从实际项目角度分析

  • 与kafka对接
  • mysql对接
  • redis对接
  • http对接
  • elasticsearch对接

从容错角度分析

  1. StateBackend

MemoryStateBackend 默认保存到内存中,即检查点保存在JobManager内存中,状态保存在TaskManager内存中 FsStateBackend 可以是磁盘文件"file:\\dir_checkp"; 生产环境是: "hdfs://node-01:8020/user/dev/sqoop/flink_state_backend"
RocksDBStateBackend 将正在运行中的状态数据保存在RocksDB数据库中

  1. Checkpoint

Checkpoint 使Flink 的状态具有良好的容错性,通过checkpoint 机制,Flink 可以对作业和计算位置进行恢复。


Flink 相关的深度技术博客链接

1. Flink —— 什么是Flink?
2. 超全干货--Flink思维导图,花了3周左右编写、校对
3. 大解密:Flink恰巧语义一次消费,怎么保证
4. Flink 容错机制 —— CheckPoint【含示例源码】
5. Flink实战 —— 读取Kafka数据并与MySQL数据关联【附源码】
6. Flink —— StateBackend 状态后端


文章最后,给大家推荐一些受欢迎的技术博客链接:

1. JAVA相关的深度技术博客链接
2. Flink 相关技术博客链接
3. Spark 核心技术链接
4. 设计模式 —— 深度技术博客链接
5. 机器学习 —— 深度技术博客链接
6. Hadoop相关技术博客链接
7. 超全干货--Flink思维导图,花了3周左右编写、校对
8. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
9. 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
10. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
11. 深入聊聊Java 垃圾回收机制【附原理图及调优方法】


欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

在这里插入图片描述

About

FlinkTutorial 专注大数据Flink流试处理技术。从基础入门、概念、原理、实战、性能调优、源码解析等内容,使用Java开发,同时含有Scala部分核心代码。欢迎关注我的博客及github。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 84.6%
  • Scala 15.4%