一、 项目背景
《中国好声音》、《快乐男声》、《最美和声》、《中国梦之声》……今年夏天,各种音乐选秀节目竞争激烈。哪个节目更受观众欢迎?节目中的“笑点”和 “尿点”又藏在哪儿?歌华有线的“北京大样本收视数据研究中心”给出了答案。这个去年初才筹建的机构,掌握着最热门的“大数据”计算模式,如今正充当起各个电视节目的幕后“军师”。
“大数据”计算,数据样本量的多少是关键。和传统收视率统计方式相比,“北京大样本收视数据研究中心”的数据样本量足够庞大。要知道,传统收视率调查在北京的样本采集量只有500户,而该中心依托北京歌华有线的330万高清交互数字电视双向用户,能够从中随机抽取25000户作为样本进行统计, 是前者的足足几十倍,当然我们还可以抽取更多的用户来作为样本数据。
二、 项目需求
为了便于我们掌握哪个节目更受观众欢迎以及节目中的“笑点”和 “尿点”,我们可以通过一些用户的收视指标进行监测,比如收视人数、平均收视人数、收视率、市场份额、平均到达人数、到达率以及人均收视时长等等,我们可以将这些指标按天统计,可以得出每个节目收视排名,从而知道那个节目更受欢迎;我们也可以将这些指标按小时、甚至按分钟进行统计,可以精确的知道某个节目在那哪一分钟或者某一段时间收视最高,从而知道某个节目的最精彩的部分,甚至还可以推断出节目中收视率高是由哪个明星带来的。 当然我们可以通过用户的数据,还可以掌握其它维度的收视情况,比如频道、频道类别、栏目、栏目类别、节目、节目类别、具体频道具体节目等等。
三、 项目分析
项目需求的维度和指标比较多而且比较复杂,这里我们抽出一个维度的几个指标来进行分析,本项目我们从节目的维度,统计每个节目的平均收视人数、平均到达人数、收视率、到达率和市场份额。我们根据每天抽样用户的收视数据,统计出每个节目按天、按小时、按分钟的上述5个收视指标。
四、 系统功能
主要包括收视概况浏览、收视率走势分析、收视指标对比、收视数据对比查看。
五、 收视指标定义
收视人数
总的:某天收视人数(S11):sum(distinct stbnum) WHERE 指定日期。
频道:某天收视人数(S21):sum(distinct stbnum) WHERE 指定日期 AND 指定频道。
节目(这1天内收看此节目的人数):某天收视人数(S31):sum(distinct stbnum) WHERE 指定日期 AND 指定节目。
平均收视人数
该指标为在选定期间内平均每分钟的用户ID数。
总的:
每分钟(X11): sum(distinct stbnum)
每分钟(X12):......
每分钟(X1n):......
平均收视人数:(X11 + X12 + … + X1n)/n
频道:
每分钟(X21): sum(distinct stbnum) where 指定频道名称 = 频道名
每分钟(X22):......
每分钟(X2n):......
平均收视人数:(X21 + X22 + … + X2n)/n
节目:
每分钟(X31): sum(distinct stbnum) where 指定节目名称 = 节目名
每分钟(X32):......
每分钟(X3n):......
平均收视人数:(X31 + X32 + … + X3n)/n
收视率
平均收视人数/系统总ID数。
CONSTANT系统总ID数 IDNUM = sum(distinct stbnum)。
总的,频道,节目:
每分钟收视率Y1:X1/IDNUM;
每分钟收视率Y2:......
每分钟收视率Yn:Xn/IDNUM
某一段时间的收视率:(Y1 + Y2… + Yn)/n
市场份额
对应频道平均收视人数/所有频道平均收视人数。
总体:
100%
频道:
每分钟(Z21):X21/ sum(distinct stbnum) where 时间
......
每分钟(Z2n):X2n/ sum(distinct stbnum) where 时间
市场份额:(Z21 + … + Z2n)/n
节目:
每分钟(Z31):X31/ sum(distinct stbnum) where 时间
......
每分钟(Z3n):X3n/ sum(distinct stbnum) where 时间
市场份额:(Z31 + … + Z3n)/n
平均到达人数:
默认扣除在某个频道或整个系统停留时间小于60s的用户ID,不包括60s,跟平均收视人数的差别在于排除原始记录中停留时间小于60s的记录。
总的:
每分钟(U11): sum(distinct stbnum) WHERE ((a_e – a_s)>=60)
每分钟(U12):......
每分钟(U1n):......
平均到达人数:(U11 + U12 + … + U1n)/n
频道:
每分钟(U21): sum(distinct stbnum) where 指定频道名称 = 频道名 AND ((a_e – a_s)>=60)
每分钟(U22):......
每分钟(U2n):......
平均到达人数:(U21 + U22 + … + U2n)/n
节目:
每分钟(U31): sum(distinct stbnum) where 指定节目名称 = 节目名 AND ((a_e – a_s)>=60)
每分钟(U32):......
每分钟(U3n):......
平均到达人数:(U31 + U32 + … + U3n)/n
到达率:
平均到达人数/系统总ID数。
CONSTANT系统总ID数 IDNUM = sum(distinct stbnum)。
总的,频道,节目:
每分钟(V1):U1/ IDNUM
......
每分钟(Vn):Un/ IDNUM
某一段时间的到达率:(V1 + V2 + … + Vn)/n
人均收视时长:
所有频道 —— 每天所有用户ID的总时间/用户ID数;具体某个频道 —— 访问过该频道的所有用户ID每天总时间/该频道每天的用户ID数;具体某个栏目 —— 访问过每期节目的所有用户ID总时间/该栏目的用户ID数。
总的:
某天人均收视时长(W11):SUM(a_e – a_s)/S11
频道:
某天人均收视时长(W21):SUM(a_e – a_s)/S21
节目:
某天人均收视时长(W31):SUM(a_e – a_s)/S31
六、 系统操作说明
业务需求描述
分析统计指标

