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);
    }
}
相关推荐
sunxunyong6 小时前
hive 异常任务中间数据清理
数据仓库·hive·hadoop
FF_y9 小时前
Hive学习笔记
hive·笔记·学习
宝哥大数据11 小时前
数据仓库设计-分层
大数据·数据库·数据仓库
fanstuck13 小时前
如何优雅的在页面上嵌入AI-Agent人工智能
数据仓库·人工智能·知识图谱·gbi·智能bi
isNotNullX17 小时前
数据中台一键大解析!
大数据·数据库·数据仓库·信息可视化·数据中台
梦醒沉醉1 天前
Hadoop简介及单点伪分布式安装
hadoop
小_太_阳1 天前
hadoop_MapReduce详解
大数据·hadoop·mapreduce
cxzhq20021 天前
阿里云实时数据仓库Hologres&Flink
数据仓库·阿里云·flink