反馈已提交

网络繁忙

Spark SQL自定义函数插件

  • 文档创建者:Wendy123456
  • 历史版本:5
  • 最近更新:Naya 于 2025-09-01
  • 1. 概述

    1.1 版本

    FineDataLink 版本
    功能说明
    4.2.9.1支持使用通过接口开发的 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 安装插件

    自定义函数插件开发完成后,在「管理系统>插件管理」中安装自定义函数插件。详情参见文档:插件管理

    12.png

    2.3 使用自定义函数

    在 Spark SQL 算子中,自定义函数会加上标签,使用时需加「plugin_」前缀。例如,2.1 节自定义 demoZero 函数,实际使用时为 plugin_demoZero() 。

    14.png


    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持