• 1)依据课程讲解UDF编程案例,完成练习,总结开发UDF步骤,代码贴图,给予注释,重点
  • 2)更改emp 表中名字的大写给为小写。

一:hive 的udf 函数:

1.1 hive UDF 函数概述:

1. hive自带了一些函数比如:max/min 等,但是由于自带的函数数量有限,自己可以定义udf来方便扩展。
2. udf 函数可以直接应用于select 语句,对查询结构做格式化处理之后,然后再输出内容。

1.2 hive 编写udf函数的时候需要注意的地方:

1. 自定义udf函数需要继承org.apache.hadoop.hive.ql.UDF
2. 需要实现evaluate 函数,evaluate 函数支持重载。
3. udf 必须要有返回类型,可以返回null,但是返回类型不能为void;
4. udf 常用Text/LongWrite 等类型,不推荐使用java类型。

1.3 hive 的udf 函数编写:

 1. 环境配置处理:更改repository源cd .m2/
mv repository repository.bak
上传新的repository.tar.gz 包。
tar -zxvf repository.tar.gz
备份原有setting.xml 文件
cp -p setting.xml setting.xml.bak
cd /home/hadoop/yangyang/maven/conf
cp -p setting.xml setting.xml

1.4 更改maven源的配置:

在setting.xml 中<mirrors> ....</mirrors> 之间增加新的源仓库:<mirror><id>nexus-osc</id><mirrorOf>central</mirrorOf><name>Nexus osc</name><url>http://maven.oschina.net/content/groups/public/</url></mirror>
拷贝新的setting文件到maven 的配置文件中
cp -p .m2/setting.xml /home/hadoop/yangyang/maven/conf

1.5 更改eclipse的pom.xml 文件增加:

在原有的<dependencies>....</dependencies> 之间加上hive 的参数:<dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>0.13.1</version></dependency><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>0.13.1</version></dependency>   </dependencies>

二: 更改emp 表中名字的大写给为小写。

2.1 新建UDF包 编写lowerudf.java

package org.apache.hadoop.udf;import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;/*** New UDF classes need to inherit from this UDF class.*/
public class LowerUDF extends UDF{/*** 1. Implement one or more methods named "evaluate" which will be called by Hive.* * 2. "evaluate" should never be a void method. However it can return "null" if needed.*/public Text evaluate(Text str){// input parameter validateif(null == str){return null ;}// validate if(StringUtils.isBlank(str.toString())){return null ;}// lower return new Text(str.toString().toLowerCase()) ;}public static void main(String[] args) {System.out.println(new LowerUDF().evaluate(new Text()));}}

2.2 导出jar包 到/home/hadoop/yangyang/hive/jars 下面:



2.3 执行lowerudf包 增加jar包与hive的关联:

add jar /home/hadoop/yangyang/hive/jars/lowerudf.jar
create temporary function my_lower as 'org.apache.hadoop.udf.LowerUDF' ;
show functions;



2.3.1 销毁临时的udf 函数:

drop temporary function add_example;
<!--这里指my_lower 函数-->

2.4 执行my_lower 函数:

select my_lower(ename) from emp;


转载于:https://blog.51cto.com/flyfish225/2097260

hive 的udf 函数使用相关推荐

  1. 如何写hive的udf函数?

    最近感受了hive的udf函数的强大威力了,不仅可以使用很多已经有的udf函数,还可以自己定义符合业务场景的udf函数,下面就说一下如何写udf/udaf/udtf函数,算是一个入门介绍吧. Firs ...

  2. 大数据hive篇--UDF函数

    什么是UDF: 它是User defined Function的简写,意思是用户自定义方法 为什么要用UDF? hive自带了一些函数,比如:max.min 等,但是自带的函数数量有限,所以hive提 ...

  3. hive最新UDF函数(2016-10-25)

