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);
    }
}
相关推荐
b***67641 小时前
深入解析HDFS:定义、架构、原理、应用场景及常用命令
hadoop·hdfs·架构
lisw052 小时前
社区数据仓库的可持续连接性!
大数据·数据仓库·人工智能·机器学习
howard20053 小时前
6.5 Hive查询优化:执行计划与性能初探
hive·性能优化·执行计划
大数据003 小时前
SCD缓慢变化维Type1-Type3
hive·scd
B站计算机毕业设计之家3 小时前
电商数据实战:python京东商品爬取与可视化系统 大数据 Hadoop spark 优秀项目(源码)✅
大数据·hadoop·python·机器学习·spark·echarts·推荐算法
p***43483 小时前
后端在消息系统中的顺序保证
数据库·数据仓库·docker
e***58233 小时前
【分布式】Hadoop完全分布式的搭建(零基础)
大数据·hadoop·分布式
en-route19 小时前
维度建模之星型模式(Star Schema)
数据仓库
en-route21 小时前
深入理解数据仓库架构:ODS、DWD、DWS 和 ADS 层的定义与应用
大数据·数据仓库
張萠飛1 天前
hive date_format函数有性能瓶颈,有个获取时区的逻辑影响性能,具体原因分析
数据仓库·hive·hadoop