自定义UDF函数-按照固定长度分隔字符串.docx


立即下载 绵绵
2024-04-27
字符串 长度 函数 固定 start hive step jar String
18.7 KB

1. 问题引出
hive sql中提供了字符串分隔函数split,但是该函数并不能按照固定长度来分隔字符串。因此要想实现按照固定长度来分隔字符串,需要我们来自定义UDF函数来实现。
2. 整体思路
hive sql中提供的字符串分隔函数split可以按照指定的字符或者正则表达式来分隔字符串,因此我们可以将字符串按照固定的长度来添加指定的字符,之后就可以使用split函数来分隔该字符串以达到按照固定长度来分割字符串的目的。
3. 自定义函数代码
public String evaluate(String context, int step) {
if (context.length() return context;
}
StringBuilder sb = new StringBuilder();
int start = 0;
sb.append(context.substring(0, step));
start += step;
while(context.length()>=start+step) {
sb.append(","+ context.substring(start, start+step));
start += step;
}
if(context.length()>start) {
sb.append(","+ context.substring(start));
}
return sb.toString();
}
该函数要求输入一个字符串和int类型的指定长度,返回的结果就是该字符串按照固定长度添加英文逗号的结果字符串。
4. 实验
以下所有的代码都在hive客户端(命令行)中执行。
1. 将程序jar包上传至服务器,并在hive中创建临时函数
add jar /opt/cloudera/parcels/CDH/lib/hive/lib/change.jar;
create temporary function change as 'cn.baihe.wzq.change.Change';
上面两句话大家按照自己存放jar包的位置和类的完全限定名编写就行。
2. 调用自定义函数演示
hive> select change('123


/字符串/长度/函数/固定/start/hive/step/jar/String/ /字符串/长度/函数/固定/start/hive/step/jar/String/
-1 条回复
登录 后才能参与评论
-->