大数据之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函数的主要内容,如果未能解决你的问题,请参考以下文章

大数据之Hive:Hive函数之str_to_map函数

大数据之Hive:Hive 开窗函数

大数据之Hive:Hive 时间函数之to_date

大数据之Hive:Hive 开窗函数

大数据之Hive:Hive日期处理函数之unix_timestamp

大数据之Hive:Hive中日期时间函数