Hadoop3集群搭建之——hive添加自定义函数UDF
上篇:
下篇:
hive 提供的函数,总是不能很贴切的满足我们程序的需要,这时候就需要自定义hive的函数了
hive 函数,大概分为三种:
udf : 一行输入,一行输出
udtf : 一行输入,多行输出
udaf : 多行输入,一行输出,一般在group by中使用group by
不多说,直接开始编写。
1、UDF函数
我们的用户id,使用固定格式,如 000000001、000000002.。。。。。这样递增
在把用户每日数据,写入hbase的时候,设计row key 为:userid_yyyymmdd,这样有一个问题,由于hbase存储是以row key 递增的,
就会导致数据不均衡,随机读写命中率低(hbase读的时候,会吧row key附近的block块都读上来)。
然后,就需要把userid,翻转一下,如下:
。
。
。
基本这样,在使用hive算数据的时候,就把userid翻转一下,拼上当天的日期,rowkey 就出来了
下面开始编写revert 函数,代码上传到码云:https://gitee.com/SpringMoon-Venn/hivefunction
简单介绍一下:
hive function是个简单的java项目,只加载了两个jar包:hive-exec包和hadoop-common包
<!--hive 2.3. 最新不会用,退回旧版-->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.</version>
</dependency>
<!--hadoop common-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.0.</version>
<scope>provided</scope>
</dependency>
上具体代码:
public class RevertString extends UDF {
/**
* evalute function: use overload 可以重载,自动识别
* @param str
* @return
*/
public String evaluate(String str) {
// if string is null or ""
if(org.apache.commons.lang.StringUtils.isEmpty(str.trim())){
return "";
}
int len = str.length();
char[] chars = new char[len];
// revert string
for(int i=; i < len; i++){
chars[i] = str.charAt(len - i -);
}
return new String(chars).toString();
}
}
hive UDF函数,主要是继承UDF类,实现 evaluate方法,最后返回的即时转换后的字符串。
由于使用maven做项目管理,直接使用 mvn package,打包,jar包如下:

上传到服务器。
在 $HIVE_HOME/bin 创建.hiverc 文件
添加如下内容:
[hadoop@venn05 bin]$ more .hiverc
add jar /opt/hadoop/lib/hivefunction-1.0-SNAPSHOT.jar;
create temporary function revert_string as 'com.venn.udf.RevertString';
关闭hive client,重新打开,使用自定义函数:
hive>
> select revert_string(userid),userid from sqoop_test limit ;
OK
Hadoop3集群搭建之——hive添加自定义函数UDF的更多相关文章
- Hadoop3集群搭建之——hive添加自定义函数UDTF (一行输入,多行输出)
上篇: Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hive安装 Hadoo ...
- Hadoop3集群搭建之——hive添加自定义函数UDTF
上篇: Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hive安装 Hadoo ...
- Hadoop3集群搭建之——hive安装
Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hbase安装及简单操作 现在到 ...
- Hadoop3集群搭建之——hbase安装及简单操作
折腾了这么久,hbase终于装好了 ------------------------- 上篇: Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hado ...
- Hadoop3集群搭建之——配置ntp服务
上篇: Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 下篇: Hadoop3集群搭建之——hive安装 Hadoop3集群搭建之——hbase安装及简 ...
- Hadoop3集群搭建之——安装hadoop,配置环境
接上篇:Hadoop3集群搭建之——虚拟机安装 下篇:Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hive安装 Hadoop3集群搭建之——hbase安装及简单操作 上篇已 ...
- Hadoop3集群搭建之——虚拟机安装
现在做的项目是个大数据报表系统,刚开始的时候,负责做Java方面的接口(项目前端为独立的Java web 系统,后端也是Java web的系统,前后端系统通过接口传输数据),后来领导觉得大家需要多元化 ...
- 集群搭建之Hive配置要点
注意点: 在启动Hive 的时候要先启动Hadoop和MySQL服务. Mysql 和 Hive 搭建在 yan00机器上. part1:MySQL配置相关 安装和配置相关命令: Yum instal ...
- Hive2.1.1集群搭建
软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...
随机推荐
- 树形DP+RMQ+尺取法 hdu4123
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4123 参考博客:两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race ...
- 199. Binary Tree Right Side View (Tree, Stack)
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...
- linux命令学习之:du
du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 语法 du [选项][文件] 选项 -a或-all 显示目录中个 ...
- mysql怎么查看是否支持分区
mysql从5.1开始支持分区功能 查询命令如下: mysql> show plugins like '%partiotion%'; mysql> show variables like ...
- 半吊子的STM32 — SPI通信
全双工,同步串行通信. 一般需要三条线通信: MOSI 主设备发送,从设备接收 MISO 主设备接收,从设备发送 SCLK 时钟线 多设备时,多线选取从机: 传输过程中,主从机中的移位寄存器中数据相互 ...
- Centos7上安装docker及使用scrapy-splash
下载docker https://www.cnblogs.com/yufeng218/p/8370670.html 安装scrapy-splash https://www.cnblogs.com/ ...
- js call方法的使用
转自:js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg ...
- Win32消息循环机制等【转载】http://blog.csdn.net/u013777351/article/details/49522219
Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个 ...
- kali安全工具
http://www.kali.org.cn/ Kali linux下载安装 (27) kali linux是backtrack的最新代号,或者叫新版本的backtrack,欢迎下载使用. 908 / ...
- mount重新挂载为写模式
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system mount -o remount,rw -t rootfs rootfs /