当前位置: 首页 > article >正文

Hive中自定义函数的使用

用java代码编写,继承UDF类即可

然后打包,导入hive中,再创建个函数名就能使用

hive: add jar '/路径/xxx.jar';
hive: create function 函数名 as '主类名';

以下用计算地球间两点的距离的为例

import org.apache.hadoop.hive.ql.exec.UDF;

public class CalculateLength extends UDF {
    /**
     * 地球半径
     */
    private static final double EARTH_RADIUS = 6378137;

    /**
     * 计算两个经纬度之间的距离
     *
     * @param longi1 经度1
     * @param lati1  纬度1
     * @param longi2 经度2
     * @param lati2  纬度2
     * @return 距离
     */
    public double evaluate(double longi1, double lati1, double longi2, double lati2) {
        double lat21 = lati1 * Math.PI / 180.0;
        double lat22 = lati2 * Math.PI / 180.0;
        double a = lat21 - lat22;
        double b = (longi1 - longi2) * Math.PI / 180.0;
        double sa2 = Math.sin(a / 2.0);
        double sb2 = Math.sin(b / 2.0);
        double d = 2 * EARTH_RADIUS * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat21) * Math.cos(lat22) * sb2 * sb2));
        return Math.abs(d);
    }
}


http://www.kler.cn/a/384815.html

相关文章:

  • 51c嵌入式~电路~合集14
  • 验证二叉搜索树
  • 【LeetCode】【算法】148. 排序链表
  • ArcGIS Pro SDK (二十五)工作流管理器
  • Hive 操作基础(进阶篇✌️)
  • Python-利用tkinter库编写一个exe伪恶意程序文件(下)
  • js-v-for 指令来循环展示数组中的数据,并在每条数据后添加一个删除按钮 items.splice(index, 1)
  • linux命令使用案例_将查找结果复制/移动到对应文件夹下
  • 项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
  • 《C++类型转换:四种类型转换的规定》
  • java反序列化学习之CommonCollections3利用链的学习
  • (一)NodeJS环境安装、创建第一个Vue应用
  • C++入门基础知识140—【关于C++ 类构造函数 析构函数】
  • C++练习题(3)
  • ZABBIX API获取监控服务器OS层信息
  • 信息流投放账户、广告位置与优势
  • C++ vector
  • 代码随想录算法训练营第三十六天|Day36 动态规划
  • 蛋奶烙饼:美味与温暖的邂逅
  • Java图片转word
  • Elasticsearch-linux环境部署
  • 跨境电商独立站怎么建?如何收款?
  • CDGA|治理、技术、运营三管齐下构建高效数据管理体系
  • 【Linux】冯诺依曼体系、再谈操作系统
  • 内网部署web项目,外网访问不了?只有局域网能访问!怎样解决?
  • C语言心型代码解析