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);
    }
}
相关推荐
APItesterCris4 小时前
告别人工盯品:借助 OpenClaw 搭建商品自动监控与数据分析系统(完整实操)
大数据·数据库·数据仓库·自动化
千里码aicood10 小时前
基于Hadoop的汽车销量分析与可视化
大数据·hadoop·分布式
AbnerWright1 天前
读书笔记-数据密集型应用系统设计
数据仓库
wxchyy2 天前
手把手教你入门云计算(二):这些技术改变了世界,你也能轻松掌握
hadoop·阿里云·docker·云原生·华为云·云计算·运维开发
BD_Marathon2 天前
Hadoop组成
大数据·hadoop·分布式
zgl_200537792 天前
源代码:跨数据库通用“字段级”数据血缘解析与图形化(2/3:标注信息的拆解、检验、保存)
大数据·数据库·数据仓库·sql·数据挖掘·etl·嵌入式实时数据库
邀星月为媒2 天前
正式迁移 Gitee:core-site-hive 与 core-hive-agent 后续更新只认这两个地址
hive·hadoop·gitee
BD_Marathon2 天前
Hadoop常用端口号
java·大数据·hadoop
fastjson_3 天前
Hive 复杂数据类型
数据仓库·hive·hadoop
爱吃面的猫3 天前
大数据Hadoop之——集群环境搭建(了解)
大数据·hadoop·flume