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 豆!