字节跳动FlinkSQL优化实践:扩展DDL与功能增强

4 下载量 130 浏览量 更新于2024-08-27 收藏 1.57MB PDF 举报
FlinkSQL在字节跳动的优化与实践深入探讨了Flink SQL在大型互联网公司如字节跳动中的实际应用与挑战。自2018年Blink开源以来,字节跳动内部在Flink 1.9发布前已开始构建基于master分支的内部SQL平台,该平台在2019年10月升级到基于Blink planner的Streaming SQL平台,并广泛内部推广。在这个过程中,团队面临了一些有趣的需求场景和未解决的问题,比如Flink 1.9版本的DDL支持不足。 为了适应内部需求,字节跳动针对Flink 1.9进行了DDL扩展,增加了如`CREATE TABLE`, `CREATE VIEW`, `CREATE FUNCTION`, `ADD RESOURCE`等关键SQL语法支持,同时填补了watermark定义方面的空白。此外,他们发现用户对于SQL处理复杂业务逻辑的反馈中,许多其实是可以通过外部RPC调用解决的,因此开发了RPC维表和sink,允许直接在SQL中操作RPC服务,这极大地拓展了SQL的应用范围,甚至包括FaaS(函数即服务)场景。 在数据连接器方面,字节跳动实现了一系列内部源(sources)和sink(sinks),包括RocketMQ、ClickHouse、Doris等,以及配套的PB、Binlog、Bytes等格式。他们还创建了一个在线的界面化SQL平台,提供全面的功能支持,如SQL编辑、解析、调试,自定义UDF(用户定义函数)和Connector,版本控制,以及任务管理。 在实践优化方面,团队特别关注了窗口操作性能,引入了Mini-Batch功能,这使得Blink planner的窗口处理更加高效。同时,他们在SQL语法、性能瓶颈和用户体验上进行了针对性的改进,以提升整体Flink SQL在实际生产环境中的表现。这些经验分享对于理解和优化Flink SQL在大规模实时流处理中的应用具有很高的参考价值。