flinksql 解析学习

flinksql 解析学习,第1张

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 转换成 DataSetDataStream 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 作为参考
代码正在疯狂打码中。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5715279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存