• 样条函数后续(java)--可在hive中执行的函数


    之前写的样条插值算法只能在本地执行,但是我想要的是可在hive中执行的jar包,为了符合我的要求,经过痛苦、气愤、悲伤等一系列过程,终于实现了;

    想要实现可在hive中执行的jar包,以下是具体步骤:

     1。java程序的书写规范

    2.java程序如下所示,输入三个参数,x,y,key; x,yArrayList<string>格式列表,key为double型的数。返回double型的数;

     1 import java.util.ArrayList;
     2 import org.apache.hadoop.hive.ql.exec.UDF;
     3 
     4 /**
     5  * 样条插值法
     6  * @author 91911
     7  */
     8 public class SplineInterpolator extends UDF {    
     9     public double evaluate(ArrayList<String> x,ArrayList<String> y, double key) {    
    10         return new org.apache.commons.math3.analysis.interpolation.SplineInterpolator()
    11             .interpolate(toArray(x),toArray(y))
    12             .value(key);
    13     }
    14 
    15     // String转Double
    16     public double[] toArray(ArrayList<String> list) {
    17         double[] array = new double[list.size()];
    18         for(int i=0;i<list.size();i++){
    19             array[i] = Double.valueOf(list.get(i));
    20         }
    21         return array;
    22     }    
    23 }

    3.将java包达成jar包

    File>Export>JAR file>选择jar包路径>完成

    选择jar包类型

     选择输出路径

    4.将打好的jar包上传至接口机(本地)

    5.在hive上新建一个测试表

    CREATE  TABLE `dim_ia_test_ysf1`(
      `x` array<string>,
      `y` array<string>)
    ROW FORMAT DELIMITED
      FIELDS TERMINATED BY '|'
      COLLECTION ITEMS TERMINATED BY ','
    STORED AS textfile;

    将数据导入即可

    6.测试jar包是否可用

    先添加jar包,将java路径(函数)命名为ytf,再使用ytf函数;

    add jar /data/all_ana_pro/yuanshufang/function/SplineInterpolatorImpl.jar;

    create temporary function ytf as 'com.SplineInterpolatorImplNew';

    set hive.limit.optimize.enable=true;

    set hive.fetch.task.conversion=more;

    select ytf(x,y,0.5) from dim_ia_test_ysf1;

    说明:add jar部分为jar包路径;

               ytf(x,y,z)—x,y为ArrayList<string>格式列表,z为double型数组,需要手动输入(因为新建的表只有x,y两列);

    以上就是完整的过程,从写程序到jar包执行成功;

  • 相关阅读:
    本地项目上传到github
    linux 常用命令
    mysql 查询日志基本操作
    js 短信60秒倒计时
    windows下 mysql 移库
    INSERT INTO table(xxx) VALUES (xxx)
    springboot 项目接口调用失败
    P1093 奖学金
    P1403约数研究
    P1147连续自然数和
  • 原文地址:https://www.cnblogs.com/xiao02fang/p/9719196.html
Copyright © 2020-2023  润新知