hive下UDF函数的使用
1、编写函数
- package com.example.hive.udf;
- import org.apache.hadoop.hive.ql.exec.UDF;
- import org.apache.hadoop.io.Text;
- public final class LowerCase extends UDF {
- public Text evaluate(final Text s) {
- if (s == null) { return null; }
- return new Text(s.toString().toLowerCase());
- }
- }
package com.example.hive.udf; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; public final class LowerCase extends UDF { public Text evaluate(final Text s) { if (s == null) { return null; } return new Text(s.toString().toLowerCase()); } }
2、用eclipse下的fatjar插件进行打包
先下载net.sf.fjep.fatjar_0.0.31.jar插件包,cp至eclipse/plugins目录下,重启eclipse,右击项目选Export,选择用fatjar导出(可以删掉没用的包,不然导出的jar包很大)
3、将导出的hiveudf.jar复制到hdfs上
hadoop fs -copyFromLocal hiveudf.jar hiveudf.jar
4、进入hive,添加jar,
add jar hdfs://localhost:9000/user/root/hiveudf.jar
5、创建一个临时函数
create temporary function my_lower as 'com.example.hive.udf.LowerCase';
6、调用
select LowerCase(name) from teacher;
注:这种方法只能添加临时的函数,每次重新进入hive的时候都要再执行4-6,要使得这个函数永久生效,要将其注册到hive的函数列表
添加函数文件$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLowerCase.java
修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java文件
import org.apache.hadoop.hive.ql.udf.UDFLowerCase;
registerUDF(“LowerCase”, UDFLowerCase.class,false);
(上面这个方法未测试成功)
为了避免每次都有add jar 可以设置hive的'辅助jar路径'
在hive-env.sh中 export HIVE_AUX_JARS_PATH=/home/ckl/workspace/mudf/mudf_fat.jar;
本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/3253373.html,如需转载请自行联系原作者。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
centos 6.6 hadoop 2.7.1 完全分布式安装部署
1.安装前,准备三台CENTOS 6.6系统的主机或虚机,并且关闭防火墙及selinux. 2.按如下表格配置IP地址,修改hosts文件及本机名 192.168.199.21hadoop21 Master 102.168.199.22hadoop22 Slave1 192.168.199.23hadoop23 Slave2 6.6hadoop2.7.1完全分布式安装部署" title="centos6.6hadoop2.7.1完全分布式安装部署" style="margin:0px;padding:0px;border:0px;list-style:none;" data-original="http://s14.sinaimg.cn/mw690/002nJwOegy6UlUhMq6xcd&690">同理修改Slave1,Slave2的IP地址,hosts文件及本机名。 3.安装ORACLE JDK 先卸载本机openJDK,使用rpm -qa|grep java查看,然后用rpm -e 卸载 从oracle网站找到最新JDK,我这选择了JDK8 http://www.ora...
- 下一篇
谈谈Spark与Spark-Streaming关系
spark程序是使用一个spark应用实例一次性对一批历史数据进行处理,spark streaming是将持续不断输入的数据流转换成多个batch分片,使用一批spark应用实例进行处理,侧重点在Steaming上面。我们常说的Spark-Streaming依赖了Spark Core的意思就是,实际计算的核心框架还是spark。我们还是上一张老生常谈的官方图: 从原理上看,我们将spark-streaming转变为传统的spark需要什么? 需要构建4个东西: 一个静态的 RDD DAG 的模板,来表示处理逻辑; 一个动态的工作控制器,将连续的 streaming data 切分数据片段,并按照模板复制出新的 RDD DAG 的实例,对数据片段进行处理; Receiver进行原始数据的产生和导入;Receiver将接收到的数据合并为数据块并存到内存或硬盘中,供后续batch RDD进行消费;对长时运行任务的保障,包括输入数据的失效后的重构,处理任务的失败后的重调。 至于上述过程具体怎么实现,我们会在spark-streaming源码分析的文章中一一解决。本文中图片文字来自于网络。 原文...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7设置SWAP分区,小内存服务器的救世主