儲存點要求和初步說明
儲存點儲存兩件事:(a)所有資料來源的位置,(b)運算子的狀態。儲存點在許多環境中都很有用:
- 輕微的應用程式碼更新
- Flink 更新
- 並行性的變化
- …
從版本 1.3 開始 (也適用於早期版本):
-
必須啟用檢查點才能使儲存點成為可能。如果你忘記使用以下方法明確啟用檢查點:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.enableCheckpointing(checkpointInterval);
你會得到:
java.lang.IllegalStateException: Checkpointing disabled. You can enable it via the execution environment of your job
-
在使用視窗操作時,使用事件時間(攝取或處理時間)來產生適當的結果至關重要;
-
為了能夠升級程式並重用儲存點,必須設定手動 uid 。這是因為,預設情況下,Flink 在程式碼更改後更改運算子的 UID;
-
鏈式運算子由第一個任務的 ID 標識。無法手動將 ID 分配給中間連結任務,例如在鏈[a - > b - > c]中,只能手動分配 ID,但不能分配 b 或 c。要解決此問題,你可以手動定義任務鏈。如果你依賴自動 ID 分配,連結行為的更改也將更改 ID(請參閱上面的點)。