Hive实战练习(包含数据集)

数据集直链下载(100MB): https://www.123pan.com/s/T1n0Vv-mTc3d

1.0数据说明

image-20221109114947135

image-20221109115013956

2.0建表

1.创建数据库

create database db_exercise;

2.切换到数据库

use db_exercise;

3.创建原始数据表:gulivideo,gulivideo_user

create table gulivideo_ori(
    videoid string,
    uploader string,
    age int,
    category array<string>,
    length int,
    views int,
    rate float,
    ratings int,
    comments int,
    relatedId array<string>)
row format delimited fields terminated by "\t"
collection items terminated by "&";
create table gulivideo_user(
 uploader string,
 videos int,
 friends int)
row format delimited
fields terminated by "\t";

4.上传数据到hdfs

hdfs dfs -put data/user/user.txt   /user/hive/warehouse/db_exercise.db/gulivideo_ori
hdfs dfs -put data/video/*   /user/hive/warehouse/db_exercise.db/gulivideo_ori

3.0实战练习

3.1统计视频观看数 Top10

select videoid,views
from gulivideo_ori
order by views desc
limit 10;

3.2统计视频类别热度 Top10

(1)即统计每个类别有多少个视频,显示出包含视频最多的前 10 个类别。

(2)我们需要按照类别 group by 聚合,然后 count 组内的 videoId 个数即可。

(3)因为当前表结构为:一个视频对应一个或多个类别。所以如果要 group by 类别,需要先将类别进行列转行(展开),然后再进行 count 即可。

(4)最后按照热度排序,显示前 10 条。

select t1.category_name,count(t1.videoId) hot
from(
    select videoid,category_name
    from gulivideo_ori lateral view explode(category)  gulivideo_orc_tmp AS category_name
    )t1
group by t1.category_name
order by hot desc
limit 10;

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

(1)先找到观看数最高的 20 个视频所属条目的所有信息,降序排列

(2)把这 20 条信息中的 category 分裂出来(列转行)

(3)最后查询视频分类名称和该分类下有多少个 Top20 的视频

select
    t2.category_name,
    COUNT(t2.videoid) video_sum
from(
        select
           t1.videoid,
           category_name
        from (
             select videoid,views,category
             from gulivideo_ori
             order by views desc
             limit 20
             )t1
        lateral VIEW explode(t1.category) t1_tmp AS category_name
        )t2
GROUP BY t2.category_name;

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

(1)要想统计 Music 类别中的视频热度 Top10,需要先找到 Music 类别,那么就需要将category 展开,所以可以创建一张表用于存放 categoryId 展开的数据。

(2)向 category 展开的表中插入数据。

(3)统计对应类别(Music)中的视频热度。

SELECT
 t1.videoid,
 t1.views,
 t1.category_name
FROM
    (
    SELECT
     videoId,
     views,
     category_name
    FROM gulivideo_ori
    lateral VIEW explode(category) gulivideo_orc_tmp AS category_name
    )t1
WHERE
 t1.category_name = "Music"
ORDER BY
 t1.views
DESC
LIMIT 10;

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

SELECT
     t2.videoid,
     t2.views,
     t2.category_name,
     t2.rk
FROM
    (
    SELECT
         t1.videoid,
         t1.views,
         t1.category_name,
     rank() over(PARTITION BY t1.category_name ORDER BY t1.views DESC ) rk
    FROM
        (
        SELECT
             videoid,
             views,
             category_name
        FROM gulivideo_ori
        lateral VIEW explode(category) gulivideo_orc_tmp AS category_name
        )t1
    )t2
WHERE t2.rk <=10;

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

SELECT
 t2.videoid,
 t2.views,
 t2.uploader
FROM
    (
        SELECT
         uploader,
         videos
        FROM gulivideo_user
        ORDER BY videos DESC
        LIMIT 10
    ) t1
JOIN gulivideo_ori t2
ON t1.uploader = t2.uploader
ORDER BY t2.views DESC
LIMIT 20;

image-20221109135539287

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
林子雨是一家知名的大数据分析公司,他们为了提高数据分析的效率和准确性,自己开发了一个存储和处理大数据的平台,称为HiveHive是一个基于Hadoop的数据仓库工具,可以将结构化和半结构化的数据以类似于SQL的查询方式进行操作和管理。由于Hive的强大功能和广泛应用,很多人都想下载并使用林子雨的Hive数据集。林子雨公司为了方便用户,提供了以下几种方式进行Hive数据集的下载。 首先,用户可以直接访问林子雨公司的官方网站,在网站上注册账号并登录后,选择需要下载的Hive数据集,然后点击下载按钮即可。这种方式简单方便,适合不熟悉其他下载方式的用户。 其次,用户还可以通过林子雨公司提供的API接口进行Hive数据集的下载。用户需要先获取API密钥,然后使用该密钥调用API接口,指定需要下载的数据集和下载路径,即可将数据集下载到指定位置。这种方式适合开发人员或有一定编程经验的用户。 最后,用户还可以通过第三方数据下载平台下载林子雨的Hive数据集。这些平台通常提供了丰富的数据集资源和方便的下载方式,用户只需在平台上搜索并选择需要的Hive数据集,然后点击下载按钮即可。这种方式适合不想注册账号或不愿意使用API的用户。 综上所述,林子雨Hive数据集的下载方式有多种,用户可以根据自己的需求和实际情况选择最适合自己的方式进行下载。无论选择哪种方式,只要保持数据的合法性和依法使用,就能充分利用Hive数据集进行数据分析和应用开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fang GL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值