Hive(三、0)案例之视频网站常规指标@你宝爷
一、前期准备
1.0、打开集群&服务&客户端
#1)注释掉配置文件内容,这样就不用开启metastore服务啦
vim $HIVE_HOME/conf/hive-site.xml
#注释掉如下内容
<!--
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop11:9083</value>
</property>
-->
#2)启动hadoop集群
#3)启动hiveserver2服务
nohup hive --service hiveserver2 > /opt/logs/hiveserver2.log &
#或
nohup $HIVE_HOME/bin/hiveserver2 > /opt/logs/hiveserver2.log &
#4)打开datagrip软件,连接客户端服务
1.1、需求
统计影音视频网站的常规指标,各种TopN指标
-- 1)统计视频观看数Top10
-- 2)统计视频类别热度Top10(类别热度:类别下的总视频数)
-- 3)统计出视频观看数最高的20个视频的所属类别以及类别包含Top20视频的个数
-- 4)统计视频观看数Top50所关联视频的所属类别Rank
-- 5)统计每个类别中的视频热度Top10,以Music为例(视频热度:视频观看数)
-- 6)统计每个类别视频观看数Top10
-- 7)统计上传视频最多的用户Top10以及他们上传的视频观看次数在前20的视频
1.2、数据表
①、视频表
字段 | 备注 | 详细描述 |
---|---|---|
videoId | 视频唯一id(String) | 11位字符串 |
uploader | 视频上传者(String) | 上传视频的用户名String |
age | 视频年龄(int) | 视频在平台上的整数天 |
category | 视频类别(Array) | 上传视频指定的视频分类 |
length | 视频长度(Int) | 整形数字标识的视频长度 |
views | 观看次数(Int) | 视频被浏览的次数 |
rate | 视频评分(Double) | 满分5分 |
Ratings | 流量(Int) | 视频的流量,整型数字 |
conments | 评论数(Int) | 一个视频的整数评论数 |
relatedId | 相关视频id(Array) | 相关视频的id,最多20个 |
②、用户表
字段 | 备注 | 字段类型 |
---|---|---|
uploader | 上传者用户名 | string |
videos | 上传视频数 | int |
friends | 朋友数量 | int |
1.3、创建表&导入数据
1.3.1、导入数据
数据码云地址:https://gitee.com/xiaoha1234/data/tree/master/TableData/guliVideo
#在hdfs新建存储原始数据的目录
hadoop fs -mkdir -p /gulivideo/video
hadoop fs -mkdir -p /gulivideo/user
#从Linux本地上传数据到hdfs上
hadoop fs -put <linx上路径>/user.txt /gulivideo/user
hadoop fs -put <linx上路径>/*.txt /gulivideo/video
1.3.2、创建表
①、创建外部数据表:gulivideo_ori,gulivideo_user_ori
create external 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 "&"
stored as textfile
location '/gulivideo/video';
-------------------------------------------------------------
create external table gulivideo_user_ori(
uploader string,
videos int,
friends int)
row format delimited
fields terminated by "\t"
stored as textfile
location '/gulivideo/user';
②、创建最终管理表:gulivideo_orc,gulivideo_user_orc
--创建orc存储格式带snappy压缩的管理表:
create table gulivideo_orc(
videoId string,
uploader string,
age int,
category array<string>,
length int,
views int,
rate float,
ratings int,
comments int,
relatedId array<string>)
stored as orc
tblproperties("orc.compress"="SNAPPY");
----------------------------------------------------
create <