4.1
统计视频观看数
Top10
思路:使用
order by
按照
views
字段做一个全局排序即可,同时我们设置只显示前
10
条。
最终代码:
4.2
统计视频类别热度
Top10
思路:
(1)即统计每个类别有多少个视频,显示出包含视频最多的前
10
个类别。
(2)我们需要按照类别
group by
聚合,然后
count
组内的
videoId
个数即可。
(3)因为当前表结构为:一个视频对应一个或多个类别。所以如果要
group by
类别,
需要先将类别进行列转行
(
展开
)
,然后再进行
count
即可。
(4)最后按照热度排序,显示前
10
条。
最终代码:
4.3
统计出视频观看数最高的
20
个视频的所属类别以及类别包含
Top20
视频的个数
思路:
(1)先找到观看数最高的
20
个视频所属条目的所有信息,降序排列
(2)把这
20
条信息中的
category
分裂出来
(
列转行
)
(3)最后查询视频分类名称和该分类下有多少个
Top20
的视频
最终代码:
SELECT
4.4
统计视频观看数
Top50
所关联视频的所属类别排序
4.5 统计每个类别中的视频热度 Top10,以 Music 为例
思路:
(1)要想统计
Music
类别中的视频热度
Top10
,需要先找到
Music
类别,那么就需要将
category
展开,所以可以创建一张表用于存放
categoryId
展开的数据。
(2)向
category
展开的表中插入数据。
(3)统计对应类别(
Music
)中的视频热度。
统计
Music
类别的
Top10
(也可以统计其他)
4.6 统计每个类别视频观看数 Top10
4.7
统计上传视频最多的用户
Top10
以及他们上传的视频
观看次数在前
20
的视频
思路:
(1)求出上传视频最多的
10
个用户
(2)关联
gulivideo_orc
表,求出这
10
个用户上传的所有的视频,按照观看数取前
20
最终代码
:
LIMIT 20
附录:常见错误及解决方案
0
)如果更换
Tez
引擎后,执行任务卡住,可以尝试调节容量调度器的资源调度策略
将
$HADOOP_HOME/etc/hadoop/capacity-scheduler.xml
文件中的
1
)连接不上
mysql
数据库
(1)导错驱动包,应该把
mysql-connector-java-5.1.27-bin.jar
导入
/opt/module/hive/lib
的
不是这个包。错把
mysql-connector-java-5.1.27.tar.gz
导入
hive/lib
包下。
(2)修改
user
表中的主机名称没有都修改为
%
,而是修改为
localhost
2
)
hive
默认的输入格式处理是
CombineHiveInputFormat
,会对小文件进行合并。
hive (default)> set hive.input.format;
hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
可以采用
HiveInputFormat
就会根据分区数输出相应的文件。
hive (default)> set
hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
3
)不能执行
mapreduce
程序
可能是
hadoop
的
yarn
没开启。
4
)启动
mysql
服务时,报
MySQL server PID file could not be found!
异常。
在
/var/lock/subsys/mysql
路径下创建
hadoop102.pid
,并在文件中添加内容:
4396
5
)报
service mysql status MySQL is not running, but lock file (/var/lock/subsys/mysql[
失败
])
异
常
解决方案:在
/var/lib/mysql
目录下创建:
-rw-rw----. 1 mysql mysql 5 12
月
22
16:41 hadoop102.pid
文件,并修改权限为
777
。
6
)
JVM
堆内存溢出
描述:
java.lang.OutOfMemoryError: Java heap space
解决:在
yarn-site.xml
中加入如下代码
7)虚拟内存限制
在
yarn-site.xml
中添加如下配置
: