Spark SQL自訂函式插件

  • 文檔創建者:Laurenwy
  • 編輯次數:2
  • 最近更新:Nikozhan 于 2025-09-17
  • 1. 概述

    1.1 版本

    FineDataLink 版本
    功能說明
    4.2.9.1支援使用透過API開發的 SparkSQL 自訂函式插件

    1.2 應用場景

    Spark SQL 算子中已經內建了大量函式,能夠滿足使用者的基本需求。但在一些特殊場景,可能需要一些特殊的函式。在這種情況下,FineDataLink 支援自訂函式,可以有使用者根據業務需要自己來定義一些函式。

    1.3 注意事項

    1)插件開發階段:

    • 不能使用靜態方法,要使用類方法;

    • 需要避免函式同名,同名函式只會生效一個;

    2)插件更新階段:spark 運作程式中不支援熱更新 class,因此更新插件後需要重啟 FineDataLink。

    2. 範例

    在開發插件之前,請自行準備編譯環境,如 Eclipse 或 Idea 。

    使用者可參考 範例插件 ,基於實際需求開發插件。

    2.1 編寫 Java 檔案

    編寫 java 檔案,無參數函式範例如下:

    package com.fr.plugin.dp.spark.udf.demo;
    import com.fr.dp.spark.udf.SparkUDFPluginSign;
    import org.apache.spark.sql.types.DataType;
    import org.apache.spark.sql.types.DataTypes;

    public class Demo0SparkUDFPluginSign implements SparkUDFPluginSign<String> {
        public static final Demo0SparkUDFPluginSign KEY = new Demo0SparkUDFPluginSign();
        @Override
        public String functionName() {
            return "demoZero";
        }//自訂函式名

        @Override
        public String[] params() {
            return new String[0];
        }//參數名,本範例中無參數

        @Override
        public DataType returnType() {
            return DataTypes.StringType;
        }//函式回傳值類型,一般為 String

        @Override
        public String run(Object... params) throws Exception {
            return "111";
        }//自訂函式邏輯
    }

    有參數函式範例如下:

    package com.fr.plugin.dp.spark.udf.demo;
    import com.fr.dp.spark.udf.SparkUDFPluginSign;
    import org.apache.spark.sql.types.DataType;
    import org.apache.spark.sql.types.DataTypes;

    public class Demo2SparkUDFPluginSign implements SparkUDFPluginSign<String> {
        public static final Demo2SparkUDFPluginSign KEY = new Demo2SparkUDFPluginSign();

        @Override
        public String functionName() {
            return "demoTwo";
        }//自訂函式名

        @Override
        public String[] params() {
            return new String[]{"expr", "len"};
        }//自訂參數名

        @Override
        public DataType returnType() {
            return DataTypes.StringType;
        }//函式回傳值類型,一般為 String

        @Override
        public String run(Object... params) throws Exception {
            return ((String) params[0]).substring((Integer) params[1]);
        }//參數在函式邏輯中的使用方法
    }

    2.2 安裝插件

    自訂函式插件開發完成後,在「管理系統>插件管理」中安裝自訂函式插件。詳情參見文檔:插件管理

    2.3 使用自訂函式

    在 Spark SQL 算子中,自訂函式會加上標籤,使用時需加「plugin_」前綴。例如,2.1 節自訂 demoZero 函式,實際使用時為 plugin_demoZero() 。


    附件列表


    主題: 資料開發-定時任務
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    獲取幫助
    線上支援
    獲取專業技術支援,快速幫助您解決問題
    工作日9:00-12:00,13:30-17:30在线
    頁面反饋
    針對當前網頁的建議、問題反饋
    售前咨詢
    業務咨詢
    電話:0933-790886或 0989-092892
    郵箱:taiwan@fanruan.com
    頁面反饋
    *問題分類
    不能為空
    問題描述
    0/1000
    不能為空

    反馈已提交

    网络繁忙