hive - explode 用法以及练习

hive explode 的用法以及练习

一行变多行 explode

例如: 临时表 temp_table ,列名为1st

1st
1,2,3
4,5,6

变为

1

2

3

4

5

6

方式一:直接使用 explode

bash 复制代码
select   
 explode(split(1st,',')) 
 from temp_table;

方式二:使用 lateral view explode() 临时别名 as 列名

bash 复制代码
select  
  type
 from  temp_table
 lateral view explode(split(1st,','))  tmp as type;

练习:

数据库表名default.classinfo ,对应列分别是班级,姓名,成绩

class student score
1班 A,B,C 88,90,77
2班 D,E 80,92
3班 F,G,H 95,75,66

练习1:将姓名分开变为一行一个名字

bash 复制代码
select 
	class ,student_name
from
	default.classinfo
    lateral view explode(split(student,',')) t as student_name;

练习2:给每个同学一个编号,按姓名顺序,从1开始

使用 posexplode 函数

bash 复制代码
select 
	class,student_index +1 as stu_index,student_name
from
	default.classinfo
	lateral view posexplode(split(student,',')) t as student_index,student_name;

这里+1 是因为编号是从0开始的

练习3:使学生姓名与成绩进行匹配

注意:这里是对两列进行explode,会两两进行匹配,以1班为例,就是 3* 3=9 ,这显然是不对的,此时,就需要用到posexplode

,然后通过where 保留序号相同的行

bash 复制代码
select 
	class,stu_name,stu_score
from 
	defalult.classinfo
	lateral view posexplode(split(student,',')) sn as stu_n_index,stu_name
	lateral view posexplode(split(score,',')) ss as stu_s_index,stu_score
where
	stu_n_index - stu_s_index

练习4:对每个班的成绩进行排名

注意:

row_number(): 排序的字段值相同时序列号不会重复,如:1、2、(2)3、4、5(出现两个2,第二个2继续编号3)

rank() : 排序的字段值相同时序列号会重复且下一个序列号跳过重复位,如:1、2、2、4、5(出现两个2,跳过序号3,继续编号4)

dense_rank(): 排序的字段值相同时序列号会重复且下一个序列号继续序号自增,如:1、2、2、3、4(出现两个2,继续按照3编号)

这里我们使用rank()

bash 复制代码
select 
	class,
	stu_name,
	stu_score,
	rank() over(partition by class order by stu_score desc ) as stu_rank

from 
	default.classinfo
	lateral view posexplode(split(student,','))  sn as stu_n_index,stu_name
	lateral view posexplode(split(score,',')) ss as stu_s_index ,stu_score
where
	stu_n_index = stu_s_index
相关推荐
计算机编程指导师5 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
计算机编程指导师9 小时前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变
计算机编程指导师10 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的化妆品销售大数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·化妆品
计算机编程指导师10 小时前
计算机毕设选题推荐:Hadoop大数据下的个体肥胖健康风险评估与可视化系统源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·肥胖健康风险
计算机编程指导师10 小时前
Python大数据毕设怎么写?Django结合Hadoop+Spark京东销售分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·京东商品
计算机编程指导师12 小时前
大数据毕业设计推荐:Hadoop+Django全球碳排放减排策略分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·碳排放
计算机编程指导师12 小时前
Python大数据毕设怎么做?基于Hadoop+Spark的高频电力消耗数据可视化与分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·电力
计算机编程指导师13 小时前
【计算机毕设】基于Hadoop+Spark的美国互联网银行贷款数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·贷款
古法老登瞎折腾14 小时前
Hive 源码导读(三):都是 SELECT,为什么有的查询不需要 YARN?
数据仓库·hive·hadoop
计算机编程指导师16 小时前
计算机大数据项目推荐:基于Hadoop+Django的人工智能社交媒体情绪数据分析可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·社交媒体