本文简介
列出了flink需要学习的基本原理框架梗概,适合初学者的学习思路,具体flink要学些什么,可以解决什么问题,
细致的参数设置、脚本提交、API调用还是要参考官网。
截止到目前 flink已经更新到 1.13
1.12版本已经实现了sql的批流统一,和hive有了较好的交互
1.10之前的版本与之后相差较大,尤其是内存模型、flinktable和flinksql部分、提交脚本和参数设置也略有不同
【官网传送】
https://ci.apache.org/
正文!!!
【概述】
【 解决】
更高要求的实时性、大数据准确计算
【特点】
- 流处理、低延迟、高吞吐 事件驱动,
- ms延迟
- 多种窗口类型
- 时间语义+watermark机制 可解决数据乱序问题
- 状态管理+checkpoint 容灾机制 保证 execatly-once
- 7*24
【分层API (3)】
- process
- datastream/dataset(一般用这个)
- table/sql
【和其他框架对比】
- sparkstreaming 微批处理、准实时、 s级别、吞吐高、无法处理乱序数据、没有时间语义、窗口单一
- strom 快速 ms级别、准确性不高、吞吐不高、无法处理乱序数据
【基本编程模型】
source–transform–sink
【wordcount】
- 批处理:(以从文件中获取数据为例)
//env创环境
val env = ExecutionEnvironment.getExecutionEnvironment
// 从文件中读取数据
val inputPath = "D:\\hello.txt"
val inputDS: DataSet[String] = env.readTextFile(inputPath)
// 分词之后,对单词进行groupby分组,然后用sum进行聚合
val wordCountDS: AggregateDataSet[(String, Int)] = inputDS.flatMap(_.split(" ")).map((_, 1))