Map函数
是Hive里面的一种复杂数据类型, 用于存储键值对集合。Map中的键和值可以是基础类型或复合类型,这使得Map在处理需要关联存储信息的数据时非常有用。
定义map时,需声明2个属性: key 和 value , map中是 key + value 组成一个元素
示例
数据准备
建表: 定义map的2个属性, key的数据类型是string, value的数据类型是int , 创建表的hql末尾除了定义行的分隔符,数组元素的分隔符外还需要定义key之间的分隔符(map中一个键值对是一个元素)
把数据从本地上传到HDFS
数据查询
查询map的具体元素时使用key下标, 比如chinese, math
展开数据
求每个人的总成绩: 把数据展开后group by
把动态数据写入map中
拼接数据caoncat>>分组形成数组group by 和 collect_list >>转换成字符串 concat_ws>>转换成map 使用 str_to_map
准备数据
使用concat函数, 在oracle中concat只能拼接2个字段, 在Hive中没有这个限制
不适用collect_set函数和collect_list函数是因为collect只能用于单列的
第二步: 将所有属于同一个人的数据组合在一起, collect_list
concat_ws
第四步:将字符串转成map 使用函数str_to_map(text, delimiter1, delimiter2)
str_to_map(text, delimiter1, delimiter2)