在 Flink 中,每個執行環境都維護自己的函數注冊表。因此,如果您在一個執行環境中注冊了一個函數,它不會自動在另一個執行環境中注冊。 如果您想在另一個執行環境中使用已經注冊的函數,您需要手動在該環境中注冊該函數。
具體方法是將已注冊的函數的類及其構造函數的信息(如果有)手動傳遞給新環境中的 ExecutionEnvironment 或 StreamExecutionEnvironment 的注冊方法,例如:
env.registerFunction("myFunction", new MyFunction());
其中,myFunction
是您想要在新環境中使用的函數名稱,MyFunction
是您要注冊的函數的類名。 如果您的函數需要構造函數參數,您可以使用適當的構造函數重載,例如:
env.registerFunction("myFunction", new MyFunction("parameter_value"));
請注意,這種情況下,您需要確保每個環境中使用的所有依賴項(例如共享的類和庫)都可用和相同,以便函數能夠正確地工作。