05hive函数

一世执手 提交于 2020-01-26 11:50:47

一. 系统内置函数

1)查看系统自带的函数 hive> show functions;

2)显示自带的函数的用法 hive> desc function upper;

3)详细显示自带的函数的用法 hive> desc function extended upper;

二. 自定义函数

 

1.分类

 

1.1 用户自定义函数类别分为以下三种:

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

(2)UDAF(User-Defined Aggregation Function) 聚集函数,多进一出

       类似于:count/max/min

(3)UDTF(User-Defined Table-Generating Functions)一进多出

 如 lateral view explore()

1.2官方文档地址

https://cwiki.apache.org/confluence/display/Hive/HivePlugins

1.3 编程步骤

(1)继承 org.apache.hadoop.hive.ql.UDF

(2)需要实现 evaluate 函数;evaluate 函数支持重载;

(3)在 hive 的命令行窗口创建函数

a)添加 jar add jar linux_jar_path  

b)创建 function create [temporary] function [dbname.]function_name AS class_name;

(4)在 hive 的命令行窗口删除函数

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

注意事项 :UDF 必须要有返回类型,可以返回 null,但是返回类型不能为 void;

2.自定义 UDF 函数

1)创建一个 Maven 工程 Hive

2)导入依赖

<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>

 

3)创建一个类

package com.atguigu.hive;

import org.apache.hadoop.hive.ql.exec.UDF;

 

public class Lower extends UDF {

 

      public String evaluate (String s) {

     if (s == null) {   

return null;  

}     

return s.toLowerCase(); 

}

}

 

4)打成 jar 包上传到服务器/opt/module/datas/udf.jar

5)将 jar 包添加到 hive 的 classpath hive (default)> add jar /opt/module/datas/udf.jar;

6)创建临时函数与开发好的 java class 关联

hive (default)> create temporary function mylower as "com.atguigu.hive.Lower";

7)即可在 hql 中使用自定义的函数

hive (default)> select ename, mylower(ename) lowername from emp;

3.自定义 UDTF 函数

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!