Hive:复杂数据范例之Map函数, 展开数据>>explore爆炸函数,concat_ws字符 ...

打印 上一主题 下一主题

主题 987|帖子 987|积分 2963

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Map函数

是Hive里面的一种复杂数据范例, 用于存储键值对集合。Map中的键和值可以是基础范例或复合范例,这使得Map在处理需要关联存储信息的数据时非常有用。

界说map时,需声明2个属性: key 和 value , map中是 key + value 组成一个元素
   key-value,  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, 注意拼接分隔符,   使用concat函数, 在oracle中concat只能拼接2个字段, 在Hive中没有这个限定
  不适用collect_set函数和collect_list函数是由于collect只能用于单列的
  


第二步: 将全部属于同一个人的数据组合在一起, collect_list


   第三步  :  将数组变成一个字符串  concat_ws  concat_ws

   字符串拼接函数,用于将多个字符串使用指定的分隔符连接起来。它的全称是 "concatenate with separator",即带分隔符的字符串连接。  concat_ws 函数的第一个参数是分隔符,背面的参数是要连接的字符串。如果分隔符为 NULL,则返回 NULL。值为 NULL 的字符串将被跳过。   
    SEP分隔符自界说,可以不必是数组里的分隔符     
   
    第四步:将字符串转成map 使用函数str_to_map(text, delimiter1, delimiter2)
str_to_map(text, delimiter1, delimiter2)

   text  :是字符串     delimiter1  :多个键值对之间的分隔符     delimiter2  :  key  和  value  之间的分隔符     
  
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表