一、array数组类型
1、建表语句:
create table t1(f1 类型,...arrs array<类型>)
row format delimited
fields terminated by '\t' ----列之间的分隔符
collection items terminated by ','; ----数组arrs内元素分隔符(一般为逗号)
在limux下创建文件:
vim array
输入一些内容:
张三,男,12|13|14|15
李四,男,21|22|23|24
王五,女,31|32|33|34
建表语句:
create table t1(
name string,
sex string,
score array<int>)
row format delimited fields terminated by ','
collection items terminated by '|';
这里可以看到创建成功了
2、导入数据
load data local inpath '本地文件路径' overwrite into table t1;
load data local inpath '/root/aaa/array' overwrite into table t1;
3、显示数据
select * from t1;
这里可以看到,导入后的array类型变成了以逗号分割的类型
4、操作数组列arrs
(1)获取值 ---列名[下标] eg:arrs[1]
select score,score[0],score[1],score[2],score[3] from t1;
(2)查询元素个数 ---size(列名)
select *,size(arrs) from t1;
二、map集合类型
1、建表语句:
create table t2(f1 类型,...maps map<类型,类型>)
row format delimited
fields terminated by '\t' ----列之间的分隔符
collection items terminated by ',' ----键值对之间的分隔符(即键值对之间的分隔符,一般为逗号)
map keys terminated by '#' ----键值对内部的分隔符(即键与值之间的分隔符,一般为冒号)
在limux下创建文件:
vim map
输入一些内容:
张三,男,语文:90|数学:88|英语:91
李四,男,语文:94|数学:74|英语:77
王五,女,语文:81|数学:99|英语:85
创建表:
create table t2(
name string,
sex string,
score map<string,int>)
row format delimited fields terminated by ','
ollection items terminated by '|'
map keys terminated by ':';
2、导入数据
load data local inpath '本地文件路径' overwrite into table t2;
load data local inpath '/root/aaa/map' overwrite into table t2;
3、显示数据
select * from t2;
4、操作集合列maps
(1)获取值value ---列名['键名'] eg:maps['zhangsan'];
select score['语文'] from t2;
- 获取全部键名keys ---map_keys(列名) eg:select map_keys(maps) from t2;
select map_keys(score) from t2;
- 获取全部键名values ---map_values(列名) eg:select map_values(maps) from t2;
select map_values(score) from t2;
三、struct结构类型
1、建表语句:
create table t3(f1 类型,...structs struct<子列名1:类型,子列名2:类型,...>)
row format delimited
fields terminated by '\t' ----列之间的分隔符
collection items terminated by ':'; ----结构体内列名与类型之间的分隔符(一般为冒号)
在limux下创建文件:
vim struct
输入一些内容:
张三,男,88|91
李四,男,74|77
王五,女,99|85
创建表:
create table t3(
name string,
sex string,
score struct<math:int,english:int>)
row format delimited fields terminated by ','
collection items terminated by '|';
2、导入数据
load data local inpath '本地文件路径' overwrite into table t3;
load data local inpath '/root/aaa/struct' overwrite into table t3;
3、显示数据
select * from t3;
4、操作结构列structs
(1)获取值value ---列名.子列名 eg:structs.name;
select score.chinese from t3;
版权归原作者 Anagend 所有, 如有侵权,请联系我们删除。