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);
    }
}
相关推荐
wuli玉shell1 小时前
内存、磁盘、CPU区别,Hadoop/Spark与哪个联系密切
hadoop·spark
IvanCodes3 小时前
一、数据仓库基石:核心理论、分层艺术与 ETL/ELT 之辨
大数据·数据仓库·hive·etl
SelectDB技术团队3 小时前
可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
大数据·数据仓库·clickhouse·elasticsearch·信息可视化·doris·半结构化
Microsoft Word16 小时前
Hadoop架构再探讨
大数据·hadoop·架构
吴爃16 小时前
了解Hadoop
大数据·hadoop·分布式
IvanCodes1 天前
七、Hadoop 历史追踪、数据安全阀与 MapReduce初体验
大数据·hadoop·hdfs·mapreduce·yarn
爱编程的王小美1 天前
本地MySQL连接hive
数据库·hive·mysql
麻芝汤圆1 天前
深入探索 Spark RDD 行动算子:功能解析与实战应用
大数据·hadoop·分布式·spark·mapreduce
widder_1 天前
大数据处理利器:Hadoop 入门指南
大数据·hadoop·分布式
chat2tomorrow2 天前
如何使用 QuickAPI 推动医院数据共享 —— 基于数据仓库场景的实践
大数据·数据仓库·人工智能·医院·sql2api