05hive函数

Posted yaopeiyun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05hive函数相关的知识,希望对你有一定的参考价值。

一. 系统内置函数

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

 技术图片

 

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

以上是关于05hive函数的主要内容,如果未能解决你的问题,请参考以下文章

图解 Google V8 # 05:函数表达式的底层工作机制

大数据之Hive:Hive中next_day函数

Hive--05---DML----查询基本语法

大数据之Hive:Hive 时间函数之to_date

getActivity() 在片段上返回 null?

2021-05-28-Hive-21(求取前10%的四种方法)