從 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(開發技術)相關的推文