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

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

– 统计视频观看数Top10

– 统计视频类别热度Top10(类别热度:类别下的总视频数)

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

– 统计视频观看数Top50所关联视频的所属类别Rank

– 统计每个类别中的视频热度Top10,以Music为例(视频热度:视频观看数)

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

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

  1. 需要准备的表

创建外部数据表:myvideo_ori,myvideo_user_ori,

创建最终表:myvideo_orc,myvideo_user_orc

  1. 创建外部数据表

(1)上传原始数据到HDFS

[yuwenzhi@hadoop102 datas] pwd

/opt/module/hive/datas

[yuwenzhi@hadoop102 datas] hadoop fs -mkdir -p  /myvideo/video

[yuwenzhi@hadoop102 datas] hadoop fs -mkdir -p  /myvideo/user

[yuwenzhi@hadoop102 datas] hadoop fs -put myvideo/user/user.txt   /myvideo/user

[yuwenzhi@hadoop102 datas] hadoop fs -put myvideo/video/*.txt   /myvideo/video

(2)创建外部数据表:myvideo_ori

create external table myvideo_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 '/myvideo/video';

(3)创建外部数据表: myvideo_user_ori

create external table myvideo_user_ori(

    uploader string,

    videos int,

    friends int)

row format delimited 

fields terminated by "\t" ,

stored as textfile

location '/myvideo/user';

1) 创建orc存储格式带snappy压缩的管理表:

(1)myvideo_orc

create table myvideo_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");

(2)myvideo_user_orc

create table myvideo_user_orc(

    uploader string,

    videos int,

    friends int)

row format delimited 

fields terminated by "\t" 

stored as orc

tblproperties("orc.compress"="SNAPPY");

2) 向表中插入数据

(1)向orc表插入数据

insert into table myvideo_orc select * from myvideo_ori;

insert into table myvideo_user_orc select * from myvideo_user_ori;
sql示例
---统计影音视频网站的常规指标,各种TopN指标:
-- 统计视频观看数Top10
SELECT 
t1.videoid,t1.`views` ,rk
FROM 
(SELECT 
videoid ,`views`,
rank() over(order by `views` desc) rk
FROM 
gulivideo_orc)t1
where rk <=10;

set hive.exec.mode.local.auto = true;  --设置为本地模式

-- 统计视频类别热度Top10(类别热度:类别下的总视频数Top10)

SELECT 
t1.category_name ,count(videoid) cnt
FROM 
(SELECT 
category_name,
videoid 
FROM 
gulivideo_orc 
lateral view explode(category) tmp as category_name) t1 
group by t1.category_name 
order by cnt desc
limit 10;


-- 统计出视频观看数最高的20个视频的所属类别以及类别包含Top20视频的个数
SELECT 
category_name ,
count(videoid )  cnt ,
rank() over(order by count(videoid ) DESC ) rk
FROM 
	(
		SELECT 
			videoid ,
			`views` ,
			category 
		FROM 
			gulivideo_orc 
			order by `views` DESC 
			limit 20
	)t1 lateral view explode(category) tmp as category_name
	group by category_name ;

-- 统计视频观看数Top50所关联视频的所属类别Rank(所属类别中视频热度(视频总数)排行)
	SELECT 
		tmp.category_name,
		count(t3.new_relate_id )  cnt,
		rank() over(order by count(t3.new_relate_id) desc) rk
	FROM 
	(
	SELECT 
		t2.new_relate_id,category 
	FROM 
		(SELECT 
			tmp.new_relate_id 
		FROM 
		(
			SELECT 
				videoid ,
				`views` ,
				relatedid 
			FROM 
				gulivideo_orc 
			order by `views` DESC 
			limit 50
		) t1 lateral view explode(relatedid) tmp as new_relate_id)t2
	join gulivideo_orc on t2.new_relate_id = videoid )t3
	lateral view explode(category) tmp as category_name
	group by tmp.category_name;
	

-- 统计每个类别中的视频热度Top10,以Music为例(视频热度:视频观看数)

SELECT 
category_name,
videoid ,
`views`
FROM 
gulivideo_orc 
lateral view explode(category) tmp as category_name
where category_name = 'Music'
order by `views` DESC limit 10;

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

SELECT 
t1.category_name,
t1.videoid,
t1.`views`,
t1.rk
FROM 
(SELECT 
category_name ,
`views` ,
videoid ,
rank() over(partition by category_name order by `views` DESC ) rk
FROM 
gulivideo_orc 
lateral view explode(category) tmp as category_name) t1 
where rk BETWEEN 1 and 10;

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

--------1. top10用户的总视频中观看热度在前20的视频----------
SELECT 
t1.uploader, gc.videoid ,gc.`views`
FROM 
(SELECT 
uploader ,videos 
FROM 
gulivideo_user_orc 
order by videos DESC 
limit 10) t1 join gulivideo_orc gc on t1.uploader = gc.uploader
order by gc.`views`  DESC 
limit 20;

--------2. top10用户中每个人的观看热度前20的视频------------
SELECT 
*
FROM 
(SELECT 
t1.uploader, gc.videoid ,gc.`views`,
rank() over(partition by t1.uploader order by gc.`views` DESC ) rk
FROM 
(SELECT 
uploader ,videos 
FROM 
gulivideo_user_orc 
order by videos DESC 
limit 10) t1 join gulivideo_orc gc on t1.uploader = gc.uploader)t2
where rk <= 20;

--------3. top10用户在中所有视频列表中观看热度在前20的视频-------
SELECT
	t2.videoid,
	t2.`views`
FROM
	(
	SELECT
		uploader , videos
	FROM
		gulivideo_user_orc
	order by
		videos DESC
	limit 10) t1
JOIN (
	SELECT
		videoid , uploader , `views`
	FROM
		gulivideo_orc
	order by
		`views` DESC
	LIMIT 20)t2 on
	t1.uploader = t2.uploader;

有关大数据学习资源,请关注微信公众号“码农书斋”。回复“大数据”,免费获取学习视频、源码及资料!

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要统计谷粒影音视频的热门视频,可以使用Hive进行数据分析和统计。以下是一些可能有用的Hive查询: 1. 统计所有视频的播放量,按照播放量从高到低排列: ``` SELECT video_id, COUNT(*) as play_count FROM video_play_records GROUP BY video_id ORDER BY play_count DESC; ``` 2. 统计最受欢迎的视频,按照总播放量从高到低排列: ``` SELECT video_id, SUM(play_count) as total_play_count FROM ( SELECT video_id, COUNT(*) as play_count FROM video_play_records GROUP BY video_id ) a GROUP BY video_id ORDER BY total_play_count DESC; ``` 3. 统计最近一周内播放量最高的视频,按照播放量从高到低排列: ``` SELECT video_id, COUNT(*) as play_count FROM video_play_records WHERE play_time >= DATE_SUB(CURRENT_TIMESTAMP(), 7) -- 最近一周 GROUP BY video_id ORDER BY play_count DESC; ``` 这些查询可以帮助我们找出谷粒影音视频中最热门的视频。当然,具体的查询语句和统计方法需要根据实际情况进行调整和优化。 ### 回答2: Hive是一个基于Hadoop的数据仓库工具,用于存储和分析大规模的结构化数据。要使用Hive统计谷粒影音热门视频,需要以下步骤: 1. 建立Hive表:首先,在Hive中创建一个表来存储谷粒影音视频数据。可以定义表的字段,如视频ID、标题、发布日期、观看次数等。 2. 导入数据:将谷粒影音视频数据导入到Hive表中。可以使用Hive提供的LOAD命令或从其他数据源(如文件、数据库)导入数据。 3. 编写查询语句:使用Hive的查询语言HQL编写查询语句来统计热门视频。可以使用ORDER BY和LIMIT子句来获取观看次数最多的视频。例如,可以编写类似以下的查询语句: SELECT 视频ID, 标题, 观看次数 FROM 谷粒影音表 ORDER BY 观看次数 DESC LIMIT 10; 上述查询语句将按照观看次数降序排列视频,并返回观看次数最多的前10个视频视频ID、标题和观看次数。 4. 运行查询:在Hive中执行查询语句,获得热门视频统计结果。Hive会使用MapReduce或Tez等计算框架来处理大规模的数据。 5. 分析结果:根据查询的结果进行统计分析,可以了解谷粒影音中最受欢迎的视频,或者识别出观看次数较低的视频,并进行进一步的优化或调整。 通过以上步骤,可以使用Hive对谷粒影音视频数据进行统计,快速找出热门视频,为业务决策和推荐等方面提供支持。 ### 回答3: Hive是一个基于Hadoop的数据仓库基础结构,用于处理大规模数据集。 统计谷粒影音热门视频可以通过Hive进行实现。 首先,我们需要通过Hive创建一个与谷粒影音视频相关的表,包含视频的各种属性,例如视频ID,标题,上传时间,观看次数等等。这可以通过使用Hive的DDL(数据定义语言)来实现。 接下来,我们可以使用Hive的数据操作语言(DML)来查询表中的数据,以统计热门视频。例如,我们可以使用类似以下的Hive查询语句: ``` SELECT video_id, title, views FROM video_table ORDER BY views DESC LIMIT 10; ``` 上述查询语句将从视频表中选择视频ID,标题和观看次数,并按观看次数降序排列。我们可以使用LIMIT关键字限制返回结果的数量,例如这里我们只返回前10个热门视频。 除了观看次数之外,还可以使用其他指标来确定热门视频,如点赞数、评论数等。我们可以根据需求修改查询语句以适应不同的统计需求。 最后,我们可以将查询结果导出到其他存储系统,如HDFS(Hadoop分布式文件系统)或RDBMS(关系型数据库管理系统),以便进一步分析或展示热门视频数据。 总而言之,通过Hive的DDL和DML语言,我们可以建立和查询谷粒影音视频表,然后根据不同的统计需求使用特定的查询语句,最后将结果导出到其他存储系统,从而实现热门视频统计分析。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值