我是靠谱客的博主 傲娇大门,最近开发中收集的这篇文章主要介绍hive-函数:自带和UDF一、自带二、自定义,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、自带

show functions
自带常用函数count,sum,max,min,avg,时间,trim,如果需要自定义,要用自定义的

二、自定义

https://blog.csdn.net/qq_32641659/article/details/89421696

note

{1} 自定义函数分3种

[1] UDF(User-Defined-Function) 一进一出

[2] UDAF(User- Defined Aggregation Funcation) 聚合函数,多进一出。count/max/min

[3] UDTF(User-Defined Table-Generating Functions); 一进多出,如split(),explode()

{2} UDF必须要有返回类型,可以返回null,但是返回类型不能为void

1. 创建UDF jar并上传到hdfs,hive的UDF分临时和永久,永久的必须上传到hdfs,临时的可以在某个节点的文件中

{1} 依赖

<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>

{2} 类

继承org.apache.hadoop.hive.ql.UDF
需要创建evaluate方法;这个方法不是实现也不是继承,但必须要有名字是evaluate的方法,evaluate支持重载;

package com.dc.hive;
import org.apache.hadoop.hive.ql.exec.UDF;
public class Lower extends UDF {
public String evaluate (final String s) {
if (s == null) {
return null;
}
return s.toLowerCase();
}
}

{3} 打成jar包上传到服务器任意位置,/opt/module/jars/udf.jar

2. 在hive的命令行窗口创建函数

{1} 添加jar

add jar /opt/module/datas/udf.jar;

{2} 创建临时函数与开发好的java class关联

create [temporary] function [dbname.]function_name AS class_name;

{3} 在hive的命令行窗口删除函数

[1] temporary只对当前窗口有效

Drop [temporary] function [if exists] [dbname.]function_name;

3. 此时即可在hql中使用自定义的函数

select ename, udf_lower(ename) lowername from emp;

4. 以上是创建临时函数,但实际中肯定用的是永久函数。

http://blog.itpub.net/29609890/viewspace-2157096/

最后

以上就是傲娇大门为你收集整理的hive-函数:自带和UDF一、自带二、自定义的全部内容,希望文章能够帮你解决hive-函数:自带和UDF一、自带二、自定义所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部