几个hvie常用函数

cast

cast(value as type)
# 将int类型的id转化为了String类型
cast(id as string)

cast将某个列的值显示的转化为某个类型,一般大类型转换为小类型才需要强制,因为是有数据溢出风险的。

concat

concat(string s1, string s2, string s3,...)
# 输出1-2
concat(1,"-",2)

concat和MySQL的concat函数一样,就是连接字符串,相当于Java的+

concat_ws

concat_ws(seperator, string s1, string s2,...)

concat_ws和MySQL的concat_ws函数一样,使用指定分隔符将多个字符串连接起来

collect_set

collect_set需和分组(group by)结合使用

collect_set把分组之后的数据,按分组做为可以,分组之后的值拼接为一个集合

例如有表idname:

id name
1  a
2  a
1  b

sql:

select id,collect_set(name) as cname from table_name group by id;

结果:

id  cname
1   [a,b]
2   [a]

collect_set和concat_ws一起使用,可以实现MySQL的group_concat功能:

select id,group_concat(name) as cname from idname group by id;

等价于hive:

select id,concat_ws(",",collect_set(name)) as cname from idname group by id;

collect_list

collect_list和collect_set基本相同,不过从名字也可以猜出一点不同来,那就是:collect_set会对分组之后的值去重,而collect_list不会。

12-06 22:50