全部產品
Search
文件中心

Realtime Compute for Apache Flink:Join

更新時間:Aug 01, 2024

本文為您介紹Regular Join、Interval Join、Temporal Join和Lookup Join變更的狀態相容性的詳情。

Regular Join

當前不支援Regular Join相關運算元的狀態遷移,因此通常任何Join相關的變更(包括Join類型、Join condition和Join輸入的Schema等),狀態都屬於不相容變更。但如果Join等值或非等值條件發生了變更,並且變更的等值或非等值條件都可以下推到join的一側input,形成帶條件的calc節點,並且在運行參數配置中設定了table.optimizer.state-compatibility.ignore-filter: true參數,該變更屬於完全相容。

Interval Join

當前不支援Interval Join相關運算元的狀態遷移,因此通常任何Join相關的變更(包括Join類型、Join condition、interval的大小和Join輸入的Schema等),狀態都屬於不相容變更。但以下情境的變更是完全相容:

  • 更改時間單位,但是最終值相同。

  • Join等值或非等值條件發生了變更,並且變更的等值或非等值條件都可以下推到Join的一側input,形成帶條件的calc節點,並且在運行參數配置中設定了table.optimizer.state-compatibility.ignore-filter: true參數。

Temporal Join

當前不支援temporal Join相關運算元的狀態遷移,因此通常任何Join相關的變更(包括Join類型、Join condition和Join輸入的Schema等),狀態都不相容。

Lookup Join

Lookup Join預設為無狀態節點,維表Lookup Join的修改不會影響運算元自身的狀態相容,但輸出改變時,可能會影響下遊運算元的狀態相容性。但以下兩種特殊情況會使得Lookup Join節點成為有狀態節點,可能會導致實際無法相容的變更被錯誤顯示為完全相容,在作業啟動時報錯無法恢複:

  • 如果您設定了作業參數table.optimizer.non-deterministic-update.strategy: TRY_RESOLVE,當Flink檢測到維表Lookup Join產生了非確定性更新(Non-Deterministic Updates)時,Lookup Join運算元會啟用狀態。

  • 如果維表配置了非同步參數,Lookup Join運算元將會啟用狀態。