    为什么80%的码农都做不了架构师?>>>    hive UDF函数 :(后期翻译,暂时先贴着,有兴趣来  http://apache.wiki 可以一起来翻译呀) https:// ...

  4. hive的UDF函数的使用。常见UDF函数

    UDF的话一般是hive提供的函数功能满足不了业务需要,我们就会自己来写UDF函数来辅助完成,对于我们常用的函数而言还是哪些常见的聚合函数,如:count.sum.avg.max.min等,其他的话就 ...

  5. Hive 自定义UDF函数讲解

    目录 一.UDF描述 二.UDF种类 三.自定义实现UDF和UDTF 3.1 需求 3.2 项目pom文件 3.3 Hive建表测试及数据 3.4UDF函数编写 3.5 UDTF函数编写 四:添加到h ...

  6. HIVE自定义UDF函数-经纬度转换成省市地址

    目录 1.需求背景 2.解决方案 3.代码pom引用 4.代码集成UDF 5.编译jar包 6.使用说明 7.将jar包放到hdfs 8.创建持久化function 9.测试 10.结语 1.需求背景 ...

  7. Hive 使用UDF函数对数据SM3加密

    最近在工作中需要对hive中某些数据进行SM3加密,在网上找了很久,遇到一些坑,在这里分享. 例:取姓名第一个汉字后接身份证号进行SM3加密. 1.SM3工具类 pom.xml: <!--sm3 ...

  8. hive添加udf函数

    1,临时函数 重启hive后函数失效 1)首先在hive中添加jar包 出现added就是成功了 hive (default)> add jar /opt/hiveudf2.jar ; Adde ...

  9. hive 解密_hive 中自定义 base64 加密 解密 UDF 函数

    一.maven依赖 org.apache.hadoop hadoop-client 2.7.3 org.apache.hive hive-exec 1.2.1 org.apache.maven.plu ...

最新文章

  1. VLC SDK在VS2010中的配置及简单使用举例
  2. amaze ui各个模块简单说明
  3. 官网下载mysql实例数据库
  4. 从十四五规划看 物联网(NB-IoT、Cat.1、5G)将何去何从?
  5. Android中的onActivityResult和setResult方法的使用
  6. oracle存储sql片段引入_强大的跨数据库访问组件 UniDAC使用教程:注释和SQL函数...
  7. php判断平年和闰年,平年和闰年的三种判断方法
  8. vue调用const_2020年Vue的这些面试题你会吗?
  9. 撰写MLA格式的毕业论文,需留意下边几个文件格式标准
  10. DES算法是对称算法吗,能否通过在线工具进行DES解密?
  11. python plc fx5u_三菱PLC FX5U CPU模块专用指令的处理内容
  12. html标签blockquote,HTML中的blockquote标签怎么用
  13. 动手实现对外安全的接口(写于天寒地冻的正月初九)
  14. 如何用MATLAB读取大文本文件
  15. 怎么把PDF文件转换成Word?三招教你轻松搞定
  16. Cannot find module ‘vite-plugin-compression‘ or its corresponding type declarations
  17. Codeforces 730A:Toda 2(multiset模拟)
  18. 半导体|台积电今年上半年营收达1016亿元 同比减少4.5%
  19. 批量定义方程组,用for循环,方程的数组建立,matlab,for循环也可批量定义函数
  20. Elasticserch 5.6到Elasticsearch7.11跨版本升级踩坑记录

热门文章

  1. shell实例第0讲:shell脚本完整pdf文档下载
  2. 数据结构:回溯--解决八皇后问题
  3. python三十七:xml模块
  4. DNS and Bind (一)
  5. python: 多线程实现的两种方式及让多条命令并发执行
  6. 复合索引使用的先决条件
  7. Linux系统的CPU使用率和Load
  8. 软件测试之三——路径覆盖
  9. NUC_HomeWork1 -- POJ1088(DP)
  10. 问题分析探讨 -- 大约有700W数据的表,把当天的10W数据select导入新表,整个原来的表就锁死...