函数: 正则匹配返回所有子串,并返回array
regexp_extract_all(字段: string, 正则: string, group: int),返回array: string,可用于一行转多行
代码地址:https://github.com/leeshuaichao/hive_functions
创建mvn项目
1 | xml复制代码<?xml version="1.0" encoding="UTF-8"?> |
编写UDTF类
1 | java复制代码package com.moxi.hive.udf.regexp; |
正则工具类
1 | java复制代码package com.moxi.hive.udf.utils; |
打包并上传到服务器测试
遇到的坑:
很久没有用maven打普通jar包了,maven把依赖打进来需要特殊处理,因此去掉了使用hutool工具类
创建临时函数
1 | bash复制代码# 添加jar包到当前窗口 |
测试临时函数
1 | hiveql复制代码select voice_num from ( |
删除临时函数
1 | hiveql复制代码drop temporary function regexp_extract_all; |
生成永久函数
把jar包上传到hdfs
1 | bash复制代码# 创建hdfs目录 |
创建永久函数
1 | hiveql复制代码create function data_mart.regexp_extract_all AS 'com.moxi.hive.udf.regexp.UdtfRegexpExtractAll' using jar 'hdfs:/lib/hive_udf-1.0-SNAPSHOT.jar'; |
测试
1 | hiveql复制代码select voice_num from ( |
本文转载自: 掘金