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

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

1。java程序的书写规范

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

 import java.util.ArrayList;
import org.apache.hadoop.hive.ql.exec.UDF; /**
* 样条插值法
* @author 91911
*/
public class SplineInterpolator extends UDF {
public double evaluate(ArrayList<String> x,ArrayList<String> y, double key) {
return new org.apache.commons.math3.analysis.interpolation.SplineInterpolator()
.interpolate(toArray(x),toArray(y))
.value(key);
} // String转Double
public double[] toArray(ArrayList<String> list) {
double[] array = new double[list.size()];
for(int i=0;i<list.size();i++){
array[i] = Double.valueOf(list.get(i));
}
return array;
}
}

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包执行成功;

样条函数后续(java)--可在hive中执行的函数的更多相关文章

  1. 在Hive中执行DDL之类的SQL语句时遇到的一个问题

    在Hive中执行DDL之类的SQL语句时遇到的一个问题 作者:天齐 遇到的问题如下: hive> create table ehr_base(id string); FAILED: Execut ...

  2. Hive中的用户自定义函数UDF

    Hive中的自定义函数允许用户扩展HiveQL,是一个非常强大的功能.Hive中具有多种类型的用户自定义函数.show functions命令可以列举出当前Hive会话中的所加载进来的函数,包括内置的 ...

  3. Hive中的用户自定义函数

    1.1 关于自定义函数 1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展. 2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考 ...

  4. eclipse 中执行 main 函数如何添加参数

    我们通常执行 main 函数都是直接在类界面 右键 选择 Run As --> Java Application 但是如何 执行时带有参数呢? 右键 --> Run As --> R ...

  5. a标签中执行js函数

    在a标签中调用js函数最适当的方法推荐使用: 1.a href="javascript:void(0);" onclick="js_method()" 这种方法 ...

  6. hive错误排查一:hive中执行 drop table命令卡住,删除表不成功

    起因 公司用的AWS EMR上的hive,突然不能删除表了. 经过 分析来看,估计是元数据那块出了问题.从元数据入手,元数据存在mysql的hive数据库中 直接使用hive配置文件hive-site ...

  7. hive中执行hql或建表语句时,抛出Display all 459 possibilities? (y or n)错误的解决方法

    我昨天在hive上建表,一直报Display all 459 possibilities? (y or n) ,之前我以为是建表语句有问题,一直在改语句,后来在网上搜这个错误,原来语句里混杂了Tab缩 ...

  8. hive元数据格式化 在hive中执行sql语句:SemanticException org.apache.hadoop.hive.ql.metadata.HiveException:

    https://blog.csdn.net/xiaoqiu_cr/article/details/80913437

  9. Java 在匿名内部函数中为外部函数变量赋值的解决方案

    Java匿名内部函数本人不怎么主动使用,但是经常会调用一些API,其中会调用一些接口,而这些接口是需要使用匿名内部类来实现的,于是就遇到了一些问题. 就比如okHttp3 的接口调用 OkHttpCl ...

随机推荐

  1. 嵌入式qt显示中文和隐藏鼠标

    最近项目快接近尾声了,要把项目移植到板子上,但是板子上的系统没有安装字库,导致中文无法显示,并且有一个很讨厌的鼠标光标(又没有鼠标),上网找了一些解决方案,记录一下 qt显示中文: 如果你急于在ARM ...

  2. [转帖]keepalived工作原理和配置、使用

    keepalived工作原理和配置.使用 https://www.iteye.com/blog/aoyouzi-2288124 keepalived是什么 keepalived是集群管理中保证集群高可 ...

  3. Ubuntu 中linux 编译错误的(-)

    1.错误 compress.c:14:58: fatal error: zlib.h: No such file or directorycompilation terminated. 解决:sudo ...

  4. go 疑难杂症

    func Test_doSeond(t *testing.T) { msg := make([]Msg, 0) for i := 0; i < 5; i++ { m := Msg{ data: ...

  5. React 了解学习

    1.nodejs安装程序https://nodejs.org/en/download/ create-react-app 类似 vs2017开发工具,集成了webpack 打包发布,loader和默认 ...

  6. C#使用共享内存与C++进行数据交互

    现在做桌面的不多了.前端太流行了,大家都去搞前端了. 需求如下: 上层UI使用C#开发,数据采集模块使用C++开发.数据采集模块采集到的数据比较大,上层需要接收这一块数据并显示 进程间通信的方式有多种 ...

  7. 《.NETer提高效率——环境部署》

    初衷 兵马未动,粮草先行. 电脑坏了or换工作等需要重装系统. 开发运维一把梭. 与时俱进. 记忆力差,需要文字记录. 因为懒... 目的 通过学习 Linux+docker+kubernetes+C ...

  8. git add提交时关于 LF will be replaced by CRLF in 问题出现的原因以及解决方式

    最近在新创建的github项目中add新框架代码时,出现了LF will be replaced by CRLF in的问题,以下为问题截图 查阅资料才知道,LF和FRLF是两种不同的换行格式,这个警 ...

  9. 空间数据索引RTree(R树)完全解析及Java实现

    第一部分 空间数据的背景介绍 空间数据的建模 基于实体的模型(基于对象)Entity-based models (or object based) 常用的空间数据查询方式 空间数据获取的方法 R树 简 ...

  10. tcp协议close_wait与time_wait状态含义

    题目描述 1.什么是三次握手,四次挥手?为什么分别要三次与四次? 2.tcp协议中,close_wait与time_wait状态分别代表什么含义,为什么要设计这两种状态,解决了什么问题? 3.time ...