首页 > 其他分享 >关于在得帆云数据中台如何自定义函数

关于在得帆云数据中台如何自定义函数

时间:2024-08-23 10:52:56浏览次数:7  
标签:帆云 函数 自定义 matcher jar maven result String

UDF使用示例

场景说明:使用udf编写一个函数Unit_Conversion(value)。在函数中根据value的值进行单位转化,并进行类型转化。

1、导入依赖

在pom.xml中将如下依赖进行导入。

        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>3.1.2</version>
        </dependency>

2、编写代码

创建UDF类,继承GenericUDF类。
注意:方法名称必须为evaluate,且其他调用的方法需要设置为private类型。

public class App extends UDF {
    public String evaluate(String data) {
        // 处理w单位的数据
        String convertedRange = convertUnits(data, "w", 4, 3);
        // 处理k单位的数据
        convertedRange = convertUnits(convertedRange, "k", 3, 2);
        return convertedRange;
    }

    private static String convertUnits(String input, String unit, int zerosForInteger, int zerosForDecimal) {
        Pattern pattern = Pattern.compile("(\\d+)(\\.\\d+)?" + unit);
        Matcher matcher = pattern.matcher(input);
        StringBuffer result = new StringBuffer();

        while (matcher.find()) {
            String integerPart = matcher.group(1);
            String decimalPart = matcher.group(2) != null ? matcher.group(2).substring(1) : ""; // 获取小数部分
            int zeroesToAdd = decimalPart.isEmpty() ? zerosForInteger : zerosForDecimal;
            String replacement = integerPart + decimalPart + repeat("0", zeroesToAdd);
            matcher.appendReplacement(result, replacement);
        }

        matcher.appendTail(result);
        return result.toString();
    }
}

3、打包上传jar

1、指定jar函数入口,配置在pom.xml文件中。

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <!-- 函数入口,从哪个函数开始启动 -->
                            <mainClass>App</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>6</source>
                    <target>6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

2、idea中可以直接将maven项目进行打包。
image
3、配置资源名称、选择类型等,并将刚刚打包完成的jar文件进行上传。(注意:jar文件尽量不需要导入太多了架包,中台有限制上传文件的大小)
image

4、新建自定义函数

image

5、使用函数

函数创建后,在项目内,可以在Hive作业里直接使用。
image

标签:帆云,函数,自定义,matcher,jar,maven,result,String
From: https://www.cnblogs.com/wen12138/p/18375439

相关文章

  • C#使用委托实现函数回调,方法调用拦截
    C#使用委托实现函数回调,方法调用拦截回调方法、拦截方法定义publicclassAopHelper{publicstaticasyncTask<T>ExecuteGenericMethod<T>(Task<T>returnValue,Action<T>callBackAction,Action<Exception>exceptionAction,ActionfinallyAction){......
  • 一些关于生成函数的推导
    该文只推导一些特殊序列的生成函数1.$\quad$对于序列{\(a_n\)},\(a_n=1^n\),其生成函数为\(g(x)=\sum_{n=0}^{\infty}{a_nx^n}\)。$\quad$现在推导其封闭形式,先将其乘一个\(x\),可以得到:\[x\cdotg(x)=\sum_{n=0}^{\infty}{a_nx^{n+1}}\]$\quad$两式相减可得......
  • 生成函数(GF)
    学了一点皮毛,暂时先写一篇博客寄存一下定义:比较抽象的理解一下就是把一个限制条件的方案数转化成一个次冥函数的形式,再把一个次幂函数转化成某种限制条件下的方案数.......大概是这么一个形式:\[f(x)=a_{0}x^0+a_{1}x^1+a_{2}x^2+·····\]还是举个例子吧:你现在要离校回家......
  • 虚函数返回自己类型指针或引用,重写时返回类型可以不一样
    C++#include<functional>#include<iostream>#include<vector>#include<memory>#include<set>#include<map>#include<string>usingnamespacestd;namespace{/*C++类不能继承它自己*/classAnimal/*:public......
  • WPF 模拟UWP原生窗口样式——亚克力|云母材质、自定义标题栏样式、原生DWM动画 (附我封
    先看一下最终效果,左图为使用亚克力材质并添加组合颜色的效果;右图为MicaAlt材质的效果。两者都自定义了标题栏并且最大限度地保留了DWM提供的原生窗口效果(最大化最小化、关闭出现的动画、窗口阴影、拖拽布局器等)。接下来把各部分的实现一个个拆开来讲讲。一、使用窗口材质特......
  • 神经网络中常用的函数
    在神经网络中,有许多常用的函数,每种函数在不同的场景下有其独特的应用。以下是一些常见的神经网络函数及其应用场景:###1.**激活函数(ActivationFunctions)**激活函数是神经网络中的关键组件,它们决定了一个神经元是否应该被激活。常见的激活函数包括:-**ReLU(RectifiedLinearUni......
  • 探索HarmonyOS中的列表组件及其自定义特性
    在现代移动应用中,List组件是数据列表的关键元素。HarmonyOS中的List组件不仅具备传统的列表功能,还提供了丰富的自定义选项,允许开发者根据需求灵活调整列表的行为和外观展示。本文将探讨HarmonyOS中列举组件的自定义特性,包括自定义项布局、动态加载数据、多列布局、拖拽排序......
  • C/C++语言基础--指针三大专题详解3,完结篇(包括指针做函数参数,函数指针,回调函数,左右法
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言指针是C/C++的灵魂,和内存地址相关联,运行的时候速度快,但是同时也有很多细节和规范要注意的,毕竟内存泄漏是很恐怖的指针打算分三篇文章进行讲解,本专题是三,完结篇,介绍了指针做函数参数,函数指针,回调函数,左右法则解决复......
  • Python系列(6)- Python 函数、Python 装饰器
    函数在数学上的定义:给定一个非空的数集A,对A施加对应法则f,记作f(A),得到另一数集B,也就是B=f(A),那么这个关系式就叫函数关系式,简称函数。简而言之,两个变量x和y,如果每给定x的一个值,y都有一个确定的值与其对应,那么我们就说y是x的函数。其中,x叫做自变量,y叫做因变量......
  • set 的详细用法(set 排序、set 的遍历、set 的多种倒序遍历方法、set 的基本成员函数)
    目录一:set的简介二:set的使用(要包含头文件)1.set的定义2.set的基本成员函数3.set的遍历(1)迭代器iterator(即升序输出)(2)倒序输出1.rbegin()和rend()2.当然,也可以逆向思维一下。​^^3.用greater实现降序排列三:应用基本成员函数的代码【总结】有上述代码可以看出,插......