Hive数据类型-集合类型(Array-Map-Struct)的尝试
2016-04-01 13:41
453 查看
Hive支持的数据类型分为基础数据类型和集合类型。
基础类型主要包括:tinyint,smalint,int,bigint,boolean,float,double,string,timestamp,ninary等。这些基础类型和其他关系型数据库中的基础数据类型差不多。
集合类型主要包括:array,map,struct等,hive的特性支持集合类型,这特性是关系型数据库所不支持的,利用好集合类型可以有效提升SQL的查询速率。
由于官方文件的实例中没有集合类型的例子,所以就自己尝试了。下面是3种集合类型的简单实现。
执行导入数据的命令,然后再查询该表就可以看到数据了。
新建一个文本文件,格式如下:【这是根据建表时的规格,准备导入表的数据格式】
执行导入数据的命令,然后再查询该表就可以看到数据了。
基础类型主要包括:tinyint,smalint,int,bigint,boolean,float,double,string,timestamp,ninary等。这些基础类型和其他关系型数据库中的基础数据类型差不多。
集合类型主要包括:array,map,struct等,hive的特性支持集合类型,这特性是关系型数据库所不支持的,利用好集合类型可以有效提升SQL的查询速率。
由于官方文件的实例中没有集合类型的例子,所以就自己尝试了。下面是3种集合类型的简单实现。
ARRAY类型的实现
先建一张表,建表脚本如下:create table t_person( id int, name string, likes array<string> ) row format delimited fields terminated by ',' collection items terminated by '_';新建一个文本文件,格式如下:【这是根据建表时的规格,准备导入表的数据格式】
1,王力宏,唱歌_钢琴_二胡_作曲_演戏_导演_书法
执行导入数据的命令,然后再查询该表就可以看到数据了。
load data local inpath 'Documents/hive/t_person.txt' into table t_person;查询一下试试看:【array的访问元素和java中是一样的,这里通过索引来访问】
select name,likes[1] as likes from t_person;
MAP类型的实现
先建一张表,建表脚本如下:create table t_person( id int, name string, tedia map<string,string> ) row format delimited fields terminated by ',' collection items terminated by '_' map keys terminated by ':';新建一个文本文件,格式如下:【这是根据建表时的规格,准备导入表的数据格式】
1,王力宏,性别:男_形象:非常健康执行导入数据的命令,然后再查询该表就可以看到数据了。
load data local inpath 'Documents/hive/t_person.txt' into table t_person;查询一下试试看:【map访问元素的方式是通过key】
select name,tedia['<span style="font-family: Arial, Helvetica, sans-serif;">性别</span><span style="font-family: Arial, Helvetica, sans-serif;">'] as xb from t_person;</span>
STRUCT类型的实现
先建一张表,建表脚本如下:create table t_person( id int, name string, address struct<city:string,street:string> ) row format delimited fields terminated by ',' collection items terminated by '_';
新建一个文本文件,格式如下:【这是根据建表时的规格,准备导入表的数据格式】
1,王力宏,台湾省_台北市
执行导入数据的命令,然后再查询该表就可以看到数据了。
load data local inpath 'Documents/hive/t_person.txt' into table t_person;查询一下试试看:【struct访问元素的方式是通过.符号】
select name,address.city as city<span style="font-family: Arial, Helvetica, sans-serif;"> from t_person;</span>
相关文章推荐
- LearnMVC5-AddAModel
- Integrating Apache Spark with PyCharm
- 红黑树、插入删除操作
- 改良程序的11技巧
- Python pandas insert list into a cell
- iOS开发-UI控件:动态改变UITableView中的Cell高度
- mac idea sbt工程打jar包
- Android 的 supportdesign
- linux上xls文件转db文件的方法
- java联系
- Java Enum and Android Intdef/Stringdef annotation
- Java(Android)开发人员最常犯的10个错误
- cocoapods安装
- 记2016腾讯 TST 校招面试经历,电面、笔试写代码、技术面、hr面,共5轮
- HDU 1054 最小定点覆盖
- Facebook开源项目
- 关于重载提取运算符'<<'在VC6.0环境下产生二义性(ambiguous)的解决办法
- 收藏的精华Python学习文章
- cocos2dx lua UI栈
- 用Javascript获取页面元素的位置