项目介绍

音乐数据中心数仓综合项目主要是针对公司过去收集到的用户点播、购买音乐等数据(包括业务数据与用户行为数据),为公司业务更健康的发展提供决策服务支持(BI商业决策)。

数据中心项目中包含业务系统数据和用户行为日志数据。

业务数据即业务系统产生的业务数据,例如:系统中产生的订单、登录、点歌、广告展示等数据。

用户行为数据例如:用户在实体机器上操作的行为都是用户行为数据,点击、收藏、扫码等事件。

公司针对以上数据进行分析的结果主要有两个应用:

一是针对BI系统,商业智能中主要展示更多的报表给公司的运营人员参照。例如:每日歌曲点唱量,每日营收,机器分布,实时pv,uv,用户留存率、漏斗模型等。

另一个应用是数据服务,数据服务主要是针对分析后结果数据以接口的形式提供给业务系统来访问,例如:推荐系统,根据歌曲来推荐歌曲,根据歌手来推荐歌曲或者根据用户来推荐歌曲。

项目架构

数据中心项目是Spark综合的数仓项目。分为离线处理和实时处理,其中用到的技术有MySQL、Sqoop、HDFS、Yarn、Hive、数据仓库模型设计、SparkCore、SparkSQL、SparkStreaming、Azkaban、Flume、Kafka、Redis、superSet、Redis、微信指数、高德API等。

离线处理:以Spark为主,其中很少使用了SparkCore的代码,主要使用SparkSQL构建数据仓库。项目使用airflow/Azkaban进行调度,可以每日进行调度,也可以每月进行调度,每天定时触发调度。

实时处理:使用SparkStreaming实现实时处理。离线N+1的方式不能得到实时数据,运营活动中心有时需要实时的用户上线数据,针对客户端进行数据埋点,用户在客户端所有的行为都是事件,对事件进行埋点,当用户触发了一些事件时,判断用户是否满足了目标用户情况。

实时处理流程如下:

http请求 -->数据采集接口-->数据目录--> flume监控目录[监控的目录下的文件是按照日期分的] -->Kafka [也会放在HDFS中,就是上面做的] -->SparkStreaming分析数据 --> Kafka[给运营中心使用]

数据来源及采集

数据中心项目中的数据来源主要是商场中的KTV歌厅产生的数据和商场中跳舞机产生的数据。

以上两种设备产生的数据可以分为两类数据,一类是产生的订单数据,会记录到业务数据库。后期直接通过sqoop直接抽取MySQL中的数据到HDFS。另外一类是通过http请求,上传到专门采集数据的日志服务器上,每天由运维人员将数据打包上传到数据中心平台某个目录下,然后由定时任务定时来执行Spark任务拉取数据,上传至HDFS中。这里读取压缩数据使用SparkCore进行处理,处理之后将数据以parquet格式或者json格式存储在HDFS中即可。

数据仓库模型

数据仓库按照主题分为三个主题:用户、机器、内容(歌曲相关、歌手相关)。每个主题下面都有对应的表。数据仓库的设计分为三层,如下:

ODS层:

ODS文件中是从业务数据库中抽取出来数据表的原数据, 数据从关系型数据库MySQL中导入,转换成Parquet格式的文件存在HDFS中,后期方便使用SparkSQL处理。

ODS层数据来源如下:

外部数据源:网易云爬取歌曲热度数据、歌手热度数据,爬取数据是json格式的数据。

内部数据源:主要有MySQL和客户端上传json数据。MySQL使用Sqoop抽取数据到HDFS中,导入ODS层。客户端产生日志到客户端服务器,客户端服务器由运维人员每天将数据压缩成包导入到HDFS路径中,也就是ODS层。

EDS层:

EDS层负责信息集成、轻度汇总类数据。简单理解就是将事务性的数据组织成便于分析的仓库维度建模类型的数据,做一些轻度聚合,类似Hive中的宽表。例如:将ODS层数据进行清洗,如果主题是用户主题,那么就按照用户id为粒度将数据组织在一起。如果主题是机器,那么就按照机器id为粒度将数据组织在一起。

以上ODS层和EDS层使用Spark代码处理数据,然后利用SparkSQL读取ODS层数据,保存到Hive的EDS层。

DM层:

