全部產品
Search
文件中心

Realtime Compute for Apache Flink:管理自訂函數(UDF)

更新時間:Sep 13, 2024

在SQL作業中使用自訂函數,需要先註冊自訂函數(UDF)。本文為您介紹如何註冊、更新和刪除自訂函數。

注意事項

  • 當RAM使用者或RAM角色等其他身份需要進行管理自訂函數(UDF)等相關操作時,請確保其具有目標專案空間的存取權限,詳情請參見專案空間授權

  • 為了避免JAR包依賴衝突,在開發自訂函數時您需要注意以下幾點:

    • 作業開發頁面選擇的Flink版本,請和Pom依賴中的Flink版本保持一致。

    • Flink相關依賴,scope請使用provided,即在依賴中添加<scope>provided</scope>

    • 其他第三方依賴請採用Shade方式打包,Shade打包詳情請參見Apache Maven Shade Plugin

    說明

    Flink依賴衝突問題,詳情請參見如何解決Flink依賴衝突問題?

註冊UDF

全域自訂函數

  1. 進入自訂函數註冊入口

    1. 登入Realtime Compute控制台

    2. 單擊目標工作空間操作列下的控制台

    3. 單擊資料開發 > ETL

    4. 單擊左側的函數頁簽。

  2. 單擊註冊UDF

  3. 上傳UDF JAR檔案。註冊UDF

    您可以通過以下任何一種方式上傳UDF JAR檔案:

    • 上傳檔案:單擊選擇檔案項右側的選擇檔案後,選擇您的目標UDF Artifact檔案。如果有依賴檔案,單擊依賴檔案項右側的選擇檔案,選擇您的目標UDF Artifact所依賴的檔案。

      說明
      • 您的UDF檔案會被上傳到您選擇的OSS Bucket中的sql-artifacts目錄下。

      • 對於Java類型的UDF,其依賴可以打包到UDF JAR包中,也可以通過依賴檔案項進行上傳;對於Python類型的UDF,其依賴推薦通過的單獨上傳依賴檔案方式上傳。

    • 外部URL:當需要使用其他服務上存在的UDF檔案時,可以使用外部URL功能擷取UDF檔案。

      說明

      僅支援以下兩類外部URL:

      • 開通Flink工作空間時選擇的OSS Bucket地址。您可以在Realtime Compute管理主控台目標工作空間詳情中查看綁定的OSS Bucket。

      • Realtime ComputeFlink版可以訪問且被允許訪問(公用讀取或被授予許可權)的其他外部儲存系統地址。

  4. 單擊確定

  5. 可用函數頁面,選擇需要註冊的UDF後,單擊建立函數

    Flink開發控制台會解析自訂函數檔案中是否使用了Flink UDF、UDAF和UDTF介面的類,並自動提取類名,填充到Function Name欄位中。註冊成功後,您可以在左側函數列表看到所有註冊成功的UDF,註冊成功的UDF左側會有黃色字型的fx標識。

    image.png

    說明

    全域自訂函數(Catalog Function)在註冊時,預設使用最新的Flink版本解析。如果您在作業中使用全域自訂函數,同時在作業中選中了非最新的Flink版本,則有可能出現不相容的問題。此時,您可以根據作業需要使用的引擎版本來實現UDF代碼,並通過作業級自訂函數的方式解決此問題。詳情請參見作業級自訂函數

作業級自訂函數

重要
  • 僅VVR 8.0.3及以上版本支援註冊作業級Python自訂函數。

  • 當使用作業級Python自訂函數時,可以在作業運行參數配置中,通過python.files或者python.archives等參數配置相關依賴檔案。

  • 當使用作業級Python自訂函數時,不支援深度檢查,需要在作業部署時,跳過深度檢查。

作業級自訂函數的註冊流程如下:

  1. 上傳自訂函數JAR或Python包。

    在左側導覽列檔案管理中,上傳自訂函數JAR或Python包。

  2. 在作業中指定作業級自訂函數。

    在作業的附加依賴檔案中,指定自訂函數JAR或Python包。

  3. 註冊作業級自訂函數。

    • JAVA自訂函數

      CREATE TEMPORARY FUNCTION yourfunctionname;
    • Python自訂函數

      CREATE TEMPORARY FUNCTION yourfunctionname LANGUAGE Python;

更新UDF

如果您的UDF JAR檔案中,新增了UDF或登入了UDF的代碼變更,您可以按照以下步驟更新UDF JAR檔案。

  1. 進入自訂函數註冊入口

    1. 登入Realtime Compute控制台

    2. 單擊目標工作空間操作列下的控制台

    3. 單擊資料開發 > ETL

    4. 單擊左側的函數頁簽。

  2. 函數列表中,滑鼠移至上方在目標UDF名稱上,單擊更新JAR

  3. 上傳UDF JAR檔案。更新JAR

    重要
    • 您上傳的新UDF JAR檔案中,必須包含當前已經註冊UDF的所有類,不能出現某個登入UDF的類消失的情況。

    • 只有重啟作業或提交新作業時,才會使用新UDF JAR檔案中的代碼。如果引用該UDF JAR的作業正在運行,則依然會使用舊UDF JAR檔案。

  4. 單擊修改

刪除UDF

說明

在刪除UDF JAR檔案前,請確定其註冊的UDF沒有被作業或SQL檔案引用。

如果您的UDF JAR檔案不再使用,您可以按照以下步驟刪除UDF。

  1. 進入自訂函數註冊入口

    1. 登入Realtime Compute控制台

    2. 單擊目標工作空間操作列下的控制台

    3. 單擊資料開發 > ETL

    4. 單擊左側的函數頁簽。

  2. 函數列表中,滑鼠移至上方在目標UDF名稱上,單擊刪除JAR表徵圖。

  3. 選中刪除以上所有函數並且刪除關聯的檔案

    如果您要刪除該UDF JAR檔案,則需要刪除該UDF JAR中所有註冊的UDF,避免有髒資料殘留。

  4. 單擊確定

相關文檔