赞
踩
想与你们共同学习,想与你们一起努力,想得到你们的支持与喜欢~
- # 查看hive内置函数
- show functions;
-
- # 查看函数描述信息
- desc function max;
UDF:user-defined function
操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。length('abc') = 3
导入依赖:
-
- <dependencies>
- <dependency>
- <groupId>org.apache.hive</groupId>
- <artifactId>hive-exec</artifactId>
- <version>3.1.2</version>
- </dependency>
- </dependencies>
- # 1.定义一个类继承UDF
- 1. 必须继承UDF
- 2. 方法名必须是evaluate
- package function;
-
- import org.apache.hadoop.hive.ql.exec.UDF;
-
- public class HelloUDF extends UDF {
- public String evaluate(String s1){
- return "你好,"+s1;
- }
-
- }
- <properties>
- <!--解决编码的GBK的问题-->
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <build>
- <finalName>funcHello</finalName>
- </build>
- # 打包
- mvn package
- # 在hive命令中执行
- add jar /opt/data/funcHello.jar; # hive session级别的添加,
- delete jar /opt/data/funcHello.jar; # 如果重写,记得删除。
-
- create temporary function hello as "function.HelloUDF"; # temporary是会话级别。
- # 删除导入的函数
- drop temporary function hello;
- -- 1. 查看函数
- desc function hello;
- -- 2. 使用函数进行查询
- select hello(name) from t_person;
- 临时函数和永久函数的区别:临时函数仅对当前session(黑窗口)有效。永久函数是全局的。
-
- 1. 临时函数
- 1.1 添加jar包的两种方法
- 方法一: add jar /home/hadoop/lib/hive-1.0-SNAPSHOT.jar;
- 方法二: 在hive的文件夹下面创建auxlib文件夹,将jar包上传到auxlib文件夹下面,重启hive。
-
- 1.2 创建临时函数
- 语法:CREATE TEMPORARY FUNCTION function_name AS class_name;
- function_name函数名
- class_name 类路径,包名+类名
-
- 1.3 删除临时函数
- 语法:DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
-
- 2. 永久函数
- 2.1 在HDFS上创建hivelib目录,将jar包上传到HDFS的hivelib目录下
- hdfs dfs -mkidr /hivelib
- hdfs dfs -put funcHello.jar /hive/lib
- 2.1 创建永久函数的语法:
- CREATE FUNCTION [db_name.]function_name AS class_name USING JAR 'hdfs://hadoop10:8020/hivelib/funcHello.jar'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。