大数据全系列 教程
1869个小节阅读:467.6k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
要完成昨日的歌曲热度与歌手热度分析,需要以下两类数据:
用户在机器上的点歌行为数据
这部分数据是用户在各个机器上当天的点歌播放行为数据,这些数据是运维每天零点打包以gz压缩文件的方式上传到HDFS平台,这里我们假定将数据currentday_clientlog.tar.gz
每天凌晨定时上传到HDFS路径hdfs://mycluster/logdata
中,这里在企业中应当上传到某个以天名称的结构目录下,通过Spark数据清洗将数据存放到Hive数仓ODS层中。关于用户在机器上的点歌行为数据参照“事件上报协议.docx”文档。
日志内容格式:
日志时间&机器id&事件类型&{json}&机器版本&机器UI软件版本
终端向服务器通知歌曲播放操作(事件类型中的一种)
CMD名称 | MINIK_CLIENT_SONG_PLAY_OPERATE_REQ |
---|---|
访问方式 | 终端主动请求 |
参数类型 | json |
请求参数说明
{
“optrate_type”:0
“songid”:”MK1000456”,
“uid”:100,
“session_id”:50,
“mid”:10,
“dur_time”:0,
“play_time”:0,
“consume_type”:1,
“songname”:”happy new year”,
“pkg_id”:1,
“order_id”:”xxxxxx”,
}
json属性 | 是否必须 | 说明 |
---|---|---|
optrate_type | 是 | 0:点歌, 1:切歌,2:歌曲开始播放,3:歌曲播放完成,4:录音试听开始,5:录音试听切歌,6:录音试听完成 |
songid | 是 | 歌曲ID |
uid | 是 | 用户ID(无用户则为0) |
session_id | 是 | 局数ID |
mid | 是 | 机器ID |
dur_time | 是 | 总时长单位秒(operate_type:0时此值为0) |
play_time | 是 | 播放时长单位秒 |
consume_type | 是 | 消费类型:0免费;1付费 |
songname | 是 | 歌曲名 |
pkg_id | 是 | 套餐ID类型 |
order_id | 是 | 订单号.订单号组成规则, 类型+_(下划线)+由支付类型自定义的订单. 补偿套餐的order_ID是上局的comsum_id |
套餐ID类型定义
pkg_id数字标识 | 名称 | 说明 |
---|---|---|
0 | 单曲套餐 | |
1 | 包时套餐15分钟 | |
2 | 包时套餐30分钟 | |
3 | 包时套餐45分钟 | |
4 | 包时套餐60分钟 | |
5 | 包时套餐90分钟 | |
98 | 朗诵券单曲套餐 | |
99 | 客户端免费游戏模式套餐 | 免费模式模拟ID,为了于真正消费套餐区分 |
支付类型ID定义
pay_typ数字标识 | 名称 | 说明 |
---|---|---|
0 | 投币 | |
1 | k金币 | |
2 | k银币 | |
3 | 音乐积分 | |
4 | 微信支付 | |
5 | 支付宝支付 | |
6 | 免费券 | |
7 | QQ支付 | |
8 | 友币支付 | |
99 | 上局余额 | 上局死机余留,补套餐 |
歌曲歌手的基本信息
这些信息放在业务系统的关系型数据库MySQL的songdb.song表中。
首先创建数据库实例songdb,然后将songdb.sql文件导入到该实例下。
通过Sqoop每天定时全量覆盖抽取到数据仓库Hive中的ODS层中。关于song表的结构信息参看“数据仓库模型.xls”文件ODS,如下: