目标
select dev,str_to_map(concat_ws(',',collect_list(concat(A,':',B))),',',':') as map_k_v from table1 group by dev;
统计A中各类别出现次数
select key,count(*) from
(select explode(map_k_v) from table2) t
group by key;
有时需要将dev也带出来:
1、非分区表:
select dev,dekey,devalue from table2
LATERAL VIEW explode(map_k_v) dedView as dekey,devalue;
2、分区表:
select dev,dekey,devalue from
(select dev,map_k_v from table2 where partition='aaa') t
LATERAL VIEW explode(map_k_v) myView as dekey,devalue;