hive提供了复合数据类型:
Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过c.a来访问域a
Maps(K-V对):访问指定域可以通过["指定域名称"]进行,例如,一个Map M包含了一个group-》gid的kv对,gid的值可以通过M['group']来获取
Arrays:array中的数据为相同类型,例如,假如array A中元素['a','b','c'],则A[1]的值为'b'

Struct使用

建表:

  1. hive> create table student_test(id INT, info struct<name:STRING, age:INT>)
  2. > ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
  3. > COLLECTION ITEMS TERMINATED BY ':';
  4. OK
  5. Time taken: 0.446 seconds

'FIELDS TERMINATED BY' :字段与字段之间的分隔符
''COLLECTION ITEMS TERMINATED BY' :一个字段各个item的分隔符 
导入数据:

  1. $ cat test5.txt
  2. 1,zhou:30
  3. 2,yan:30
  4. 3,chen:20
  5. 4,li:80
  6. hive> LOAD DATA LOCAL INPATH '/home/work/data/test5.txt' INTO TABLE student_test;
  7. Copying data from file:/home/work/data/test5.txt
  8. Copying file: file:/home/work/data/test5.txt
  9. Loading data to table default.student_test
  10. OK
  11. Time taken: 0.35 seconds

查询:

  1. hive> select info.age from student_test;
  2. Total MapReduce jobs = 1
  3. ......
  4. Total MapReduce CPU Time Spent: 490 msec
  5. OK
  6. 30
  7. 30
  8. 20
  9. 80
  10. Time taken: 21.677 seconds

Array使用
建表:

  1. hive> create table class_test(name string, student_id_list array<INT>)
  2. > ROW FORMAT DELIMITED
  3. > FIELDS TERMINATED BY ','
  4. > COLLECTION ITEMS TERMINATED BY ':';
  5. OK
  6. Time taken: 0.099 seconds

导入数据:

  1. $ cat test6.txt
  2. 034,1:2:3:4
  3. 035,5:6
  4. 036,7:8:9:10
  5. hive>  LOAD DATA LOCAL INPATH '/home/work/data/test6.txt' INTO TABLE class_test ;
  6. Copying data from file:/home/work/data/test6.txt
  7. Copying file: file:/home/work/data/test6.txt
  8. Loading data to table default.class_test
  9. OK
  10. Time taken: 0.198 seconds

查询:

  1. hive> select student_id_list[3] from class_test;
  2. Total MapReduce jobs = 1
  3. ......
  4. Total MapReduce CPU Time Spent: 480 msec
  5. OK
  6. 4
  7. NULL
  8. 10
  9. Time taken: 21.574 seconds

Map使用
建表:

  1. hive> create table employee(id string, perf map<string, int>)
  2. > ROW FORMAT DELIMITED
  3. > FIELDS TERMINATED BY '\t'
  4. > COLLECTION ITEMS TERMINATED BY ','
  5. > MAP KEYS TERMINATED BY ':';
  6. OK
  7. Time taken: 0.144 seconds

‘MAP KEYS TERMINATED BY’ :key value分隔符

导入数据:

  1. $ cat test7.txt
  2. 1       job:80,team:60,person:70
  3. 2       job:60,team:80
  4. 3       job:90,team:70,person:100
  5. hive>  LOAD DATA LOCAL INPATH '/home/work/data/test7.txt' INTO TABLE employee;

查询:

      1. hive> select perf['person'] from employee;
      2. Total MapReduce jobs = 1
      3. ......
      4. Total MapReduce CPU Time Spent: 460 msec
      5. OK
      6. 70
      7. NULL
      8. 100
      9. Time taken: 20.902 seconds
      10. hive> select perf['person'] from employee where perf['person'] is not null;
      11. Total MapReduce jobs = 1
      12. .......
      13. Total MapReduce CPU Time Spent: 610 msec
      14. OK
      15. 70
      16. 100
      17. Time taken: 21.989 seconds
      18. hive>
      19. <span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
      20. </span></span>

hive array、map、struct使用的更多相关文章

  1. hive复杂格式array,map,struct使用

    -- 创建数据库表,以array作为数据类型 drop table if exists person; create table person( name string ,work_locations ...

  2. Spark存储Parquet数据到Hive,对map、array、struct字段类型的处理

    利用Spark往Hive中存储parquet数据,针对一些复杂数据类型如map.array.struct的处理遇到的问题? 为了更好的说明导致问题的原因.现象以及解决方案,首先看下述示例: -- 创建 ...

  3. JavaScript Array map() 方法

    语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值index:可选.当期元素的索引值ar ...

  4. 数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);

    数组的方法 Array.map(); 栗子: var a=[1,2,,3]; var b=a.map( function(value){return value*value} ); alert(b); ...

  5. 兼容低版本JS的Array.map方法

    前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. ...

  6. Array.from();Object.keys();Array.map()

    Array.from():方法从一个类似数组或可迭代对象创建一个新的数组形式: const bar = ["a", "b", "c"]; A ...

  7. JavaScript 对象Array,Map,Set使用

    for(int i = 0 :i < 3 ;i++ ){ //[重点说三遍] 在说明每个对象的用法之前,首先说明 JavaScript 对象的使用一定要注意浏览器的兼容性问题!尤其是IE的版本! ...

  8. 快速数组对象取值与数组映射新数组--array.map

    array.map(callback,[ thisObject]); 1.map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组 a)array.map(()=>值); [1, ...

  9. JavaScript Array.map

    Array.prototype.map() History Edit This article is in need of a technical review. Table of Contents ...

  10. js array map() 函数的简单使用

    语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值 index:可选.当前元素的索引值 ...

随机推荐

  1. centos 安装git服务器,配置使用证书登录并你用hook实现代码自动部署

    安装git服务器先安装依赖软件:yum -y install gcc zlib-devel openssl-devel perl cpio expat-devel gettext-devel open ...

  2. .net core 在扩展中使用接口实例之IServiceProvider

    在.net core 2.0中,我们使用的对象实例大多数都是通过构造函数依赖注入进来的,但那是在一般的类中使用. 如果需要在静态/扩展类中使用某些服务类的对象实例,可以使用如下方式: 1.新建一个Se ...

  3. 服务器由于redis未授权访问漏洞被攻击

    昨天阿里云拦截到了一次异常登陆,改了密码后就没有管他, 今天阿里云给我发消息说我的服务器可能被黑客利用,存在恶意发包行为....... 不过我不打算只是单纯的重置系统,经过一系列的查找原因后,发现被攻 ...

  4. Windows server 2016 安装 TFS

    一:准备: 1.1下载TFS https://visualstudio.microsoft.com/zh-hans/tfs/ 1.2 下载SQL2017 http://msdn.itellyou.cn ...

  5. 201621123001 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集 异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出 ...

  6. h5页面嵌入android app时遇到的问题

    1.h5页面 通过 .css("transform") 或 .style.transform 获取 transform属性,并通过 split 方法解析 页面translateY ...

  7. mysql 数据库复制方法

    同一台MySQL服务器上复制数据库的方法 CREATE DATABASE `新库` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI; mysqld ...

  8. ISO-8859-1和GBK互转

    String slogn = "极简主义"; byte[] bytes = slogn.getBytes("GBK");// 编码:字符串变成字节数组 输入 参 ...

  9. Java的Annotation标签

    只需要简单的使用Java的Annotation标签即可将标准的Java方法发布成Web Service,但不是所有的Java类都可以发布成Web Service.Java类若要成为一个实现了Web S ...

  10. [link] 构建负载均衡服务器之一 负载均衡与集群详解

    一.什么是负载均衡 首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载, ...