美文网首页
【Hive学习笔记】Hive常见面试题

【Hive学习笔记】Hive常见面试题

作者: 不可能打工 | 来源:发表于2020-07-08 11:16 被阅读0次

场景一:分组求TopN

先看数据:

表-1

好像把小编的数学成绩暴露了,现在需要求每一门科目,成绩排名前两名的同学。

使用HiveSQL常用的方式为:

select
*
from
(select
item
,name
,score
,row_number() over(partition by item order by score desc) rank
from table
groupby item) a
where rank<=2;

输出结果为:


表-2

解析:row_number()函数基于over对象分组、排序的记过,为每一行分组记录返回一个序号,该序号从1开始,依次递增,遇到新组则重新从1开始。也就是说,该函数计算的值表示每组内部排序后的顺序编号。

然后在语句中加入限制条件rank<=2来筛选具体选取top几。从最终的结果可以看出,语文成绩考试前两名的同学分别是建国和小编、数学成绩排名前两名的同学分别是建国和狗剩。

场景二:行转列/列转行

数据如下:

表-3

现在需要转换为

表-4

使用hive实现需求的话,可以使用:

select

name,

sum(case when item=数学 then score end) as math,

sum(case when item=英语 then score end) as english,

from table

group by name

解析:首先写出select name from table group by name, 因为select后有几个字段,最终输出就是几个字段,所以我们需要把目标数据的”math”和“english”两个字段想办法得出来。

之后可以对item字段所有枚举的结果进行case when判断,将score填值进入,因为最后我们需要对name做一下聚合,需要明确的是一般选取字段一定要出现在groupby里面。

聚合函数可以不用,所以我们在外面套一层sum做聚合,这样得到sum的结果和单人得分结果是一致的,因为我们以name做了一遍聚合,而每个用户对一门课程只有一个成绩,所以这样就可以得到最终结果。

那么最后如果需要将“表-4”的内容转换为“表-3”的内容应该怎么做呢?

一种比较好的方式是这样:

select table_4.name,

a.item,

a.score

from table_4

lateral view explode(

str_to_map(concat('math=',math,'&english=',english),'&','=')

) a as item,score;

解析:首先使用str_to_map函数将math字段与english字段拼接后的结果转换为map类型,然后通过侧视图和explode函数将其爆炸开,给生成的临时侧视图一个名字,取名a并给列名取名为item,score,因为explode(map)爆炸的结果是每一个item为行,key为1列,value为1列,这样就恰好形成我们想要的结果。这个示例理解起来稍微有点难度,大家不熟悉这些函数的用法的话,可以首先熟悉一下。

相关文章

  • 无标题文章

    Hive 学习笔记 学习笔记 Hive 简介 Hive 是建立在 Hadoop 上的数据仓库基础构架,可以用来进行...

  • 【Hive学习笔记】Hive常见面试题

    场景一:分组求TopN 先看数据: 好像把小编的数学成绩暴露了,现在需要求每一门科目,成绩排名前两名的同学。 使用...

  • Hive 1.2.1 分区和分捅

    1. 借鉴 Hive学习笔记——Hive中的分桶Hive分区和分桶(0925)HIVE表索引,分区和分桶的区别 2...

  • 面试题汇总:Hive

    1.《大数据Hive 面试以及知识点》 2.《Hive学习之路 (十一)Hive的5个面试题》 3.《大数据工程师...

  • Hive编程指南笔记整理

    hive编程指南阅读笔记 1.基础操作 1.1.启动hive HIVE_HOME$ bin/hive 1.2.1....

  • Apache Hive Essentials笔记

    Apache Hive Essentials笔记 1.CASCADE Note: Note that Hive k...

  • Hive学习

    Hive学习 标签(空格分隔): Hadoop Hive 官网地址:https://hive.apache.org...

  • 大数据分析利器之hive(三)

    大数据分析利器之hive 一、课前准备 安装hive环境 掌握hive sql常见的DDL和DML操作 掌握hiv...

  • 大数据、python学习微信没有途径?

    我还是先给大家分享一些学习方法把! 1.Hive学习 Hive支持的数据类型 Hive数据的管理 Hive的查询 ...

  • Hive学习笔记

    本文是对Hive组件的学习的一个初步总结,包括如下章节的内容: Hive是什么 Hive安装 快速上手 Hive元...

网友评论

      本文标题:【Hive学习笔记】Hive常见面试题

      本文链接:https://www.haomeiwen.com/subject/dabqcktx.html