1、基本数据类型
2、Struct
1)描述
hive中的 struct 和c语言中的struct类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{first STRING, last STRING},那么第1个元素可以通过字段.first来引用。
2) 语法示例
struct()
a、创建表
hive (default)> create table student_test
> (
> id int,
> info struct<name:string,age:int>
> )
> row format delimited fields terminated by ','
> collection items terminated by ':';
OK
Time taken: 0.489 seconds
‘FIELDS TERMINATED BY’ :字段与字段之间的分隔符
'‘COLLECTION ITEMS TERMINATED BY’ :一个字段各个item的分隔符
b、准备数据
[admin@admin01 ~]$ mkdir data
[admin@admin01 ~]$ vi data/test01.txt
#添加数据 cat test01.txt
1,zhou:30
2,sun:21
3,li:80
4,wang:70
5,shang:50
c、导入数据
hive (default)> load data local inpath '/home/admin/data/test01.txt' into table default.student_test;
Loading data to table default.student_test
Table default.student_test stats: [numFiles=1, totalSize=48]
OK
Time taken: 1.549 seconds
d、按要求查询数据
hive (default)> select info.age from student_test;
OK
age
30
21
80
70
50
Time taken: 0.284 seconds, Fetched: 5 row(s)
3、Map
- 描述
MAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取最后一个元素
2)语法示例
map()
a、创建表
hive (default)> create table class_test
> (
> name string,
> student_id_list array<int>
> )
> row format delimited fields terminated by ','
> collection items terminated by ':';
OK
Time taken: 0.07 seconds
b、准备数据
[admin@admin01 ~]$ vi data/test02.txt
#添加数据 cat test02.txt
034,1:2:3:4
035,5:6
036,7:8:9:
037,10:11:100:1111:22222:888888
c、导入数据
hive (default)> load data local inpath '/home/admin/data/test02.txt' into table default.class_test;
Loading data to table default.class_test
Table default.class_test stats: [numFiles=1, totalSize=63]
OK
Time taken: 0.308 seconds
d、按要求查询数据
hive (default)> select student_id_list[3] from class_test;
OK
_c0
4
NULL
NULL
1111
Time taken: 0.104 seconds, Fetched: 4 row(s)
4、Array
1) 描述
数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第2个元素可以通过数组名[1]进行引用
2)语法示例
array()
a、创建表
hive (default)> create table employee
> (
> id string,
> perf map<string,int>
> )
> row format delimited fields terminated by '\t'
> collection items terminated by ','
> map keys terminated by ':';
OK
Time taken: 0.075 seconds
b、准备数据
[admin@admin01 ~]$ vi data/test03.txt
#添加数据 cat test03.txt
1 job:80,team:60,person:70
2 job:60,team:80
3 job:70,team:70,person:100
c、导入数据
hive (default)> load data local inpath '/home/admin/data/test03.txt' into table default.employee;
Loading data to table default.employee
Table default.employee stats: [numFiles=1, totalSize=72]
OK
Time taken: 0.244 seconds
d、按要求查询数据
hive (default)> select perf['person'] from employee;
OK
_c0
70
NULL
100
Time taken: 0.066 seconds, Fetched: 3 row(s)
hive (default)> select perf['person'] from employee where perf['person'] is not null;
OK
_c0
70
100
Time taken: 0.07 seconds, Fetched: 2 row(s)