DM层的数据有一部分是存储在Hive表中,或者保存分析结果到MySQL、HBase等。EDS层数据是parquet格式的数据,放在Hive的主要原因是后期使用Kylin 查询一些业务,数据放MySQL的都是结果数据,放在HBase的原因是设涉及到大表的明细查询。

以上数据仓库模型的设计表对应关系都在“数据仓库模型.xlsx”文件中。

第一个业务:歌曲热度与歌手热度排行

需求

需求是根据用户在各个歌曲点唱机上的点歌行为,来统计最近昨日,近7日,近30日的歌曲点唱量、歌曲点赞量、点唱用户数、点唱订单数、7日和30日最高点唱量、7日和30日最高点赞量及各个周期的歌曲热度和歌手热度。

模型设计

要完成昨日的歌曲热度与歌手热度分析,需要以下两类数据:

歌曲歌手的基本信息

这些信息放在业务系统的关系型数据库MySql song表中。通过sqoop每天定时全量覆盖抽取到数据仓库Hive中的ODS层中。关于song表的结构信息参看“数据仓库模型.xls”文件及mysql 数据song 表数据。

用户在机器上的点歌行为数据

这部分数据是用户在各个机器上当天的点歌播放行为数据,这些数据是运维每天零点打包以gz压缩文件的方式上传到HDFS平台,这里我们假定将数据“currentday_clientlog.tar.gz”每天凌晨定时上传到HDFS路径“hdfs://mycluster/logdata”中,这里在企业中应当上传到某个以天名称的结构目录下,通过Spark数据清洗将数据存放到Hive数仓ODS层中。关于用户在机器上的点歌行为数据参照“事件上报协议.docx”文档。

这里根据需求将表分成如下三层:

第二个业务:机器详细信息统计

需求

目前要根据两个业务系统中的数据统计机器基础详细信息。这两个业务系统对应的关系型数据库分别是“ycak”“ycbk”。

“ycak”库中存在两张机器相关的数据库表如下:

“machine_baseinfo”机器基本信息表,机器的系统版本,歌库版本,UI版本,最近登录时间相关。

“machine_local_info”机器位置信息日全量表,机器所在的省市县及详细地址,运行时间和销售时间相关。

“ycbk”库中存在6张表,分别如下:

“machine_admin_map”机器客户映射资料表

“machine_store_map”机器门店映射关系表

“machine_store_info”门店信息全量表

“province_info”机器省份日全量表

“city_info”机器城市日全量表

“area_info”机器区县日全量表

注意:所有的机器信息来自于“machine_baseinfo”机器基本信息表与“machine_admin_map”机器客户映射资料表。

模型设计

完成以上机器详细信息统计,数据是分别存在两个业务系统库中,需要通过ODS将数据从关系型数据库抽取到Hive ODS层。

根据需求,针对机器进行分析,在数仓中我们构建“机器”主题,具体数据分层如下:

在Hive中建立ODS层对应的表:

处理ODS层的各个表结构之外,EDS层TW_MAC_BASEINFO_D表在对应的DM层也要一张表对应,这里DM层在mysql中有对应的tm_mac_baseinfo_d 表,以上各个表之间的数据流转过程如下:

数据处理流程

将数据导入到对应的MySQL业务库中

在MySQL中分别创建“ycak”、“ycbk”数据库,将“ycak.sql”“ycbk.sql”分别运行在对应的库下,将数据导入到业务库中。

使用Sqoop抽取数据到Hive ODS层

将“ycak”库下的“machine_baseinfo”表通过Sqoop每天全量覆盖导入到ODS层 TO_YCAK_MAC_D表中,导入脚本“ods_mysqltohive_to_ycak_mac_d.sh”

使用Azkaban配置任务流

这里使用Azkaban来配置任务流进行任务调度。集群中提交任务,需要修改项目中的application.conf文件配置项:local.run="false"。并将项目打包。

使用SuperSet数据可视化

第三个业务:日活跃用户统计

需求

每天统计最近7日活跃用户的详细信息,如上图示例。

