flinksql 解析学习

2022/1/23 19:04:54

本文主要是介绍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 作为参考
代码正在疯狂打码中。



这篇关于flinksql 解析学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程