Hive必考面试题

笔者今年年初面试了很多个大数据开发岗位。今天整理了一点常用场景的hiveSQL,很可能就能在面试中帮到你。

场景一:分组求TopN

name

subject

score

张三

物理

66

张三

化学

89

李四

物理

90

李四

化学

88

王五

物理

79

王五

化学

60

                                                                                                                                       表-1

如表-1所示为三位同学的物理、化学成绩,现在需要求每一门科目中成绩排名前两名的同学。

可以通过如下HiveSQL查询:

select name, subject, score, rank from ( select name, subject, score, row_number() over(partition by subject order by score desc) rank from table_1 ) t1 where rank<=2;

输出结果如下:

name

subject

score

rank

李四

物理

90

1

王五

物理

79

2

张三

化学

89

1

李四

化学

88

2

                                                                                                                                           表-2

解析:row_number()函数基于over 分组 order by 排序,为每一行分组记录返回一个序号,该序号从1开始,依次递增。通过在语句中加入限制条件rank<=2来筛选具体筛选TopN

场景二:行转列/列转行

现在我们需要把表-1中的数据转换为如下形式:

name

physical

chemistry

张三

66

89

李四

90

88

王五

79

60

                                                                                                                                                      表-3

使用hive实现需求的话,如下所示:

select name, sum(case when item='物理' then score else 0 end) as physical , sum(case when item='化学' then score else 0 end) as chemistry , from table_1 group by name

往期精选▼

Spark性能调优之在实际项目中广播大变量

Spark Shuffle调优之调节map端内存缓冲与reduce端内存占比

Spark Shuffle调优之合并map端输出文件

Flink调优法则

5个Hadoop优化技巧

4个角度轻松理解 Flink中的Watermark

Flink中Checkpoint和Savepoint 的 3 个不同点

Flink实现固定时长或消息条数的触发器

Flink方案设计中的4大误区

使用 Broadcast State 的 4 个注意事项

3种Flink State Backend | 你该用哪个?

一文搞定 Flink 异步 I/O

Flink State 使用的4点建议

Flink在开发中的7点建议

转载是一种动力 分享是一种美德, 欢迎关注 大数据与数据仓库公众号, 回复 spark 领取资料

猜你喜欢

转载自blog.csdn.net/yscoder/article/details/110409605