【Hive】复杂数据类型

array

类型的定义 array<元素的类型>

创建对象:array(1,4,6,3)

取值

array对象[角标]

复制代码
select array(1,4,5,3)[2]

map

类型的定义: map<k的类型,v的类型>

创建对象:map(k1,v1,k2,v2)

取值

根据key获取value值:map对象['key']

复制代码
select map('name','lisi','age',20)['name']

获取所有的key:map_keys(map对象)

复制代码
select map_keys(map('name','lisi','age',20))

获取所有的value:map_values(map对象)

复制代码
select map_values(map('name','lisi','age',20))

struct

类型的定义:struct<属性名1:属性值的类型,属性名2:属性值的类型,.....>

创建对象

使用默认的属性名:struct(属性值1,属性值2,...)

自定义属性名:named_struct(属性名1,属性值1,属性名2,属性值2,.....)
select named_struct('name','lisi','age',20)

取值:struct对象.属性名

复制代码
select named_struct('name','lisi','age',20).age

select struct('lisi','male').col2

什么时候用map,什么时候用struct?

选 MAP:当数据是 "键值对" 形式,且键具有唯一性(如配置项、标签映射)时使用。

选 STRUCT:当数据具有固定的字段结构(如对象、嵌套对象),且需要通过字段名明确访问时使用。

相关推荐
q***31893 小时前
深入解析HDFS:定义、架构、原理、应用场景及常用命令
hadoop·hdfs·架构
isNotNullX7 小时前
怎么用数据仓库来进行数据治理?
大数据·数据库·数据仓库·数据治理
谅望者10 小时前
数据分析笔记01:数据分析概述
大数据·数据库·数据仓库·数据分析
尘世壹俗人10 小时前
分离Hadoop客户端单独使用
大数据·hadoop·分布式
BD_Marathon16 小时前
在 Linux 环境中配置 Eclipse 以开发 Hadoop 应用
java·hadoop·eclipse
CC-NX16 小时前
大数据安全技术实验:Hadoop环境部署
大数据·hadoop·分布式
q***76661 天前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
秃头菜狗1 天前
十八、在slave01节点上安装Hadoop
服务器·hadoop·eclipse