Hive----炸裂、去重

表生成函数

行转列函数:explode()    (炸裂)

在hdp-3下新建表格t_stu_subject:

 >create table school.t_stu_subject(id int,name string,subjects array)
 >row format delimited fields terminated by ','
 > collection items terminated by ':';

在hdp-4中查看表格是否建好:

 show databases;

 use school;

 show tables;

表格中出现如下数据:

Hive----炸裂、去重_第1张图片

在hap-3中新建文件t_stu_subject并插入以下数据:

vi t_stu_subject
1,zhangsan,化学:物理:数学:语文
2,lisi,化学:数学:生物:生理:卫生
3,wangwu,化学:语文:英语:体育:生物

再把新建t_stu_subject的文件导入到新建的表格中:

load data local inpath '/root/t_stu_subject' into table school.t_stu_subject;

在hdp-4中查看数据是否插入:

select * from  t_stu_subject;

结果图如下:

Hive----炸裂、去重_第2张图片

使用explode()对数组字段“炸裂”

 select explode(subjects) from school.t_stu_subject;

结果图如下:

Hive----炸裂、去重_第3张图片

然后,我们利用这个explode的结果,来求去重的课程:

 select distinct tmp.sub from (select explode(subjects) as sub from t_stu_subject) tmp;

结果图如下:

Hive----炸裂、去重_第4张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Hive----炸裂、去重)