ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

flinksql 解析学习

2022-01-23 15:02:19  阅读:165  来源: 互联网

标签:flinksql SqlNode 学习 start RelNode sql calcite 解析


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,SqlNode,学习,start,RelNode,sql,calcite,解析
来源: https://blog.csdn.net/qq_41090363/article/details/122651267

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有