嵌套类型Array[struct]保存至Hive

以豆瓣电影:霸王别姬为例

豆瓣电影:霸王别姬

其主演存在多个,同时每个演员都有自己的id及name属性,而类型仅仅有name属性不包含id属性,
因此主演对应为Array[struct]类型,可表示为

[{"id":1003494,"name":"张国荣"},
{"id":1050265,"name":"张丰毅"},
{"id":1035641,"name":"巩俐"},
{"id":1000905,"name":"葛优"},
{"id":1011479,"name":"英达"}]

类型对应为Array类型,可表示为

["剧情","爱情","同性"]

生成数据文件,其内容为

1291546|霸王别姬|1003494$张国荣^1050265$张丰毅^1035641$巩俐^1000905$葛优^1011479$英达|剧情^爱情^同性

定义Hive表结构为

CREATE  TABLE o_douban(
doubanid         bigint,
title             string,
starring         array<struct<id:bigint,name:string>>,
genre             array<string>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
COLLECTION ITEMS TERMINATED BY '^'
MAP KEYS TERMINATED BY '$'

将数据文件load进hive表

LOAD DATA LOCAL INPATH '/home/admin/test/douban.txt' OVERWRITE INTO TABLE douban 

查询结果为

hive> select doubanid, title, editor,  genre  from o_douban 
    > where doubanid = 1291546;
1291546|
霸王别姬|
[{"id":1003494,"name":"张国荣"},
{"id":1050265,"name":"张丰毅"},
{"id":1035641,"name":"巩俐"},
{"id":1000905,"name":"葛优"},
{"id":1011479,"name":"英达"}]|
剧情^爱情^同性
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值