分析统计维度

系统截图说明
收视率走势图

收视率按频道排行榜

收视率按节目排行榜

按频道类别筛选

按节目类别筛选

收视率指标对比

收视率按小时走势图

收视率按分钟走势图

七、 项目开发流程

第一步:
通过flume收集工具将用户产生的原始收视数据收集到hdfs分布式文件系统。
第二步:
编写MR程序对原始的收视数据进行解析、清洗、提取业务需要的有效字段。
第三步:
利用hive工具将MR处理后的数据导入数据仓库,同时对该数据进行统计分析。
第四步:
编写应用程序或者使用sqoop工具将hive分析的最终数据导入数据库,比如mysql数据库。
第五步:
前端查询,实现数据的可视化。
八、 课后作业
1、理解项目需求,知道做这个项目是干什么的?
2、搭建hadoop集群,安装flume、hive、sqoop。
基于大家硬件条件,项目数据量相对比较大,建议大家先搭建单节点的hadoop集群,把整个项目跑通。 熟悉项目的完整的开发流程。然后可以使用少量数据,在hadoop 分布式集群下测试。
环境要求(建议跟课程统一):centos 6.5 64位系统,hadoop2.2.0或者hadoop2.6.0,flume1.6.0,hive1.0.0,sqoop1.4.6
相关jar下载:hadoop-2.6.0.tar.gz、apache-hive-1.0.0-bin.tar.gz、apache-flume-1.6.0-bin.tar.gz、jdk-7u79-linux-x64.tar.gz、sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz、zookeeper-3.4.6.tar.gz
本文介绍了一种基于大数据技术的电视收视分析系统,通过对大量交互数字电视用户的实时收视数据进行统计分析,实现了对各类电视节目的收视人数、收视率等关键指标的精确计算,帮助电视台了解观众偏好。
543

被折叠的 条评论
为什么被折叠?



