經過不斷地努力购岗,社區(qū)成功發(fā)布 Pulsar Flink Connector 2.5.0 版本。Pulsar Flink Connector 集成了 Apache Pulsar 和 Apache Flink(數據處理引擎)潦嘶,允許 Apache Flink 向 Apache Pulsar 讀寫數據。
下面將詳細介紹 Pulsar Flink Connector 2.5.0 引入的新特性檩奠,希望能夠幫助大家更好地理解 Pulsar Flink Connector 掐松。
背景
Flink 是一款快速發(fā)展的分布式計算引擎,在 1.11 版本中罢杉,支持以下新特性:
核心引擎引入了非對齊的 Checkpoint 機制趟畏。這一機制明顯改善了 Flink 容錯機制,它可以提高嚴重反壓作業(yè)的 Checkpoint 速度滩租。
提供一套新的 Source 接口赋秀。通過統(tǒng)一流和批作業(yè) Source 的運行機制利朵,支持常用的內部實現,如事件時間處理猎莲、watermark 生成和空閑并發(fā)檢測绍弟。這套新的 Source 接口可以極大地降低開發(fā)新 Source 的復雜度。
Flink SQL 支持變動數據捕獲(Change Data Capture著洼,CDC)樟遣。它使 Flink 可以方便地通過像 Debezium 這類工具來翻譯和消費數據庫的變動日志。Table API 和 SQL 也有助于文件系統(tǒng)連接器支持更多用戶場景和格式身笤,從而支持將流式數據從 Pulsar 寫入 Hive 等場景豹悬。
PyFlink 優(yōu)化多個部分的性能,包括支持向量化的用戶自定義函數(Python UDF)液荸。這些改動使 Flink Python 接口可以與常用的 Python 庫(如 Pandas 和 NumPy)進行相互操作瞻佛,從而使 Flink 更適合數據處理與機器學習的場景。
在新版本發(fā)布后娇钱,為了讓小伙伴們盡快使用支持 Flink 1.11 的 Pulsar Flink Connector伤柄,我們對新版 Pulsar Flink Connector 進行了升級。
我們發(fā)現這次升級難度很大忍弛,問題在于 Flink 新版本對于公開 API 的支持有增減(基礎的 FieldsDataType 類型、StreamTableEnvironment 包變更和 execute 方法的變化)考抄、Table 檢查 Schema 操作變更為啟動時檢查细疚、連接器運行時轉換為 Catalog,直接使新舊版本不兼容川梅。
經過多方考量疯兼,我們最終決定新增pulsar-flink-1.11 模塊來支持 Flink 1.11。在這里非常感謝 BIGO 團隊的陳航贫途、吳展鵬吧彪,為社區(qū)貢獻了 Flink 1.11 的兼容升級技術支持。
Pulsar Schema 包含消息的類型結構信息丢早,它可以很好地和 Flink Table 進行集成姨裸。在 Flink 1.9 時,SQL 類型可以綁定物理類型怨酝,用于 Pulsar 的 SchemaType傀缩。
但是在 Flink 1.11,Table 變更后农猬,SQL 類型只能使用默認的物理類型赡艰,Pulsar 的 SchemaType 不支持 Flink 日期、事件的默認物理類型斤葱。我們?yōu)?Pulsar Schema 添加了新的原生類型慷垮,使 Pulsar Schema 可以和 Flink SQL 類型系統(tǒng)集成起來揖闸。
Pulsar Flink Connector 新特性詳解
以下是 Pulsar Flink Connector 2.5.0 中添加的一些主要的功能。
pulsar-flink
?? 支持 Flink 1.11 和 flink-sql DDL
Flink 1.11 版本升級的幅度較大料身,一些公共 API 發(fā)生了增刪汤纸,導致 Flink 1.9、Flink 1.11 的 Pulsar 連接器無法做到兼容惯驼。本次變更使項目分為兩個模塊蹲嚣,來支持不同版本的 Flink。BIGO 的陳航祟牲、吳展鵬童鞋為此特性付出了很大的努力隙畜。
支持 Flink 1.11 版本
新增 Flink-sql DDL 支持
更新 topic 分區(qū)策略,使消費更均勻
Flink 1.11 兼容 Pulsar schema
有關實現的更多信息说贝,請參見 PR-115议惰。
??添加 PulsarDeserializationSchema 接口
抽象 PulsarDeserializationSchema 接口,使用戶可以自定義解碼乡恕,獲得更多源信息言询。
有關實現的更多信息,請參見 PR-95傲宜。
貢獻者:@wuzhanpeng
??Flink Sink 增加 JSON 支持
Flink Sink 實現中运杭,Pulsar Schema 類型支持 JSON 。
有關實現的更多信息函卒,請參見 PR-116辆憔。
貢獻者:@jianyun8023
??PulsarCatalog 變更為基于 GenericInMemoryCatalog 實現
PulsarCatalog 的實現變更為繼承GenericInMemoryCatalog。
有關實現的更多信息报嵌,請參見 PR-91虱咧。
貢獻者:@sijie
Pulsar Schema
??增加 Java 8 時間、日期類型到 Pulsar Schema 的原生類型
為 Pulsar Schema 增加 Java 8 常用的 Instant锚国、LocalDate腕巡、LocalTime、LocalDateTime 等類型支持血筑。
有關實現的更多信息绘沉,請參見PR-7874。
貢獻者:@jianyun8023
總結
Pulsar Flink Connector 2.5.0 的發(fā)布豺总,對于這個快速發(fā)展的項目來說梆砸,是一個大的里程碑。在此特別感謝為本次版本發(fā)布做出貢獻的陳航园欣、吳展鵬帖世、郭斯杰、趙建云。
如果你有好的想法或想成為項目貢獻者日矫,歡迎提交 ISSUE 至 https://github.com/streamnative/pulsar-flink/issues赂弓,也可以參考我們的貢獻指南。
相關鏈接