day06-07_FlinkSQL&Table
今日目标
- 了解Flink Table&SQL发展历史
- 了解为什么要使用Table API & SQL
- 掌握Flink Table&SQL进行批处理开发
- 掌握Flink Table&SQL进行流处理开发
- 掌握常用的开发案例
- Flink-SQL的常用算子
Flink Table & SQL
- FlinkTable & SQL 是抽象级别更高的操作, 底层Flink Runtime => Stream 流程
- 批处理是流处理的一种特殊形态
- FlinkSQL 遵循ANSI的SQL规范
- Flink1.9之前, FlinkSQL包括两套Table api , DataStream Table API(流处理) ,DataSet Table API(批处理)
- Planner 查询器, 抽象语法树,parser、optimizer、codegen(模板代码生成),最终生成 Flink Runtime 直接进行执行的代码
- Planner包括old Planner 和 Blink Planner ,Blink Planner 底层实现了 流批一体(默认的Planner)
FlinkTable & SQL 程序结构
动态表 & 连续查询
Flink-SQL常用算子
- 常用算子 Join - full join
多语言实现WordCount
问题
- 建模块和导包问题
- Operator state 案例 - Checkpoint 如果不设置一秒钟产生一条记录, 不会保存state ,每次还是 从头开始。 原因:checkpoint 需要 1s ,但是每5条数据生成报异常 Exception ,5条数据生成完之后并没有做完整的checkpoint 状态备份,每次重启之后都重新开始消费。
[外链图片转存中…(img-2s6cRETy-1624435933007)]