hive复杂类型字段使用

1.带Array字段的hive表结构,并导入数据
1.1创建表结构
CREATE TABLE stu (
    id INT COMMENT 'stdno',
    NAME VARCHAR (32) COMMENT 'stdname',
    scores Array < INT > COMMENT 'std all scores'
) COMMENT 'student info' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
COLLECTION ITEMS TERMINATED BY ':' 
LINES TERMINATED BY '\n' 
STORED AS textfile;
1.2导入数据
1.2.1根据表结构,构造数据
linux上家目录中student.txt文件内容:
001    张一    80:82:88
002    张二    78:80:90
003    张三    81:74:92
004    张四    85:80:83
1.2.2导入数据
load data local inpath './student.txt' overwrite into table stu;




2.带Struct字段的hive表结构,并导入数据


2.1创建表结构
CREATE TABLE STU01 (
    ID INT,
    INFO STRUCT < NAME : STRING,AGE : INT >
) ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
COLLECTION ITEMS TERMINATED BY ':' 
LINES TERMINATED BY '\n' STORED AS textfile;
2.2导入数据
2.2.1根据表结构,构造数据
linux上家目录中stu01.txt文件内容:
001    张一:28
002    张二:29
003    张三:32
004    张四:19
2.2.2导入数据
load data local inpath './stu01.txt' overwrite into table stu01;




3.带Struct字段的hive表结构,并导入数据


3.1创建表结构
CREATE TABLE STU02(
    ID INT,
    INFO MAP<STRING,INT >
) ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n' STORED AS textfile;
3.2导入数据
3.2.1根据表结构,构造数据
linux上家目录中stu02.txt文件内容:
001    张一:28,张二:29,张三:26
002    李一:29,李二:32,李三:30
003    王一:30,王二:31,王三:32
004    赵一:28,赵二:33,赵三:34
3.2.2导入数据
load data local inpath './stu02.txt' overwrite into table stu02;
### Hive 创建复杂类型数据表的示例及语法 在Hive中,可以通过定义复杂的列类型来创建包含 `ARRAY`、`MAP` 或 `STRUCT` 类型的数据表。这些复杂数据类型允许用户存储更丰富的数据结构,并支持多层次嵌套。 #### 使用 ARRAY 数据类型的表 下面是一个使用 `ARRAY` 数据类型的例子: ```sql CREATE TABLE array_example ( id INT, name STRING, scores ARRAY<INT> -- 定义一个整数数组 ); ``` 在这个例子中,`scores` 是一个由整数组成的列表[^1]。 #### 使用 MAP 数据类型的表 下面是使用 `MAP` 数据类型的例子: ```sql CREATE TABLE map_example ( id INT, attributes MAP<STRING, STRING> -- 键值对映射,键和值都是字符串 ); ``` 这里,`attributes` 表示一组键值对,其中键和值均为字符串类型[^2]。 #### 使用 STRUCT 数据类型的表 对于需要组合多个字段的情况,可以使用 `STRUCT` 来实现: ```sql CREATE TABLE struct_example ( id INT, person STRUCT<name:STRING, age:INT, address:STRING> ); ``` 此表中的 `person` 字段包含了三个子字段:名字 (`name`)、年龄 (`age`) 和地址 (`address`)[^2]。 #### 组合多种复杂数据类型的表 还可以在一个表中同时使用多种复杂数据类型: ```sql CREATE TABLE complex_table ( user_id BIGINT, events ARRAY<STRUCT<event_time:TIMESTAMP, event_data:MAP<STRING, STRING>>>, tags MAP<STRING, ARRAY<STRING>> ); ``` 在此示例中: - `events` 是一个数组,每个元素为一个结构体,该结构体又包含时间戳以及另一个映射; - `tags` 是一个映射,其值本身也是一个字符串数组[^2]。 以上展示了如何利用不同的复杂数据类型构建灵活且功能强大的表格模型。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值