如果计算用户日活情况,需要获取对应的每天用户登录信息,用户登录信息被记录在“ycak”业务库下的“user_login_info”表中,这张表将用户每天登录系统,登出系统的信息记录下来,我们可以将这张表的信息每天增量的抽取到ODS层中,然后把用户的基本信息每天全量抽取到ODS层,然后获取每天活跃的用户信息,进而计算统计出7日用户活跃情况。这里用户的基本信息包含了四类注册用户的数据,存储在“ycak”业务库中,分别是:“user_wechat_baseinfo”、“user_alipay_baseinfo”、“user_qq_baseinfo”、“user_app_baseinfo”。

模型设计

将业务需要到的数据表通过Sqoop抽取到ODS层数据。根据业务我们在数仓中构建“用户主题”,具体数据分层如下:

基于大数据的音乐数据中心平台(附:源码 课件 项目部署文档)相关推荐

  1. 基于SpringBoot的车牌识别系统(附源码和环境部署文档)

    若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用. 前端采用Vue.Element UI. 后端采用Spring Boot.Spring Security.Redis & Jwt ...

  2. 计算机毕业设计springboot家教平台中心系统53754源码+系统+程序+lw文档+部署

    计算机毕业设计springboot家教平台中心系统53754源码+系统+程序+lw文档+部署 计算机毕业设计springboot家教平台中心系统53754源码+系统+程序+lw文档+部署 本源码技术栈 ...

  3. 基于Java毕业设计中文网络小说平台系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计中文网络小说平台系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计中文网络小说平台系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S ...

  4. 基于QT开发的音乐播放器(附源码)

    基于QT开发的音乐播放器(附源码) 一.简介 1.介绍 2.功能描述 3.系统功能层次模块图 4.各模块功能描述 (1)播放界面 (2)歌词 (3)歌曲信息 (4)歌曲列表 5.文件格式 6.运行环境 ...

  5. java计算机毕业设计社区电商平台系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计社区电商平台系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计社区电商平台系统源码+系统+数据库+lw文档+mybatis+运行部署 开发软件:i ...

  6. 计算机毕业设计springboot教学事务流转与管理平台k0446源码+系统+程序+lw文档+部署

    计算机毕业设计springboot教学事务流转与管理平台k0446源码+系统+程序+lw文档+部署 计算机毕业设计springboot教学事务流转与管理平台k0446源码+系统+程序+lw文档+部署 ...

  7. 基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B ...

  8. 基于Java毕业设计银创科技有限公司人事信息系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计银创科技有限公司人事信息系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计银创科技有限公司人事信息系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: ...

  9. 基于Java毕业设计研究生入学考试备考辅助系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计研究生入学考试备考辅助系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计研究生入学考试备考辅助系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目 ...

最新文章

  1. 图片的批量下载 和 爬虫爬取图片数据集
  2. 关于内存管理-提前释放的问题
  3. dsp广告和信息流广告区别_一文搞懂DSP-蘑菇街DSP广告实践
  4. dsp c语言 计算正弦,DSP正弦函数计算程序编写.docx
  5. 信息通信建设工程预算定额_通信建设工程概预算
  6. Feign数据压缩传输
  7. python lock_python多线程Lock和RLock的区别
  8. Linux学习笔记24——进程管道
  9. Discuz完整手动迁移教程(不使用备份功能)
  10. C语言在linux终端下实现2048小游戏:第二版
  11. 2016.02.23,英语,《Vocabulary Builder》Unit 01
  12. (转载)lib 和 dll 的区别、生成以及使用详解
  13. 第6课 - 开发中的辅助工具
  14. Python实现社交网络可视化
  15. [答疑]什么是“消极需求“
  16. 3D MAX2014 安装教程(个人亲自示例)
  17. centos7 安装gitea使用
  18. C++笔记-学习算法与实现-计算几何-二维向量和线段运算
  19. 一个小时学会Maven(参考资料)
  20. NoSQL 在腾讯应用实践

热门文章

  1. 【python量化交易学习】从tushare获取股票交易数据,存入后再从mysql或excel读取数据,筛选股票,用pyecharts画出K线图。
  2. Description Resource Path Location Type The project cannot be built until build path errors are reso
  3. matlab收获,matlab实习心得体会 1700字
  4. 并发-2-竞争条件例子、锁对象
  5. .then()方法的意思和用法
  6. ijkplayer源码---音频播放
  7. Hive远程连接设置用户名和密码
  8. 学思录(一):带着信息的角度去学习
  9. Mysql集群高可用之mha
  10. Unity性能优化之动态图形渲染