2021年最新最全Flink系列教程__FlinkTable&SQL(六、七)

2021-12-07 10:24:47 浏览数 (1)

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)]

0 人点赞