想问下flink sql可以完全替代datastream api吗,有什么场景是要datastream api解决的
关于有什么场景是要datastream api解决的 - 我们需要一个适用于有界和无界源的源API。 - 我们需要一个适用于无界和有界源的接收器API。 - 我们需要定义一组通用的执行语义,用于批处理和流执行,这包括重新考虑DataStream - API中的一些决策,使它们在一个统一的世界中工作。 - 当拓扑有界时,我们需要为DataStream程序使用高效的批处理式执行。 - 特别是对于机器学习用例,我们需要对迭代计算的健壮支持。目前DataStream API中对迭代的支持应该被认为是实验性的,它不像DataSet API那样支持动态终止标准。
Flink本身是批流统一的处理框架,所以Table API和SQL,就是批流统一的上层处理API。 目前功能尚未完善,处于活跃的开发阶段。 Table API是一套内嵌在Java和Scala语言中的查询API,它允许我们以非常直观的方式,组合来自一些关系运算符的查询(比如select、filter和join)。而对于Flink SQL,就是直接可以在代码中写SQL,来实现一些查询(Query)操作。Flink的SQL支持,基于实现了SQL标准的Apache Calcite(Apache开源SQL解析工具)。 无论输入是批输入还是流式输入,在这两套API中,指定的查询都具有相同的语义,得到相同的结果。 但是目前flink sql还不能完全替代datastream api。在测试出,cep等场景下可以使用datastream api解决。
有些用SQL实现比较麻烦,如测试出,自定义状态管理,cep等,这些场景用datastream api比较方便。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。