Flink编程模型
所属分类 flink
浏览量 907
数据运算模型
流式 数据一直在生产,计算持续运行
批处理 在预先定义的时间内计算
处理无界和有界数据
stateful computations over streams
fast scalable fault-tolerant in-memory
event-time large-state exaclty-once
批处理 处理历史数据集
流处理 处理实时数据
事件驱动
flink基石
Checkpoint state Time Window
基于chandy_Lamport算法实现分布式一致性快照 提供了一致性的语义
丰富的state API , ValueState ListState MapState BroadcastState
实现Watermark机制,支持基于事件时间处理 乱序数据处理 迟到数据容忍
滚动 滑动 会话窗口 灵活的自定义窗口
flink APIS
high-level analytics API SQL/table API (dynamic tables)
stream & batch data process datastream API (streams windows) dataset API
stateful event driven applications ProcessFunction(events,state,time)
Flink 数据流编程模型
SQL high-level language
table API declarative DSL
datastream / dataset API core APIS
stateful stream processing low-level build block (streams state [event]time)
有状态流
函数嵌入到DataStream API中 处理来自一个或者多个流数据的事件
并使用一致、容错的状态
DataStream / DataSet API 是 Flink 提供的核心 API
DataSet 处理有界的数据集
DataStream 处理有界或者无界的数据流
数据进行转换计算 map flatmap window keyby sum max min avg join 等
Table API 是以 表 为中心的声明式 DSL
动态表 流表
提供 select project join group-by aggregate 等操作
Flink 提供的最高层级的抽象是 SQL
语法与表达能力 与 Table API 类似
DataStream lines = env.addSource(new FlinkKafkaConsumer(...));
DataStream events = lines.map((line) -> parse(line));
DataStream stats = events.keyBy("id").timeWindow(Time.seconds(10))
.apply(new MyWindowAggregationFunction());
stats.addSink(new RollingSink(path));
source
transformation map
transformation keyBy window apply
sink
Source 数据源 基于本地集合 基于文件 基于网络套接字 自定义source
Transformation
数据转换操作
Map FlatMap Filter KeyBy Reduce Fold Aggregations Window WindowAll Union Windowjoin Split Select Project 等
Sink 接收器 常见的Sink 写入文件 打印出来 写入socket 自定义的sink
上一篇
下一篇
flink批处理wordcount实例
flink批处理wordcount实例2
flink介绍
java正则表达式实例之简单分词
git reset 和 diff 使用说明
git工作区域及常用命令