美文网首页
flink sql——(1)相关说明

flink sql——(1)相关说明

作者: 傻疯子 | 来源:发表于2021-12-15 23:44 被阅读0次

    实时数据开发对非开发人员实在太过艰难,编程语言和众多窗口、状态、水位线、分布式概念都需要去掌握,显然是不太可能的。而SQL语言相对标准又不需要对底层有太多了解,还有基于规则的优化,大大降低了开发难度。

    flink-sql就是目前使用范围最广的实时数据开发框架flink的所封装的高级API,如果能掌握使用一定有利于更好的开发。

    但是flink-sql正在处于版本变更快速、使用方法不稳定等诸多问题,尚未成为主流用法。

    所以想写一个系列试图基于目前1.14.0甚至更新的版本关于flink-sql尽可能完善的用法。

    flink sql 通过Apache Calcite实现了了标准的sql,sql的执行流程大致如下:
    1.Sql Parser:将SQL语句通过java cc解析成AST(语法树),在Calcite中用SqlNode表 示AST;
    2.Sql Validator:结合Catalog去验证SQL语法;
    3.生成Logical Plan:将sqlNode表示的AST转换成LogicalPlan, 用relNode表示;
    4.生成Optimized LogicalPlan:基于Calcite rules优化Logical Plan,再基于Flink定
    制的一些优化rules优化Logical Plan;
    5.生成Flink PhysicalPlan:基于Flink里头的rules,将Optimized LogicalPlan转成成
    Flink的物理执行计划;
    6.通过代码生成技术(CodeGen )生成transformation后进一步编译为可执行的
    JobGraph提交运行。
    以上以后再详细去聊,因为对于普通sql的使用人员来说并不太需要了解多详细。

    后续需要写代码的部分,基本会使用scala去写,简洁的代码会比java更方便阅读。同时虽然sql 和Table API集成在同一套API下,但是后面也会尽量使用sql的方式去完成。

    相关文章

      网友评论

          本文标题:flink sql——(1)相关说明

          本文链接:https://www.haomeiwen.com/subject/wfipfrtx.html