Hive 实战

  1. 需求描述

统计硅谷影音视频网站的常规指标,各种 TopN 指标:

-- 统计视频观看数 Top10

-- 统计视频类别热度 Top10

-- 统计出视频观看数最高的 20 个视频的所属类别以及类别包含 Top20 视频的个数

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

-- 统计每个类别中的视频热度 Top10,以 Music 为例

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

-- 统计上传视频最多的用户 Top10 以及他们上传的视频观看次数在前 20 的视频


  1. 数据结构

1)视频表

视频表

字段

备注

详细描述

videoId

视频唯一 id(String)

11 位字符串

uploader

视频上传者(String)

上传视频的用户名 String

age

视频年龄(int)

视频在平台上的整数天

category

视频类别(Array<String>)

上传视频指定的视频分类

length

视频长度(Int)

整形数字标识的视频长度

views

观看次数(Int)

视频被浏览的次数

rate

视频评分(Double)

满分 5 分

Ratings

流量(Int)

视频的流量,整型数字

conments

评论数(Int)

一个视频的整数评论数

relatedId

相关视频 id(Array<String>)

相关视频的 id,最多 20 个

2)用户表

用户表

字段

备注

字段类型

uploader

上传者用户名

string

videos

上传视频数

int

friends

朋友数量

int

  1. 准备工作
  1. 准备表

1)需要准备的表

创建原始数据表:gulivideo_ori,gulivideo_user_ori, 创建最终表:gulivideo_orc,gulivideo_user_orc

2)创建原始数据表:

(1)gulivideo_ori

(2)创建原始数据表: gulivideo_user_ori

  1. 业务分析
  1. 统计视频观看数 Top10

思路:使用 order by 按照 views 字段做一个全局排序即可,同时我们设置只显示前 10

条。

最终代码:

hive top hive top1_hive top

hive top hive top1_ide_02

 

  1. 统计视频类别热度 Top10

hive top hive top1_数据仓库_03

 

  1. 统计出视频观看数最高的 20 个视频的所属类别以及类别包含
  1. Top20 视频的个数
    思路:

    (1)先找到观看数最高的 20 个视频所属条目的所有信息,降序排列
    (2)把这 20 条信息中的 category 分裂出来(列转行)
    (3)最后查询视频分类名称和该分类下有多少个 Top20 的视频最终代码:

  1. 统计视频观看数 Top50 所关联视频的所属类别排序
  1. 代码:
  1. 统计每个类别中的视频热度 Top10,以 Music 为例
  1. 思路:
  1. 统计每个类别视频观看数 Top10
  1. 最终代码

hive top hive top1_数据仓库_04

 

  1. 统计上传视频最多的用户Top10 以及他们上传的视频观看次数在前 20 的视频
  1. 思路:

    (1)求出上传视频最多的 10 个用户

    (2)关联 gulivideo_orc 表,求出这 10 个用户上传的所有的视频,按照观看数取前 20