从 Flink 1.9 SQL 功能可以稳定生产开始,就开始做 Flink SQL 相关的内容,到现在也有一段时间了,对 flink sql 还是有很多想法的,也有很多源码相关的内容一直想研究。
不过这段时间,工作上有些变动,所以很多时候都不想动弹(可能就是因为懒),所以这段时间更新频率越来越低了,主要是没什么新的产出,刚好基于之前的一些想法,在 github 上弄了个开源项目 sqlSubmit (https://github.com/springMoon/sqlSubmit) ,基于 Flink 1.10.1 的 SQL 提交程序。 目的是为了暂时替代 Flink sql-client 的功能,目前 sql-client 的功能还不完善,对 sql 语法的支持与 Table API 和 SQL 不太一样。
关于 sqlSubmit,设想是这样的: sqlSubmit 程序就像一个普通的 flink 任务一样,打成 jar 包,放到有 flink 安装程序的服务器上,也像启动正常 flink 任务一样 启动,和一般任务不同的是,这个任务需要传入一个 sql 脚本路径作为参数,sqlSubmit 程序去读取对于的 sql 脚本内容,分段解析,然后调用 StreamTableEnvironment 的 sqlUpdate 方法,依次执行所有sql,最后调用 StreamExecutionEnvironment 的 execute 方法提交任务到对应集群(目前应该只有 standalone 和 yarn )。
目标:在 flink 的 sql-client 还不太完善的时候,起到替代作用,可以使用纯 SQL 完成各种简单的实时ETL/流表关联/流流关联功能,只需要编写对应的sql 脚本,调用 sqlSubmit 程序,提交即可(还有个想法是,加入查看 yarn 集群上 session/yarn-cluster 模式 的 application 和 flink job 的简单管理,比如:查看app 与 job 的对应关系、查看 job 状态、触发saveopint、cancel 任务等)。
开发计划: 目前还在开发中,版本是 0.1,功能主要是基于 hive catalog,做了些解析 sql 和配置化的工作,还有UDF demo。初步功能开发完成后,会添加一些可以使用的 sql demo 脚本(各种 connector、ETL、流表管理、流流管理等),同时版本会变为 1.0 (还有个想法是跟着 Flink 的 大版本走用 1.10 )。关于Flink 的版本,一般来说会使用 Flink 最新的 release 版本。
关于使用: 做这个开源项目的 目的就是把我自己研究Flink 的 SQL 转化为具体的代码,但是很多内容我这里是没有应用场景,所以只能提供一些初级的 demo,所以非常欢迎各路大佬来使用,发现问题,一起改进(如果感兴趣也有时间,可以留言加入,非常欢迎)。
说明:个人水平有限,开发能力也不怎么样,所以代码质量不佳,还请各位大佬见谅,如果有什么问题,请留言指正,一定尽快解决
欢迎关注Flink菜鸟公众号,会不定期更新Flink(开发技术)相关的推文