在Flink的官網寫着:Stateful Computations over Data Streams。
基於狀態計算的數據流。
在流式計算中,希望做一些聚合分析等。那么就需要保存當前日志的狀態,以備與后來的日志做比較。
在Flink中每個操作都會有狀態的保存無論是source、sink還是operator。
按照使用使用keyby可將State分為Keyed State 和 Operator State。他們的區別主要在於Keyed State有key而Operator State沒有key。
而按照State的操作是否為運行時的可分為:Raw State和Managed State。Raw State是用戶自定義的使用State,雖然不太建議。用戶可以在RichFunction中使用。
Flink支持不少State的保存方式:memory、fs、rocksdb。
State可以用於狀態保存還可以用於容錯、checkpoint等。總之功能很強大。
但是,感覺State都是Flink在維護不需要用戶定義使用。