Hive-扩展项目Youtube

1、需求描述

统计 Youtube 视频网站的常规指标,各种 TopN 指标:

--统计视频观看数 Top10

--统计视频类别热度 Top10

--统计视频观看数 Top20 所属类别包含这 Top20 视频的个数

--统计视频观看数 Top50 所关联视频的所属类别 Rank

--统计每个类别中的视频热度 Top10

--统计每个类别中视频流量 Top10

--统计上传视频最多的用户 Top10 以及他们上传的视频

--统计每个类别视频观看数 Top10

2、知识储备梳理

2.1、order by,sort by,distribute by,cluster by

背景表结构

在讲解中我们需要贯串一个 例子,所以需要设计一个情景,对应 还要有一个表结构和填充 数据。如下:有 3 个字段,分别为 personId 标识某一个人,company 标识一家公司名称, money 标识该公司每年盈利收入(单位:万元人民币)

建表导入数据:

1)、order by

hive 中的 order by 语句会对查询结果做一次全局排序,即,所有的 mapper 产生的结果都会 交给一个 reducer 去处理,无论数据量大小,job 任务只会启动一个 reducer,如果数据量巨 大,则会耗费大量的时间。

例如:按照 money 排序的例子:

2)、sort by

hive 中的 sort by 语句会对每一块局部数据进行局部排序,即,每一个 reducer 处理的数据都 是有序的,但是不能保证全局有序。

3)、distribute by

hive 中的 distribute by 一般要和 sort by 一起使用,即将某一块数据归给(distribute by)某一个 reducer 处理,然后在指定的 reducer 中进行 sort by 排序。distribute by 必须写在 sort by 之前。

例如:不同的人(personId)分为不同的组,每组按照 money 排序:

4)、cluster by

hive 中的 cluster by 在 distribute by 和 sort by 排序字段一致的情况下是等价的。同时,cluster by 指定的列只能是降序,即默认的 descend,而不能是 ascend。

例如:写一个等价于 distribute by 与 sort by 的例子:

等价于

2.2、行转列、列转行(UDAF 与 UDTF)

1)行转列(name、constellation、blood_type)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值