hive实战练习(包含数据集)(代码片段)

FangGL FangGL     2022-12-04     583

关键词:

文章目录

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

1.0数据说明

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;

numpy数据集练习(代码片段)

(1)安装scipy,numpy,sklearn包(2)从sklearn包自带的数据集中读出鸢尾花数据集data(3)查看data类型,包含哪些数据#加载numpy包importnumpy#加载sklearn包fromsklearn.datasetsimportload_iris#读出鸢尾花数据集datadata=load_iris()#查看data类型print(ty... 查看详情

numpy数据集练习(代码片段)

1.安装scipy,numpy,sklearn包2.从sklearn包自带的数据集中读出鸢尾花数据集data3.查看data类型,包含哪些数据#加载numpy包importnumpy#加载sklearn包fromsklearn.datasetsimportload_iris#读出鸢尾花数据集datadata=load_iris()#查看data类型print(type(data))#查... 查看详情

numpy数据集练习(代码片段)

从sklearn包自带的数据集中读出鸢尾花数据集datadata=iris[‘data‘]data    运行结果查看data类型,包含哪些数据 fromsklearn.datasetsimportload_irisiris=load_iris()iris.keys()  运行结果dict_keys([‘data‘,‘target‘,‘target_names‘,‘DESCR‘,... 查看详情

numpy数据集练习(代码片段)

 importnumpyfromsklearn.datasetsimportload_iris#从sklearn包自带的数据集中读出鸢尾花数据集datadata=load_iris()print(data)print(type(data))#查看data类型data.keys()#包含哪些数据#取出鸢尾花特征和鸢尾花类别数据,查看其形状及数据类型iris_feature=da... 查看详情

numpy练习(代码片段)

fromsklearn.datasetsimportload_irisimportnumpyasnpdata=load_iris()#从sklearn包自带的数据集中读出鸢尾花数据集data,并判断其数据类型print(data)print("类型:",type(data))print("包含数据:",data.keys())#查看data类型,包含哪些数据集iris_feature=data[‘ 查看详情

numpy数据集练习——鸢尾花数据集(代码片段)

#导包importnumpyasnp#从sklearn包自带的数据集中读出鸢尾花数据集datafromsklearn.datasetsimportload_irisdata=load_iris()#查看data类型,包含哪些数据print("数据类型:",type(data))print("数据类目:",data.keys())#取出鸢尾花特征和鸢尾花类别数据,查看... 查看详情

hive从入门到实战二(代码片段)

第4章DDL数据定义4.1创建数据库1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。hive (default)> create database db_hive;2)避免要创建的数据库已经存在错误,增加ifnotexists判断。(标准写法)hi... 查看详情

hive从入门到实战一(代码片段)

第1章Hive入门1.1什么是Hive  Hive:由Facebook开源用于解决海量结构化日志的数据统计(分析数据的框架)。  Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 &e... 查看详情

numpy练习(代码片段)

1.安装scipy,numpy,sklearn包2.从sklearn包自带的数据集中读出鸢尾花数据集data3.查看data类型,包含哪些数据4.取出鸢尾花特征和鸢尾花类别数据,查看其形状及数据类型5.取出所有花的花萼长度(cm)的数据6.取出所有花的花瓣长度(cm)+... 查看详情

hive实战(代码片段)

HiveWeb可视化phpHiveAdmin一:Hive的本质是什么?1,Hive是分布式数据仓库,同时又是查询引擎,所以SparkSQL取代只是Hive查询引擎,在企业实际生产环境下Hive+SparkSQL是目前最为经典的数据分析组合;2࿰... 查看详情

hive拉链表实战-sql模拟hive仓库拉链表实现(代码片段)

创建MySQL数据库创建MySQL数据库业务数据表录入2019-12-20日业务数据到业务型数据库中这里继续使用mysql,模仿hive数据仓库过程创建hive表首先创建ODS,ODS原始数据层和====业务数据库数据保持一致====&... 查看详情

练习题目及答案)(代码片段)

...5章所有知识点及答案)前置知识:一、数据库开发与实战专栏导学及数据库基础概念入门二、MySQL介绍及MySQL安装与配置三、MySQL数据库的基本操作四、MySQL存储引擎及数据类型五、数据导入与基本的SELECT语句一、数据库概述练... 查看详情

图像分类数据集练习(代码片段)

主要代码如下:importd2lzhasd2limportmatplotlib.pyplotaspltfrommxnet.gluonimportdataasgdataimportsysimporttimemnist_train=gdata.vision.FashionMNIST(train=True)mnist_test=gdata.vision.Fashio 查看详情

flink实战系列flink读取hive数据同步到kafka(代码片段)

Flink读取Hive数据同步到Kafka环境Flink1.15.0Hive2.3.4Hadoop2.9.0Kafka2.5.0添加依赖 <!--flinkhiveconnector--><dependency><groupId>org 查看详情

hive表的创建的操作与测试(代码片段)

Hive中创建表的三种方式,应用场景说明及练习截图内部表和外部表的区别,练习截图分区表的功能、创建,如何向分区表中加载数据、如何检索分区表中的数据,练习截图一:hiveHQL的表操作:1.1.1创建数据库:hive>createdatabasey... 查看详情

hive表的创建的操作与测试(代码片段)

Hive中创建表的三种方式,应用场景说明及练习截图内部表和外部表的区别,练习截图分区表的功能、创建,如何向分区表中加载数据、如何检索分区表中的数据,练习截图一:hiveHQL的表操作:1.1.1创建数据库:hive>createdatabasey... 查看详情

13hive的ddldml语法案例实战(代码片段)

1、Hive的DDL语法操作1.1、Hive数据库DDL操作(1)创建数据库createdatabasedb_hive2;`<br/>`或者`<br/>`createdatabaseifnotexistsdb_hive;数据库在HDFS上的默认存储路径/user/hive/warehouse/*.db(2)显示所有数据库showdatabases;(3)查询数据库showdat... 查看详情

大数据之hive:开窗实战(代码片段)

目录问题:如何取第二?解决方法一解决方法二问题:如何取第二?有一张学生表,有id,name,score,取出score的第二大值解决方法一使用row_number()over()开窗函数selectscorefrom(selectscore,row_number()over(orderbyscoredesc)rkfromst... 查看详情