Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。

案例实操

1) 假设某表有如下一行,我们用JSON格式来表示其数据结构。在Hive下访问的格式为

{"name": "songsong","friends": ["bingbing" , "lili"] ,       //列表Array, "children": {                      //键值Map,"xiao song": 18 ,"xiaoxiao song": 19}"address": {                      //结构Struct,"street": "hui long guan" ,"city": "beijing" }
}

2)基于上述数据结构,我们在Hive里创建对应的表,并导入数据。
创建本地测试文件test.txt

songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing

注意:MAP,STRUCT和ARRAY里的元素间关系都可以用同一个字符表示,这里用“_”。
3)Hive上创建测试表test

create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string, city:string>
)
row format delimited fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';

字段解释:

row format delimited fields terminated by ','  -- 列分隔符
collection items terminated by '_'    --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
map keys terminated by ':'                -- MAP中的key与value的分隔符
lines terminated by '\n';                 -- 行分隔符

4)导入文本数据到测试表

load data local inpath '/export/data/test' into table test;

5)访问三种集合列里的数据,以下分别是ARRAY,MAP,STRUCT的访问方式

hive (default)> select friends[1],children['xiao song'],address.city from test> where name="songsong";
OK
_c0 _c1 city
lili    18  beijing
Time taken: 0.108 seconds, Fetched: 1 row(s)

Hive集合数据类型(STRUCK,MAP,ARRAY)相关推荐

  1. hive复合数据类型之map

    概述 MAP:MAP包含key->value键值对,可以通过key来访问元素.比如"userlist"是一个map类型,其中username是key,password是val ...

  2. Hive 复杂数据类型之map

    定义格式如下: create table tableName( ....... colName map<T,T> ...... ) 案例准备: 测试数据如下 zhangsan chines ...

  3. hive 复杂数据类型 在数仓中应用(array、map、struct、和其组合应用)

    环境:一般宽表建表可能考虑存储更多信息选择复杂模型建设 复杂数据类型:array.map.struct 1.数组array,里边不能装不同类型的数据 more hive_array.txt zhang ...

  4. Go语言的复合数据类型struct,array,slice,map

    1.结构体 struct 定义格式: type 结构体名称 struct {属性1 类型属性2 类型... } 结构体的初始化可以使用new关键词和var关键词,不同的是如果使用new,则返回类型是一 ...

  5. Hive学习笔记 —— Hive的数据类型

    Hive本质上是一个数据库,可以创建表,表有列组成,而列支持的主要类型有:基本数据类型.复杂数据类型.时间数据类型. 1. Hive的数据类型之基本数据类型 tinyint/smallint/int/ ...

  6. 【hadoop生态之Hive】Hive的数据类型【笔记+代码】

    三.Hive数据类型 3.1 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符号整数 20 ...

  7. bigint hive java类型_三十、Hive的数据类型以及常用的属性配置

    上篇文章我们在服务器上部署了Hive并将它的Metastore存储在了MySQL上,本文介绍一下Hive的数据类型以及常用的一些属性配置.关注专栏<破茧成蝶--大数据篇>,查看更多相关的内 ...

  8. 三十、Hive的数据类型以及常用的属性配置

    上篇文章我们在服务器上部署了Hive并将它的Metastore存储在了MySQL上,本文介绍一下Hive的数据类型以及常用的一些属性配置.关注专栏<破茧成蝶--大数据篇>,查看更多相关的内 ...

  9. Hive中数据类型和隐式转换

    基本数据类型(能记住几个常用的就行) HIVE数据类型 Java数据类型 TINYINT byte SMALINT short INT int BIGINT long BOOLEAN boolean ...

  10. 【Hive】Hive的数据类型

    Hive中数据类型可以分为基本数据类型和复合数据类型.这些数据类型都是用Java实现的. 1. 基本数据类型 类型名称 描述 举例 boolean true/false true tinyint 1b ...

最新文章

  1. iphone清理缓存小技巧_那些不为人知的iPhone隐藏小技巧
  2. python+Eclipse+pydev环境搭建与入门
  3. 作为前端,你不得不知道的SEO
  4. 加密解密、Openssl、自建CA
  5. boost::planar_face_traversal用法的测试程序
  6. java并发编程之美-阅读记录1
  7. 从零学PyTorch:DataLoader构建高效的自定义数据集
  8. gridview使用ObjectDataSource做删除时记得设置DataKeyNames
  9. centos7安装Nginx 配置及反向代理
  10. volatile指令重排_学会了volatile,你变心了,我看到了
  11. Visual Studio 2005 提示“试图运行项目时出错:无法启动调试。绑定句柄无效”~[解决方案]...
  12. 一个域名对应多个IP地址
  13. STM32CubeMAX入门篇
  14. Markdown基础语法详细版
  15. vue在新的标签页打开pdf文件
  16. Star CCM+ 2206安装
  17. U盘容量变小实用解决方案
  18. 陆面生态水文模拟与多源遥感数据同化与Noah-MP模型
  19. web网页添加天气插件(心知天气)
  20. 实验三:凸包(输入点坐标计算凸包坐标)

热门文章

  1. 电脑钢琴模拟器(初学WINDOW库)
  2. Libgdx游戏编程之卡牌游戏UI布局
  3. LR11录制脚本无法弹出IE窗口的解决方案
  4. 如何让ie窗口显示到最前面
  5. column xxx is of type integer but expression is of type character varying。String的成员变量存到int的数据库列 报错
  6. 弗吉尼亚理工大学计算机科学,美国弗吉尼亚理工大学计算机科学本科.pdf
  7. 推广的euclid_问题引导的代数学: Euclid 空间 III
  8. python远程监控_Python实现远程端口监控实例
  9. 程序员需要了解的先秦文学
  10. kali2020.4安装中国版Firefox