Hive的基本数据类型介绍

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

  1. 描述
    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)

猜你喜欢

转载自blog.csdn.net/Victory_Lei/article/details/103892684