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);
    }
}
相关推荐
躺柒15 小时前
读数据架构知识体系指南01关系数据仓库(上)
数据仓库·架构·数据分析·spark·数据湖·关系数据库·企业数据仓库
卷毛迷你猪16 小时前
快速实验篇(A9-2)Python vs MapReduce:小批量任务的工具选择
大数据·hadoop
姜穆澜16 小时前
Apache Hive 4.x 完全学习指南
大数据·hive
Ahtacca2 天前
hadoop部署前置准备
hadoop
tianhuo0032 天前
从MySQL到Apache Doris:生鲜供应链数仓的ETL流水线与SARIMA需求预测全实
数据仓库·数据中台·零售行业供应链数字化
计算机源码社2 天前
基于K-Means聚类的新生儿败血症临床分型与可视化分析系统 基于数据挖掘的新生儿败血症生命体征时序走势与关联性可视化研究
大数据·hadoop·python·数据挖掘·数据分析·spark·毕业设计
SendTomo2 天前
.ico透明图标在线生成下载平台深度解析
大数据·数据结构·数据库·数据仓库·个人开发
计算机源码社3 天前
基于大数据的全球温室气体排放燃料结构与碳强度评估研究-基于Spark的全球温室气体排放多维度检测与评估分析
大数据·hadoop·python·数据挖掘·数据分析·spark·毕业设计
qingwufeiyang_5304 天前
IceBerg学习笔记2
数据仓库·数据湖
Q26433650234 天前
【有i源码】基于大数据的城市交通流量与出行特征可视化分析平台-基于Hadoop的城市交通拥堵关联规则与异常检测研究
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·数据可视化