hive常用的函数和udf开发

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.csdn.net/u013980127/article/details/52606024
1. row_number() over(partition by fields order by fields):
用于对返回的字段结果进行分组排序,并编号
hive常用的函数和udf开发_第1张图片
例如:

```
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;

你可能感兴趣的:(hive常用的函数和udf开发)