1.先创建一个尽量能包含所有复杂数据类型的表
CREATE TABLE employee_partitioned
(
name string,
work_place ARRAY<string>,
gender_age STRUCT<gender:string,age:int>,
skills_score MAP<string,int>,
depart_title MAP<STRING,ARRAY<STRING>>
)
PARTITIONED BY (Year INT, Month INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':';
2.准备对应数据类型的文件
vim emp.txt
bigdata|abc,abb|man,18|math:90|yanfa:yibu#erbu#sanbu#sibu
bigdata 第一个bigdata是string类型
abc,abb 第二个是数组类型,已经通过 COLLECTION ITEMS TERMINATED BY ',' 声明了数组的间隔
man,18 第三个就是struct 数据类型直接逗号间隔就可以
math:90 第四个map数据类型通过MAP KEYS TERMINATED BY ':' 声明了key和value的关联是冒号 :
yanfa:yibu#erbu#sanbu#sibu 第五个·是一个map嵌套数组数据类型的格式,嵌套内的数组数据类型默认是用#间隔 (目前不知道内嵌的数组怎么去改间隔)
3.执行导入语句:
load data local inpath 'emp.txt'
overwrite into table employee_partitioned partition(year='2020',Month='06');
4.查询出结果: