文档章节

详解 HiveUDF 函数

o
 osc_zoa3moe9
发布于 2019/12/07 22:40
字数 399
阅读 23
收藏 0

精选30+云产品,助力企业轻松上云!>>>

更多精彩原创内容请关注:JavaInterview,欢迎 star,支持鼓励以下作者,万分感谢。

Hive 函数

相信大家对 Hive 都不陌生,那么大家肯定用过 Hive 里面各种各样的函数。可能大家都会使用这些函数,但是没有自己动手去写过 Hive 里面的函数。下面主要来介绍一下 Hive 里面的各种函数。

依赖

开发 Hive UDF 之前,我们需要引入一个 jar,这个 jar 就是 hive-exec,里面定义了各种我们自定义的 UDF 函数的类型:UDF、GenericUDF、GenericUDTF 等。


 <dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-exec</artifactId>
    <version>2.1.1</version>
 </dependency>

UDF(User-Defined-Function)

UDF:用户自定义函数,也是实现起来最简单的一种函数。支持的就是一进一出类型的函数。

如何实现?

具体代码实现:


@Description(
        name = "ip2loc",
        value = "_FUNC_(str) - covert ip to location",
        extended = "Example:\n" +
                "  > SELECT ip2loc(ip) FROM ips;\n" +
                "  [中国,上海]"
)
public class IPToLocation extends UDF {
    
    private static final InputStream stream = IPToLocation.class.getClassLoader().getResourceAsStream("ipipfree.ipdb");
    private static City db = null;

    static {
        try {
            db = new City(stream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 具体实现逻辑
    public ArrayList<String> evaluate(Text s) throws IOException, IPFormatException {
        ArrayList<String> allTexts = new ArrayList<>();
        if (s != null) {
            CityInfo info = db.findInfo(s.toString(), "CN");
            allTexts.add(info.getCountryName());
            allTexts.add(info.getRegionName());
            allTexts.add(info.getCityName());
        }
        return allTexts;
    }

}

@Description 为该 UDF 的描述,你可以通过命令 desc function ip2loc查看具体的描述;如下图: hive-udf-1.png

o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
hive自定义函数

hive写自定义函数很简单,只需要引入hive一两个jar包,同时将hive的将类继承udf类,在类中重写evaluate方法,evaluate方法可以写多个,每个参数不一样即多个不同的方法。代码如下: hiveUDF ...

cjun1990
2016/12/17
23
0
hive 学习系列四(用户自定义函数)

如果入参是简单的数据类型,直接继承UDF,实现一个或者多个evaluate 方法。 具体流程如下: 1,实现大写字符转换成小写字符的UDF 2,打包成jar 包。 建立maven 项目,使用maven 打包。 这里打...

unnunique
2018/06/12
0
0
Hive UDF函数测试

Hive UDF函数测试 1.UDF函数确定 根据SVN路径获取UDF函数代码,然后将需要调整的部分作出相应调整(eg:新增2020年工作日信息 修改对应的XML文件),重新使用maven install 命令打包为新的jar...

osc_1jvmu893
2019/12/30
0
0
利用eclipse编写自定义hive udf函数

eclipse编写自定义hive udf函数 在做日志分析的过程中,用到了hadoop框架中的hive,不过有些日志处理用hive中的函数处理显得力不从心,就需要用udf来进行扩展处理了 1 在eclipse中新建java ...

开拓者-2017
2014/07/05
51
0
006.利用eclipse编写自定义hive udf函数

eclipse编写自定义hive udf函数 在做日志分析的过程中,用到了hadoop框架中的hive,不过有些日志处理用hive中的函数处理显得力不从心,就需要用udf来进行扩展处理了 1 在eclipse中新建java ...

片刻
2014/05/18
3.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

智慧旅游背景下的景区新模式建设方案研讨

景区经营权管理方法实践、县域旅游基本模式以及智慧旅游一直是业内探究的关键。学术界对景区经营权出让探究比较多,如阎友兵探究了根据实物期权基础理论的景区经营权出让期限制度分配;郭淳凡...

osc_rezr8v4k
20分钟前
5
0
详解区块链是什么!KiBiEx加密货币交易所~

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块...

osc_3361hjxk
21分钟前
11
0
详解区块链是什么!KiBiEx加密货币交易所~

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块...

osc_3ytpwpyb
23分钟前
12
0
详解区块链是什么!KiBiEx加密货币交易所~

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块...

osc_x4ot1joy
25分钟前
9
0
如何强制gradle重新下载依赖项? - How can I force gradle to redownload dependencies?

问题: 如何告诉gradle从存储库重新下载依赖项? 解决方案: 参考一: https://stackoom.com/question/uute/如何强制gradle重新下载依赖项 参考二: https://oldbug.net/q/uute/How-can-I-fo...

fyin1314
28分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部