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);
    }
}
相关推荐
计算机编程小央姐5 小时前
【Spark+Hive+hadoop】基于spark+hadoop基于大数据的人口普查收入数据分析与可视化系统
大数据·hadoop·数据挖掘·数据分析·spark·课程设计
步行cgn13 小时前
HttpSessionBindingListener
java·开发语言·数据仓库·servlet
北冥SP14 小时前
etl介绍
数据仓库·etl
计算机毕设残哥15 小时前
【Spark+Hive+hadoop】人类健康生活方式数据分析
大数据·hive·hadoop·python·数据分析·spark·dash
Lx35217 小时前
Hadoop批流一体化处理:实时与离线作业融合
大数据·hadoop
心止水j20 小时前
hive的安装
数据仓库·hive·hadoop
忘了ʷºᵇₐ20 小时前
在hadoop中Job提交的流程
java·hadoop
IT研究室1 天前
大数据毕业设计选题推荐-基于大数据的农产品交易数据分析与可视化系统-Spark-Hadoop-Bigdata
大数据·hadoop·数据分析·spark·毕业设计·源码·bigdata
Dobby_051 天前
【Hadoop】HBase:构建于HDFS之上的分布式列式NoSQL数据库
大数据·hadoop·分布式·hbase
大数据CLUB1 天前
基于hive和mapreduce的地铁数据分析及可视化
大数据·hive·hadoop·分布式·数据分析·mapreduce