当前位置: 首页 > news >正文

Hive:复杂数据类型之Map函数

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 之间的分隔符

 

http://www.lryc.cn/news/530224.html

相关文章:

  • R 字符串:深入理解与高效应用
  • 设计模式Python版 桥接模式
  • 记5(一元逻辑回归+线性分类器+多元逻辑回归
  • 【Python】第七弹---Python基础进阶:深入字典操作与文件处理技巧
  • Nginx 运维开发高频面试题详解
  • 下载OpenJDK
  • Web3.js详解
  • 学习串行通信
  • 【leetcode强化练习·二叉树】同时运用两种思维解题
  • Rank-analysis-1.2——一款基于LCU API的排位分析工具,大四学生独立开发
  • 什么是门控循环单元?
  • Google Chrome-便携增强版[解压即用]
  • 智慧园区综合管理系统如何实现多个维度的高效管理与安全风险控制
  • 【PyTorch】7.自动微分模块:开启神经网络 “进化之门” 的魔法钥匙
  • 从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
  • Mac M1 源码安装FFmpeg,开启enable-gpl 和 lib x264
  • 【Quest开发】手柄单手抓握和双手抓握物体切换
  • DB-GPT试用
  • ​《Ollama Python 库​》
  • Java的Integer缓存池
  • Ubuntu16.04编译安装Cartographer 1.0版本
  • Qt调用FFmpeg库实时播放UDP组播视频流
  • C# 类与对象详解
  • 【Elasticsearch 基础入门】Centos7下Elasticsearch 7.x安装与配置(单机)
  • 大模型本地部署使用方法(Ollama脚手架工具、FisherAI浏览器大模型插件、AnythingLLM大模型集成应用平台)
  • 【华为OD-E卷 - 报数游戏 100分(python、java、c++、js、c)】
  • 深入理解Spring框架:从基础到实践
  • 一觉醒来全球编码能力下降100000倍,新手小白的我决定科普C语言——函数
  • CentOS 上安装 Go (Golang)
  • 软件模拟I2C案例前提须知——EEPROM芯片之M24C02