您好,登錄后才能下訂單哦!
這篇文章主要介紹“Flink1.8.0新功能有哪些”,在日常操作中,相信很多人在Flink1.8.0新功能有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Flink1.8.0新功能有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Flink1.8.0發布,主要改變如下:
1.將會增量清除舊的State
2.對hadoop的支持發生改變
3.編程方面TableEnvironment棄用
4.Flink1.8將不發布帶有Hadoop的二進制文件
更多詳細如下:
這次的發行版本討論了Flink 1.7和Flink 1.8之間發生變化的重要方面,例如配置,特性或依賴性。
狀態
1、使用TTL(生存時間)連續增量清除舊的Key狀態
我們在Flink 1.6(FLINK-9510)中為Key狀態引入了TTL(生存時間)。此功能允許在訪問時清理并使Key狀態條目無法訪問。另外,在編寫保存點/檢查點時,現在也將清理狀態。Flink 1.8引入了對RocksDB狀態后端(FLINK-10471)和堆狀態后端(FLINK-10473)的舊條數的連續清理。這意味著舊的條數將(根據TTL設置)不斷被清理掉。
2、恢復保存點時對模式遷移的新支持
使用Flink 1.7.0, 我們在使用AvroSerializer(FLINK-10605)時添加了對更改狀態模式的支持。使用Flink1.8.0,我們在TypeSerializers將所有內置遷移到新的序列化器快照抽象方面取得了很大進展,該抽象理論上允許模式遷移。在Flink附帶的序列化程序中,我們現在支持PojoSerializer(FLINK-11485)和Java EnumSerializer (FLINK-11334)以及有限情況下的Kryo(FLINK-11323)的模式遷移格式。
3、保存點兼容性
TraversableSerializer 此序列化程序(FLINK-11539)中的更新,包含Scala的Flink 1.2中的保存點將不再與Flink 1.8兼容。可以通過升級到Flink 1.3和Flink 1.7之間的版本,然后再更新至Flink 1.8來解決此限制。
4、RocksDB版本沖突并切換到FRocksDB(FLINK-10471)
需要切換到名為FRocksDB的RocksDB的自定義構建,因為需要RocksDB中的某些更改來支持使用TTL進行連續狀態清理。FRocksDB的已使用版本基于RocksDB的升級版本5.17.2。對于Mac OS X,僅支持OS X版本> =10.13的RocksDB版本5.17.2。
Maven 依賴
1、使用Flink捆綁Hadoop庫的更改(FLINK-11266)
包含hadoop的便捷二進制文件不再發布。
如果部署依賴于flink-shaded-hadoop2包含 flink-dist,則必須從下載頁面的可選組件部分手動下載并打包Hadoop jar并將其復制到/lib目錄中。另外一種方法,可以通過打包flink-dist和激活 include-hadoopmaven配置文件來構建包含hadoop的Flink分發。
由于hadoop flink-dist默認不再包含在內,因此指定-DwithoutHadoop何時打包flink-dist將不再影響構建。
配置
1、TaskManager配置(FLINK-11716)
TaskManagers現在默認綁定到主機IP地址而不是主機名。可以通過配置選項控制此行為taskmanager.network.bind-policy。如果你的Flink集群在升級后遇到莫名其妙的連接問題,嘗試設置taskmanager.network.bind-policy: name在flink-conf.yaml 返回前的1.8的設置行為。
Table API
1、直接表構造函數使用的取消預測(FLINK-11447)
Flink 1.8不贊成Table在Table API中直接使用該類的構造函數。此構造函數以前將用于執行與橫向表的連接。你現在應該使用table.joinLateral()或 table.leftOuterJoinLateral()代替。這種更改對于將Table類轉換為接口是必要的,這將使Table API在未來更易于維護和更清潔。
2、引入新的CSV格式符(FLINK-9964)
此版本為符合RFC4180的CSV文件引入了新的格式符。新描述符可用作 org.apache.flink.table.descriptors.Csv。目前,這只能與Kafka一起使用。舊描述符可org.apache.flink.table.descriptors.OldCsv用于文件系統連接器。
3、靜態生成器方法在TableEnvironment(FLINK-11445)上的棄用
為了將API與實際實現分開,TableEnvironment.getTableEnvironment()不推薦使用靜態方法。你現在應該使用 Batch/StreamTableEnvironment.create()。
4、表API Maven模塊中的更改(FLINK-11064)
之前具有flink-table依賴關系的用戶需要更新其依賴關系flink-table-planner以及正確的依賴關系flink-table-api-*,具體取決于是使用Java還是Scala: flink-table-api-java-bridge或者flink-table-api-scala-bridge。
5、更改為外部目錄表構建器(FLINK-11522)
ExternalCatalogTable.builder()不贊成使用ExternalCatalogTableBuilder()。
6、更改為表API連接器jar的命名(FLINK-11026)
Kafka/elasticsearch7 sql-jars的命名方案已經更改。在maven術語中,它們不再具有sql-jar限定符,而artifactId現在以前綴為例,flink-sql而不是flink例如flink-sql-connector-kafka。
7、更改為指定Null的方式(FLINK-11785)
現在Table API中的Null需要定義nullof(type)而不是Null(type)。舊方法已被棄用。
連接器
1、引入可直接訪問ConsumerRecord的新KafkaDeserializationSchema(FLINK-8354)
對于FlinkKafkaConsumers,我們推出了一個新的KafkaDeserializationSchema ,可以直接訪問KafkaConsumerRecord。這包含了該 KeyedSerializationSchema功能,該功能已棄用但目前仍可以使用。
2、FlinkKafkaConsumer現在將根據主題規范過濾恢復的分區(FLINK-10342)
從Flink 1.8.0開始,現在FlinkKafkaConsumer總是過濾掉已恢復的分區,這些分區不再與要在還原的執行中訂閱的指定主題相關聯。此行為在以前的版本中不存在FlinkKafkaConsumer。如果您想保留以前的行為。請使用上面的 disableFilterRestoredPartitionsWithSubscribedTopics()配置方法FlinkKafkaConsumer。
考慮這個例子:如果你有一個正在消耗topic的Kafka Consumer A,你做了一個保存點,然后改變你的Kafka消費者而不是從topic消費B,然后從保存點重新啟動你的工作。在此更改之前,您的消費者現在將使用這兩個主題A,B因為它存儲在消費者正在使用topic消費的狀態A。通過此更改,您的使用者將僅B在還原后使用topic,因為我們使用配置的topic過濾狀態中存儲的topic。
其它接口改變:
1、從TypeSerializer接口(FLINK-9803)中刪除了canEqual()方法
這些canEqual()方法通常用于跨類型層次結構進行適當的相等性檢查。在TypeSerializer實際上并不需要這個屬性,因此該方法現已刪除。
2、刪除CompositeSerializerSnapshot實用程序類(FLINK-11073)
該CompositeSerializerSnapshot實用工具類已被刪除。現在CompositeTypeSerializerSnapshot,你應該使用復合序列化程序的快照,該序列化程序將序列化委派給多個嵌套的序列化程序。
到此,關于“Flink1.8.0新功能有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。