`

hive array、map、struct使用

    博客分类:
  • hive
阅读更多

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使用

建表:

[plain] view plaincopy
 
  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的分隔符 
导入数据:

[plain] view plaincopy
 
  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  

查询:

[plain] view plaincopy
 
  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使用
建表:

[plain] view plaincopy
 
  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  

导入数据:

[plain] view plaincopy
 
  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  

查询:

[plain] view plaincopy
 
  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使用
建表:

[plain] view plaincopy
 
  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分隔符

导入数据:

[plain] view plaincopy
 
  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;  

查询:

[plain] view plaincopy
 
  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>  

 

本文转自:http://blog.csdn.net/yfkiss/article/details/7842014

分享到:
评论

相关推荐

    0437-如何在Hive中使用Struct类型

    Hive中支持多种数据类型除了常用的TINYINT、SMALLINT、INT、BIGINT、BOOLEAN、FLOAT、DOUBLE、STRING、BINARY、TIMESTAMP、DECIMAL、DATE、VARCHAR、CHAR类型外,当然还包含一些复杂的数据类型(array、map、struct...

    hive复合类型使用

    列举了hive中的复合类型的使用,map array struct

    Hive使用手册Hive使用手册

    1 Hive 概念与连接使用: 2 2 Hive支持的数据类型: 2 2.1原子数据类型: 2 2.2复杂数据类型: 2 2.3 Hive类型转换: 3 3 Hive创建/删除数据库 3 3.1创建数据库: 3 3.2 删除数据库: 3 4 Hive 表相关语句 3 4.1 Hive ...

    hive的安装与使用

    hive的安装与使用过程,是你不敢相当于还能修复好的哈人家还能够充分股份都是

    hive级联求和

    级联求和的例子,通过这个例子可以掌握一类相同的报表级联求和的题目

    hive metastore java api使用

    使用 import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.ha

    hive源码分析

    hive 源码分析

    Hive - A Warehousing Solution Over a Map-Reduce.pdf

    Hadoop [3] is a popular open-source map-reduce im- plementation which is being used as an alternative to store and process extremely large data sets on commodity hard- ware. However, the map-reduce ...

    Hadoop集群搭建及Hive的安装与使用

    Hadoop集群搭建及Hive的安装与使用

    hive

    hive hive hive hive hive hive hive hive hive hive hive hive

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    云计算HIVE使用.docx

    云计算HIVE使用 云计算HIVE使用云计算HIVE使用云计算HIVE使用云计算HIVE使用云计算HIVE使用云计算HIVE使用云计算HIVE使用

    hive搭建及使用入门简介(内含PPT、各种表创建sql及hive搭建使用笔记)

    适用人群:hive学习童鞋,hive方面从业人员 从hive的搭建 到 hive的分区表/内部表/外部表/分桶等sql讲解

    presto和hive的使用区别

    Hive是把一个查询转化成多个MapReduce任务,然后一个接一个执行。执行的中间结果通过对磁盘的读写来同步。然而,Presto没有使用MapReduce,它是通过一个定制的查询和执行引擎来完成的。它的所有的查询处理是在内存中...

    hive影评案例.zip

    hive影评案例.zip

    分布式数据仓库Hive大全

    8. 使用HIVE注意点 43 8.1 字符集 43 8.2 压缩 43 8.3 count(distinct) 43 8.4 JOIN 43 8.5 DML操作 44 8.6 HAVING 44 8.7 子查询 44 8.8 Join中处理null值的语义区别 44 9. 优化与技巧 47 9.1 全排序 47 9.1.1 例1 ...

    Spark不能使用hive自定义函数.doc

    Spark不能使用hive自定义函数

    hive性能优化

    一个Hive查询生成多个map reduce job,一个map reduce job又有map,reduce,spill,shuffle,sort等多个阶段,所以针对hive查询的优化可以大致分为针对M/R中单个步骤的优化,针对M/R全局的优化,和针对整个查询(多M...

    Hive用户指南

    8. 使用HIVE注意点 43 8.1 字符集 43 8.2 压缩 43 8.3 count(distinct) 43 8.4 JOIN 43 8.5 DML操作 44 8.6 HAVING 44 8.7 子查询 44 8.8 Join中处理null值的语义区别 44 9. 优化与技巧 47 9.1 全排序 47 9.1.1 例1 ...

    毕业设计,采用Hadoop+Hive构建数据仓库,使用django+echarts构建前端web网站对业务指标进行可视化呈现

    毕业设计,采用Hadoop+Hive构建数据仓库,使用django+echarts构建前端web网站对业务指标进行可视化呈现 1. Hadoop+Hive构建数据仓库 2. django+echarts网站开发 3. 数据清洗,数据模型构建 毕业设计,采用Hadoop+...

Global site tag (gtag.js) - Google Analytics