栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

FlinkSQL client如何区分批处理模式和流模式?

FlinkSQL client如何区分批处理模式和流模式?

关于FlinkSQL client如何区分批处理模式和流模式?官方文档上面并没有给出明确的标准答案。不过偶然发现flink sql client的默认Planner 为Blink Planner。


官方文档地址:https://nightlies.apache.org/flink/flink-docs-release-1.12/zh/dev/table/sqlClient.html

下面是Blink Planner的介绍
Blink Planner
            不论输入数据源是流式的还是批式的,Table API 和 SQL 查询都会被转换成 DataStream 程序。查询在内部表示为逻辑查询计划,并被翻译成两个阶段:
            优化逻辑执行计划
            翻译成 DataStream 程序
            Table API 或者 SQL 查询在下列情况下会被翻译:
            1、当 TableEnvironment.executeSql() 被调用时。该方法是用来执行一个 SQL 语句,一旦该方法被调用, SQL 语句立即被翻译。
            2、当 Table.executeInsert() 被调用时。该方法是用来将一个表的内容插入到目标表中,一旦该方法被调用, TABLE API 程序立即被翻译。
            3、当 Table.execute() 被调用时。该方法是用来将一个表的内容收集到本地,一旦该方法被调用, TABLE API 程序立即被翻译。
            4、当 StatementSet.execute() 被调用时。Table (通过 StatementSet.addInsert() 输出给某个 Sink)和 INSERT 语句 (通过调用 StatementSet.addInsertSql())
            会先被缓存到 StatementSet 中,StatementSet.execute() 方法被调用时,所有的 sink 会被优化成一张有向无环图。
            5、当 Table 被转换成 DataStream 时(参阅与 DataStream 和 DataSet API 结合)。转换完成后,它就成为一个普通的 DataStream 程序,并会在调用
            StreamExecutionEnvironment.execute() 时被执行。
            注意 从 1.11 版本开始,sqlUpdate 方法 和 insertInto 方法被废弃,从这两个方法构建的 Table 程序必须通过 StreamTableEnvironment.execute() 方法执行,
            而不能通过 StreamExecutionEnvironment.execute() 方法来执行。

所以猜测flink sql client默认是流处理模式,如果source表是流表那么该数据任务就是流处理任务,如果source表是有限数据流,那么该任务就是批处理任务,并且数据处理完毕之后,进程会停止,而不是像flink jar一样一直在运行状态。

对于两种Planner的详细介绍可以参考我的另一篇文章:https://blog.csdn.net/weixin_42133361/article/details/122100538?spm=1001.2014.3001.5501

以上观点纯属个人观点,如果有什么不对的地方欢迎大家指正!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676063.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号