大数据之Hive:Hive函数之str_to_map函数
Posted 浊酒南街
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之Hive:Hive函数之str_to_map函数相关的知识,希望对你有一定的参考价值。
1.str_to_map函数
将字符类型数据,转化成map格式的数据
1.1:语法描述
STR_TO_MAP(VARCHAR text, VARCHAR listDelimiter, VARCHAR keyValueDelimiter)
1.2:功能描述
使用listDelimiter将text分隔成K-V对,然后使用keyValueDelimiter分隔每个K-V对,组装成MAP返回。默认listDelimiter为( ,),keyValueDelimiter为(=)。
1.3:案例
str_to_map('1001=2021-03-20,1002=2021-03-20', ',' , '=')
{"1001":"2021-03-20","1002":"2021-03-20"}
1.4:实战
创建数据
hive (gmall)>
drop table if exists stud;
create table stud (name string, grade string, course string, score int);
向原数据表中插入数据
hive (gmall)>
insert into table stud values('zhang3','优','math',88);
insert into table stud values('li4','良','math',72);
insert into table stud values('zhao6','差','math',44);
insert into table stud values('wang5','优','chinese',80);
insert into table stud values('zhao6','差','chinese',55);
insert into table stud values('tian7','良','chinese',75);
把同一分组的不同行的数据聚合成一个集合
hive (gmall)> select course, concat_ws(',',collect_set(concat(name,'=',grade))) , avg(score) from stud group by course;
chinese zhang3=优,li4=良,zhao6=差 68
math wang5=优,zhao6=差,tian7=良 70
hive (gmall)> select course, str_to_map(concat_ws(',',collect_set(concat(name,'=',grade))),',','=') , avg(score) from stud group by course;
chinese {zhang3:优,li4:良,zhao6:差 } 68
math { wang5:优,zhao6:差,tian7:良} 70
以上是关于大数据之Hive:Hive函数之str_to_map函数的主要内容,如果未能解决你的问题,请参考以下文章