一、FlinkSQL底层实现理解
- FlinkSQL在flink Framework的位置
Flink Table & SQL API是在DataStream和DataSet之上封装的一层高级API。由于DataStream和DataSet有各自的API,开发起来又有些困难,如果只是应对一些相对通用的需求会有点麻烦。而Flink Table & SQL API,通过关系型的API简化了内部的复杂实现。
- Flink SQL底层实现
Flink SQL通过calcite实现:
解析(字符串SQL转AST抽象语法树)
校验(语法、表达式、表信息)
优化(剪枝、谓词下推)
转换(逻辑计划转换成物理执行计划=Node转换成DataSet\DataStream API)
最终把SQL转换成DataSet或DataStream的API。
https://zhuanlan.zhihu.com/p/100524866
二、基础语法学习
https://zhuanlan.zhihu.com/p/559842405