Hive中自定义函数的使用

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

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

bash 复制代码
hive: add jar '/路径/xxx.jar';
hive: create function 函数名 as '主类名';

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

java 复制代码
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);
    }
}
相关推荐
yumgpkpm15 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
yumgpkpm1 天前
Acceldata ODP(Open Data Platform)3.3.6.4(RHEL9)保姆级完整安装手册
大数据·人工智能·hive·hadoop·kafka·hbase·cloudera
sunxunyong1 天前
hs2偶发连接失败问题处理
hadoop
陈年老古董2 天前
Hive 函数学习笔记(上):单行函数与炸裂函数
hive·笔记·学习
真上帝的左手2 天前
27. 数据产品-数据中台架构规划
数据仓库·架构·数据分析·数据中台
陈年老古董2 天前
Hive 分区表学习笔记:语法、操作、二级分区与动态分区
hive·笔记·学习
省钱兄--zs2 天前
24小时自助健身房系统软件开发实战:从架构设计到部署全指南
java·数据仓库·spring boot·系统架构·需求分析
计算机毕业编程指导师2 天前
大数据毕设选题推荐:基于Hadoop+Spark全球碳排放减排策略分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·碳排放减排
53488736abcdefg3 天前
Hive 入门&架构原理
hive·hadoop·架构
泡干脆面就番茄3 天前
Hadoop基础入门到实战:从Python理解MapReduce到HDFS架构与集群搭建
hadoop