flinksql 解析学习

Flink sql 之sql 解析篇:
1.主要是为了实现 利用flink 原生引擎去解析sql 生成语法树,打印日志信息便于去维护。
2.flink解析之Calcite和sql 解析过程
sql 解析阶段:calcite parser 解析(sql -> AST,AST 即 SqlNode Tree)
SqlNode 验证阶段:calcite validator 校验(SqlNode -> SqlNode,语法、表达式、表信息)
语义分析阶段:SqlNode 转换为 RelNode,RelNode 即 Logical Plan(SqlNode -> RelNode)
优化阶段:calcite optimizer 优化(RelNode -> RelNode,剪枝、谓词下推等)
物理计划生成阶段:Logical Plan 转换为 Physical Plan(等同于 RelNode 转换成 DataSet\DataStream API)
后续的运行逻辑与 datastream 一致(转自大数据羊说)https://juejin.cn/post/7003903405005471757
https://calcite.apache.org/
3.例子
SELECT
sum(part_pv) as pv,
window_start
FROM (
SELECT
count(1) as part_pv,
cast(tumble_start(rowtime, INTERVAL ‘60’ SECOND) as bigint) * 1000 as window_start
FROM
source_db.source_table
GROUP BY
tumble(rowtime, INTERVAL ‘60’ SECOND)
, mod(id, 1024)
)
GROUP BY
window_start
https://cloud.tencent.com/developer/article/1243475 作为参考
代码正在疯狂打码中。

上一篇:移动web复习04-less专题


下一篇:Educational Codeforces Round 121 (Rated for Div. 2)思路分享