hive常用的函数和udf开发

本文介绍了Hive中的UDF开发,包括继承UDF类并重载evaluate方法。此外,还详细讲解了使用Python脚本进行transform开发以及Hive中的一些常见函数,如row_number()、datediff()、date_add()、date_sub()、条件函数、字符串函数等,为数据处理提供便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive的udf开发

继承udf这个类,方法重载evaluate

1. add jar /opt/udftest.jar
2. create temporary function 功能名as  “主类路径”;

使用python脚本transform开发:

1. add FILE weekday_mapper.py;
2. SELECT TRANSFORM (必须是所有的字段,或者*)USING ‘python 脚本’ AS (生成的字段名)FROM t_rating;
数据:
{"movie":"3664","rate":"4","timeStamp":"961685303","uid":"5225"}
新建一张表加载进去数据
create table temp(line string);
脚本:
#!/bin/python
import sys
import datetime
import json
for line in sys.stdin:
        if line!='\n':
                result=json.loads(line.strip())
                movie=result['movie']
                rate=result['rate']
                uid=result['uid']
                weekday =datetime.datetime.fromtimestamp(float(result['timeStamp'])).isoweekday()
                print('\t'.join([movie,rate,str(weekday),uid]))
使用脚本:
add FILE weekday.py;
select transform (line) using 'python weekday.py' as (movie,rate,wek,id) from temp;

常用的函数:

可以参考:https://blog.youkuaiyun.com/u013980127/article/details/52606024
1. row_number() over(partition by fields order by fields):
用于对返回的字段结果进行分组排序,并编号
在这里插入图片描述
例如:

```
select id,name,dt,rank from (select id,name,dt,row_number() over(partition by country order by dt) as rank from person) as tmp where tmp.rank<3;
```
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190514153419541.png)

2. 日期函数:
日期比较函数 : datediff

语法: datediff(string enddate, string startdate)

返回值: int

说明: 返回结束日期减去开始日期的天数。

举例:

hive> select datediff(‘2012-12-08’,‘2012-05-09’) from dual;

213

日期增加函数 : date_add

语法: date_add(string startdate, int days)

返回值: string

说明: 返回开始日期startdate增加days天后的日期。

举例:

hive> select date_add(‘2012-12-08’,10) from dual;

2012-12-18

日期减少函数 : date_sub

语法: date_sub (string startdate, int days)

返回值: string

说明: 返回开始日期startdate减少days天后的日期。

举例:

hive> select date_sub(‘2012-12-08’,10) from dual;

2012-11-28
3. 条件函数
case when then end

select *,
case 
when salary < 5000 then "低等收入" 
when salary>= 5000 and salary < 10000 then "中等收入"
when salary > 10000 then "高等收入"  
end  as level,
case sex
when "female" then 1 
when "male" then 0
end as flag 
from employee

4.字符串函数:

  • 字符串长度函数:length
  • 字符串反转函数:reverse
  • 字符串连接函数:concat
  • 带分隔符字符串连接函数:concat_ws
  • 字符串截取函数:substr,substring
  • 字符串截取函数:substr,substring
  • 字符串转大写函数:upper,ucase
  • 字符串转小写函数:lower,lcase
  • 去空格函数:trim
  • 左边去空格函数:ltrim
  • 右边去空格函数:rtrim
  • 正则表达式替换函数:regexp_replace
  • 正则表达式解析函数:regexp_extract
  • URL解析函数:parse_url
  • json解析函数:get_json_object
  • 空格字符串函数:space
  • 重复字符串函数:repeat
  • 首字符ascii函数:ascii
  • 左补足函数:lpad
  • 右补足函数:rpad
  • 分割字符串函数: split
  • 集合查找函数: find_in_set
  • 字符串长度函数: length
    语法: length(string A)
    返回值: int
    说明:返回字符串A的长度
    举例:
    hive> select length(‘abcedfg’) from dual;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值