快捷搜索:  汽车  科技

hive主要包括了哪些数据类型:Hive中的数据类型以及案例实操

hive主要包括了哪些数据类型:Hive中的数据类型以及案例实操collection items terminated by '_' --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)row format delimited fields terminated by ' ' -- 列分隔符Map和Struct的区别: Struct中属性名是不变的!Map中key可以变化的!{ "name": "songsong" "friends": ["bingbing" "lili"] //列表Array "children": { //键值Map "xiao song": 18

作者: 孙晨c

出处:https://www.cnblogs.com/sunbr/p/13759189.html

基本数据类型

hive主要包括了哪些数据类型:Hive中的数据类型以及案例实操(1)

hive主要包括了哪些数据类型:Hive中的数据类型以及案例实操(2)

对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。

集合数据类型

hive主要包括了哪些数据类型:Hive中的数据类型以及案例实操(3)

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

Map和Struct的区别: Struct中属性名是不变的!Map中key可以变化的!

案例实操
  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" } }

  1. 基于上述数据结构,我们在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

注意: 在一个表中,array每个元素之间的分隔符和Map每个Entry之间的分隔符和struct每个属性之间的分隔符需要一致!

  1. 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'; -- 行分隔符

  1. 导入文本数据到测试表

hive (default)> load data local inpath ‘/opt/module/datas/test.txt’into table test

  1. 访问三种集合列里的数据,以下分别是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.076 seconds Fetched: 1 row(s)

作者: 孙晨c

出处:https://www.cnblogs.com/sunbr/p/13759189.html

猜您喜欢: