hive —— struct 复合结构

本文详细介绍了在Hive中如何使用struct数据类型,包括在创建表时如何定义struct类型的字段,以及如何通过指定路径访问struct内部的数据。同时,文章还解释了在Hive中struct字段的访问语法和row format delimited的使用。

在建表时,遇到类型为struct的字段,直接定义为string获取不到,通过定义为struct获取到该字段的完整信息。
字段类型为:
这里写图片描述

struct内部的数据通过 DOT(.)来存储,比如:在表中有一列a 的类型为 struct{b string,c string},则我们可以通过指定a.b , a.c 来访问域b和c。
struct

hive>   create table test(id string, userAgent struct<browser:string,id:bigint,operatingSyatem:string>) row format delimited fields terminated by ',' collection items terminated by ':';

‘FIELDS TERMINATED BY’ :字段与字段之间的分隔符
”COLLECTION ITEMS TERMINATED BY’ :一个字段各个item的分隔符

### Hive Struct 类型使用指南 #### 结构定义 `STRUCT` 是一种复杂的数据类型,在Hive中用于表示结构化数据。这种类型的变量可以存储多个不同类型的字段,类似于其他编程语言中的结构体或类[^2]。 #### 字段访问方式 为了访问 `STRUCT` 中的具体成员,采用点号`.`操作符加上对应的字段名称的方式。例如对于一个名为 address 的 STRUCT 变量,如果它包含两个字符串类型的字段 street 和 city,则可以通过如下形式分别读取这两个字段的内容: ```sql address.street address.city ``` #### 创建含有 STRUCT 列表的表格 当创建一张新表并指定某列为 STRUCT 类型时,需按照特定格式声明其内部各子项及其对应的数据类型。下面是一个具体的例子说明如何定义这样的列: ```sql CREATE TABLE employees ( id INT, name STRING, contact_info STRUCT<phone:STRING,email:STRING> ); ``` 此命令建立了 employee 表格,并为其添加了一个叫作 contact_info 的 STRUCT 类型列,该列表含 phone 和 email 两项属性。 #### 插入带有 STRUCT 值的数据记录 向上述建立好的员工信息表里插入一条新的雇员资料时,可利用命名参数的形式给定 STRUCT 成分的实际数值: ```sql INSERT INTO employees VALUES (1,'Alice',named_struct('phone','123-4567','email','alice@example.com')); ``` 这里运用了 named_struct 函数来构建一个新的 STRUCT 实例作为 contact_info 属性的值。 #### 查询返回 STRUCT 数据的结果集 最后要从数据库检索出所有员工的名字连同他们各自的联系方式(即完整的 STRUCT 对象),只需简单地写出 SELECT 语句即可: ```sql SELECT e.name, e.contact_info FROM employees AS e; ``` 这会得到每条记录里的姓名以及整个联系信息对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值