电信客服综合项目 第1天 项目背景介绍
1、项目背景
通信运营商每时每刻会产生大量的通信数据,例如通话记录,短信记录,彩信记录,第三方服务资费等等繁多信息。数据量如此巨大,除了要满足用户的实时查询和展示之外,还需要定时定期的对已有数据进行离线的分析处理。例如,当日话单,月度话单,季度话单,年度话单,通话详情,通话记录等等+。我们以此为背景,寻找一个切入点,学习其中的方法论。当前我们的需求是:统计每天、每月以及每年的每个人的通话次数及时长。
2、项目架构
3、项目实现
系统环境:
系统 | 版本 |
---|---|
windows | 10 专业版 |
linux | CentOS 7.6 |
开发工具:
工具 | 版本 |
---|---|
idea | 2019.3旗舰版 |
maven | 3.2.2 |
JDK | 1.8+ |
提示:idea2017.2.5必须使用maven3.3.9,不要使用maven3.5,有部分兼容性问题
集群环境:
框架 | 版本 |
---|---|
hadoop | 2.7.2 |
zookeeper | 3.4.10 |
hbase | 1.3.1 |
flume | 1.7.0 |
kafka | 2.11-0.11.0.0 |
硬件环境:
Flink105 | Flink105 | Flink105 | |
---|---|---|---|
内存 | 4G | 2G | 2G |
CPU | 2核 | 1核 | 1核 |
硬盘 | 50G | 50G | 50G |
3.1、数据生产
此情此景,对于该模块的业务,即数据生产过程,一般并不会让你来进行操作,数据生产是一套完整且严密的体系,这样可以保证数据的鲁棒性。但是如果涉及到项目的一体化方案的设计(数据的产生、存储、分析、展示),则必须清楚每一个环节是如何处理的,包括其中每个环境可能隐藏的问题;数据结构,数据内容可能出现的问题。
3.1.1、 数据结构
我们将在HBase中存储两个电话号码,以及通话建立的时间和通话持续时间,最后再加上一个flag作为判断第一个电话号码是否为主叫。姓名字段的存储我们可以放置于另外一张表做关联查询,当然也可以插入到当前表中。
列名 | 解释 | 举例 |
---|---|---|
call1 | 第一个手机号码 | 15369468720 |
call1_name | 第一个手机号码人姓名(非必须) | 李雁 |
call2 | 第二个手机号码 | 19920860202 |
call2_name | 第二个手机号码人姓名(非必须) | 卫艺 |
date_time | 建立通话的时间 | 20171017081520 |
date_time_ts | 建立通话的时间(时间戳形式) | |
duration | 通话持续时间(秒) | 0600 |
4、技术栈流程图
(1)电信项目技术框架
(2)数据分析流程
(3) 数据展示流程
(4) 消费模型