大数据实战-callLog项目(通话记录数据分析)之项目介绍
作者:互联网
文章目录
前言
学完大数据离线部分的技术,老师就布置了一个综合性的小项目;自己勉强算是完成了,便整理成博客记录一下,方便以后复习,也希望对同样学习大数据的朋友们有所帮助。
技术框架
大数据所需要完成的是Mysql之前的环节,由于只学了离线,所以不使用Storm/Spark;而在HBase之后有两种选择,一是利用Hive进行数据分析,二是HBase的MR,我选择的是MR。
综上所述,本次博客整理的技术路线为CallLog->flume->Kafka->HBase->Mysql,当然Hadoop和Zookeeper一直在背后默默付出着。
流程介绍
数据生产
由于无法获得真实数据,所以这一部分由自己编写java程序放到Linux下定时生成数据。
数据采集
在自己虚拟机里面,flume的吞吐量是够用的,能够直接用flume对接HBase;但是对于企业而言,常常不够所以会用多个flume对接一个Kafaka;为了熟悉一下这个环节,我也试着用flume对接Kafaka。
数据分析
运用MR,业务实际上和官方示例的wordcount差不多,都是求和,只不过这里是某一时间维度的通话次数之和与通话时长之和。更具体而言就是求出指定用户某年、某月、某日的通话次数之和通话时长之和。
数据可视化
这一环节是直接使用老师给的web项目,连上保存结果的数据库实现的。
Meaven依赖
我先把用到的Meaven全列在下面,先准备上,之后就不用一一设置。
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.20</version>
</dependency>
<dependency>
<groupId>joinery</groupId>
<artifactId>joinery-dataframe</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>java-testdata-generator</artifactId>
<version>1.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.11.0.3</version>
</dependency>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>E:\MyWork\MyDevelopmentTools\java\jdk1.8.0_171\lib\tools.jar</systemPath>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.4.5</version>
</dependency>
结果预览
表结构
最终结果mysql表的结构如下,可以先看看,之后还会提到
db_telecom.tb_contacts
用于存放用户手机号码与联系人姓名。
列 | 备注 | 类型 |
---|---|---|
id | 自增主键 | int(11) NOT NULL |
telephone | 手机号码 | varchar(255) NOT NULL |
name | 联系人姓名 | varchar(255) NOT NULL |
db_telecom.tb_call
列 | 备注 | 类型 |
---|---|---|
id | date | contact 复合主键(联系人维度 id,时间维度 id) varchar(255) NOT NULL |
id | date | dimension 时间维度 id int(11) NOT NULL |
id | contact | 查询人的电话号码 int(11) NOT NULL |
call | sum | 通话次数总和 int(11) NOT NULL DEFAULT 0 |
call | duration | sum 通话时长总和 int(11) |
db_telecom.tb_dimension_date
列 | 备注 | 类型 |
---|---|---|
id | 自增主键 | int(11) |
year | 年,当前通话信息所在年 | int(11) |
month | 月,当前通话信息所在月,如果按照年来统计信息,则month 为-1。 | int(11) NOT NULL |
day | 日,当前通话信息所在日,如果是按照月来统计信息,则day为-1。 | int(11) NOT |
web端绘制的结果
不过这次我并没有实现mysql之后的可视化环节。
标签:数据分析,11,telecom,通话,int,通话记录,callLog,NULL,id 来源: https://blog.csdn.net/weixin_44112790/article/details/95718199