zoukankan      html  css  js  c++  java
  • 使用eclipse编写UDF函数

    1.创建maven项目

    编写代码(代码实现的功能是将字符中的字母转换为特定的数字) 运行的结果是1410402

    public class CodeToNum extends UDF {
        public String evaluate(String s){
            String regex=".*[a-zA-Z]+.*";  
            Matcher m=Pattern.compile(regex).matcher(s);  
            if(m.matches()){
                String  s4=s.substring(0, 1);
                String  s5=s.substring(1, 2);
                String s_num_1=String.valueOf(s.substring(2,4));
                String  s6 = s.substring(4,5);
                String s_num_2 = String.valueOf(s.substring(5));
                
                int value_1 = Integer.valueOf(s4.toCharArray()[0]);
                int value_2 = Integer.valueOf(s5.toCharArray()[0]);
                int value_3 = Integer.valueOf(s6.toCharArray()[0]);
                String  s_last = String.valueOf(value_1-55)+String.valueOf(value_2-55)+s_num_1+String.valueOf(value_3-55)+s_num_2;
                return  s_last;
            }else{
                return s;
            }
        }
        public static void main(String[] args){
            System.out.print(new CodeToNum().evaluate("E80472"));
        }
    }

    2.利用assembly打jar包

    右击工程文件选择run as ->maven build...

     打成jar包后,rz上传jar包

    然后进入hive执行命令add  jar 路径下的jar包

    (1)创建临时函数的方法

    create temporary function say_hello as 'cn.zhangyu.HelloUdf';

    say_hello 函数的名字  自己随便定义

    cn.zhangyu.HelloUdf  包+类名

    临时定义的函数只对当前的session有效

    (2)创建永久函数的方法

    hdfs dfs -put   jar包的路径  hdfs路径

    进入hive

    执行  create function 库名.函数名   as 'cn.zhangyu.HelloUdf' using jar 'hdfs的路径'

    例如我的就是create function dw.codetonum as 'com.hjhn.func.CodeToNum' USING JAR 'hdfs:///tmp/udf/udf-1.0CodeToNum-SNAPSHOT..jar'

    注意点:如果udf函数使用的时候爆出invalid function  试着用beeline 进入hive

    然后!connect jdbc:hive2://node01:10000    输入用户名和密码

    接下来执行和hive相同的命令

    大功告成

  • 相关阅读:
    最高的牛
    激光炸弹(二维前缀和)
    汉诺塔问题
    费解的开关
    Hamilton路径(模板题)
    大臣的旅费【树型dp + 求树最长链】
    [蓝桥杯2018初赛]全球变暖
    操作集景
    [蓝桥杯2018初赛]倍数问题
    一些数学公式
  • 原文地址:https://www.cnblogs.com/yyfyl/p/15033309.html
Copyright © 2011-2022 走看看