当前位置:   article > 正文

Hive自定义函数

Hive自定义函数

前言

 想与你们共同学习,想与你们一起努力,想得到你们的支持与喜欢~

内置函数

  1. # 查看hive内置函数
  2. show functions;
  3. # 查看函数描述信息
  4. desc function max;

用户自定义函数UDF

UDF:user-defined function

操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。length('abc') = 3

 1. 用户自定义函数-UDF

导入依赖:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.hive</groupId>
  4. <artifactId>hive-exec</artifactId>
  5. <version>3.1.2</version>
  6. </dependency>
  7. </dependencies>

 2. 定义类

  1. # 1.定义一个类继承UDF
  2. 1. 必须继承UDF
  3. 2. 方法名必须是evaluate
  1. package function;
  2. import org.apache.hadoop.hive.ql.exec.UDF;
  3. public class HelloUDF extends UDF {
  4. public String evaluate(String s1){
  5. return "你好,"+s1;
  6. }
  7. }

 3. 配置maven打包环境,打包jar

  1. <properties>
  2. <!--解决编码的GBK的问题-->
  3. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  4. </properties>
  5. <build>
  6. <finalName>funcHello</finalName>
  7. </build>
  1. # 打包
  2. mvn package

3. jar包上传linux,导入到函数库中

 4. 在hive中执行命令

  1. # 在hive命令中执行
  2. add jar /opt/data/funcHello.jar; # hive session级别的添加,
  3. delete jar /opt/data/funcHello.jar; # 如果重写,记得删除。
  4. create temporary function hello as "function.HelloUDF"; # temporary是会话级别。
  5. # 删除导入的函数
  6. drop temporary function hello;

5. 查看函数并使用函数

  1. -- 1. 查看函数
  2. desc function hello;
  3. -- 2. 使用函数进行查询
  4. select hello(name) from t_person;

 永久函数和临时函数

  1. 临时函数和永久函数的区别:临时函数仅对当前session(黑窗口)有效。永久函数是全局的。
  2. 1. 临时函数
  3. 1.1 添加jar包的两种方法
  4. 方法一: add jar /home/hadoop/lib/hive-1.0-SNAPSHOT.jar;
  5. 方法二: 在hive的文件夹下面创建auxlib文件夹,将jar包上传到auxlib文件夹下面,重启hive。
  6. 1.2 创建临时函数
  7. 语法:CREATE TEMPORARY FUNCTION function_name AS class_name;
  8. function_name函数名
  9. class_name 类路径,包名+类名
  10. 1.3 删除临时函数
  11. 语法:DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
  12. 2. 永久函数
  13. 2.1 在HDFS上创建hivelib目录,将jar包上传到HDFS的hivelib目录下
  14. hdfs dfs -mkidr /hivelib
  15. hdfs dfs -put funcHello.jar /hive/lib
  16. 2.1 创建永久函数的语法:
  17. CREATE FUNCTION [db_name.]function_name AS class_name USING JAR 'hdfs://hadoop10:8020/hivelib/funcHello.jar'

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/620551
推荐阅读
相关标签
  

闽ICP备14008679号