【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:当数据具有固定的字段结构(如对象、嵌套对象),且需要通过字段名明确访问时使用。

相关推荐
skywalk81631 天前
hive 常驻集群:像 OSPF 一样在线,像 git 一样可信
运维·人工智能·hive
Francek Chen2 天前
【大数据处理与分析】数据仓库Hive:09 Hive 编程实践
大数据·数据仓库·hive·hadoop·sql
茶海棠5 天前
Hadoop+zookeeper+HBase+Kafka集群搭建全流程
hadoop·zookeeper·kafka·hbase
全栈陈序员5 天前
【Git】从入门到精通(二)—— Git安装与初次配置
数据仓库·git
skywalk81635 天前
卡不等于分支:我用 TRAE 宝配合 Hive 跑三张任务卡的一天
运维·人工智能·hive·trae
程序员梅雨5 天前
【从零开始学习数据仓库 | 第三篇】: Flume——数据采集基石
java·大数据·数据仓库·后端·学习·flume
freejackman6 天前
【架构篇】双遍历 + 多栈协同:手撸 SQL 血缘引擎的架构思考
java·大数据·数据库·hive·sql·架构·spark
陈年老古董6 天前
ClickHouse 单机搭建记录
hive·笔记·学习·clickhouse·硬件架构
Gl�ria6 天前
Hadoop 速刷:HDFS / MR / YARN / Spark / Hive
hadoop·hdfs·mr
陈年老古董6 天前
Spark 3.1.3 集群搭建 + Spark-SQL 整合 Hive 记录
hive·sql·spark