大数据电信用户行为分析

1.数据分析整体过程

  1. 把电信用户行为数据集加载到分布式文件系统HDFS中。
  2. 使用 Scala 语言编写 Spark 程序对 HDFS 中的数据进行用户行为分析,并把分析结果写人
  3. MySQL, 数据库。
  4. 使用 Spring MVC 框架开发网页应用,对 MySQL,数据库中的数据进行可视化分析。
  5. 在网页中以图表形式对分析结果进行可视化呈现。

下面将按照如下四个主要步骤对案例开发过程依次进行介绍。
步骤一:本地数据集上传到 HDFS。
步骤二:在 MySQL 中创建数据库。
步骤三:开发 Spark 程序分析用户行为。
步骤四:使用 Spring MVC 框架进行数据可视化分析。 

2.本地数据集上传到 HDFS 

本案例所有代码和数据都存放在网盘中

百度网盘链接https://pan.baidu.com/s/1WoccuMl2Sarr58ImVi2AtQ
提取码:0706

2.1下载数据集

从网盘下载数据集demo.txt到本地

2.2把数据集上传到 HDFS

假设数据集 demo.txt 已经被保存到 Linux 本地文件系统的“~/Downloads”目录下。在
Linux 系统中打开一个终端,并在终端中执行如下Shell 命令,把数据集上传到 HDFS 文件系
统中,输入以下命令: 

cd /usr/local/hadoop # 进入Hadoop安装目录
./sbin/start-dfs.sh # 启动Hadoop的HDFS组件
jps
./bin/hdfs dfs -ls / # 查看HDFS文件系统目录下的内容

 ./bin/hdfs dfs -mkdir /input_spark # 在HDFS的根目录下创建input_spark目录
# 把本地数据集上传到HDFS中

 ./bin/hdfs dfs -put ~/Downloads/demo.txt /input_spark

# 查看该目录的信息

./bin/hdfs dfs -ls /input_spark

# 查看HDFS文件中的数据

/usr/local/hadoop$ ./bin/hdfs dfs -cat /input_spark/demo.txt

结果

3.在 MySQL 中创建数据库

本案例中,用户行为分析的结果全部会被写人MySQL数据库,因此,需要首先在
中创建相应的数据库、表和视图,主要包括:

  1. 创建数据库;
  2. 创建数据汇总表
  3. 创建数据明细表;
  4. 创建数据原始明细表;
  5. 创建区域维表;
  6. 创建渠道维表;
  7. 创建请求类型维表;
  8. 创建五个视图。

3.1启动进入 MySQL Shell 环境 

启动mysql服务

 service mysql start

进入数据库

mysql -u root -p

3.2创建一个数据库

create database spark_web;# 进入数据库spark_web

use spark_web;

3.3创建一个数据库汇总表

create table sum (
	imei varchar(10) default null comment'用户编号',
	log_times int(2) default null comment'登陆次数',
	online_time int(10) default null comment'在线时长(秒)'
) engine=innodb default charset=utf8;

3.4创建一个数据明细表

create table detail (
	imei varchar(10) default null comment'用户编号',
	first_login_time varchar(100) default null comment'首次登录时间',
	online_time int(10) default null comment'在线时长(秒)'
) engine=innodb default charset=utf8;

3.5创建一个数据原始明细表

create table cleanMap (
	imei varchar(10) default null comment'用户编号',
	logid varchar(100) default null comment'登录时间',
	requestip varchar(11) default null comment'登录IP地址',
	areacode varchar(11) default null comment'登录区域',
	requesttype varchar(11) default null comment'请求类型',
	channelne varchar(11) default null comment'渠道'
)engine=innodb default charset=utf8;

3.6创建一个区域维表

create table t_dim_area (
	areacode varchar(11) default null comment'区域编码',
	areaname varchar(100) default null comment'区域名称'
)engine=innodb default charset=utf8;

 

 一定要插入数据,否则前后端无法进行数据分析

insert into  t_dim_area  values('0','浙江省丽水市');
insert into  t_dim_area  values('1','福建省南平市');
insert into  t_dim_area  values('2','福建省福州市');

3.7 创建一个渠道维表

create table t_dim_channel (
	channelno varchar(11) default null comment'渠道编号',
	channelname varchar(100) default null comment'渠道名称'
)engine=innodb default charset=utf8 row_format=dynamic;
 
insert into t_dim_channel values ('0','手机');
insert into t_dim_channel values ('1','PC');
insert into t_dim_channel values ('2','平板电脑');

3.8创建请求类型维表

create table t_dim_requesttype (
	requesttype varchar(11) default null comment'请求类型',
	requesttypename varchar(100) default null comment'请求类型名称'
)engine=innodb default charset=utf8 row_format=dynamic;
 
insert into t_dim_requesttype values ('0','GET方式');
insert into t_dim_requesttype values ('1','POST方式');

 

3.9创建一个五个视图

3.9.1用户渠道趋势分析
create or replace view v_area_channel as
	select b.areaname,c.channelname,count(distinct imei) num
	from cleanMap a,t_dim_area b,t_dim_channel c
	where a.areacode=b.areacode and a.channelne=c.channelno
	group by b.areaname,c.channelname;
3.9.2用户请求类型对比情况
create or replace view v_area_requesttype as
	select b.areaname,c.requesttypename,count(distinct imei) num
	from cleanMap a,t_dim_area b,t_dim_requesttype c
	where a.areacode=b.areacode and a.requesttype=c.requesttype
	group by b.areaname,c.requesttypename;
3.9.3用户渠道饼图分析
create or replace view v_channelno as
	select b.channelname,count(distinct imei) num
	from cleanMap a,t_dim_channel b
	where a.channelne=b.channelno
	group by b.channelname;
3.9.4用户登录情况分析
create or replace view v_user_login as
	select distinct a.imei,a.log_times,b.first_login_time,a.online_time
	from sum a,detail b
	where a.imei=b.imei;
3.9.5用户详细情况分析
create or replace view v_user_detail as
	select distinct a.imei,a.requestip,d.requesttypename,c.first_login_time,
	b.log_times,b.online_time,e.areaname,f.channelname
	from cleanMap a,sum b,detail c,t_dim_requesttype d,t_dim_area e,t_dim_channel f
	where a.imei=b.imei and a.imei=c.imei
	and a.requesttype=d.requesttype
	and a.areacode=e.areacode and a.channelne=f.channelno;

查看spark_web的表

show tables;

 

3.10添加MySQL数据库驱动程序JAR包
 

可以到 MySQL官网下载驱动程序,或者也可以直接访问”,到网盘中下载“mysql-connector-java-5.1.40.tar.gz”文件到本地,如保存到“~/Downloads”目录下
然后执行解压缩命令,并把解压后的 MySQL 数据库驱动程序 JAR 包复制到 Spark 安装目录下,

 cd ~/下载

unzip mysql-connector-java-5.1.40.zip

cp ./mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/spark/jars

4.开发Spark程序分析用户行为

4.1新建项目Spark_Web

项目Spark_Web的目录结构如下。 

4.2运行Spark_Web项目

idea是2024版,spark是3.4.0版本,Scala是2.12.11版本

pom.xml文件

scalac插件

项目依赖

本次案例使用的软件都是最新版本的,如果使用旧版本会出现不兼容的情况

4..3生成Spark_Web.jar
 

生成jar包的途径是“~/IdeaProjects/Spark_Web/out/artifacts/Spark_Web_jar/Spark_Web.jar” 

 4.4使用spark-submit命令运行程序

 启动MySQL

service mysql start

mysql -u root -p

执行Spark_Web.jar程序
cd /usr/local/spark
./bin/spark-submit  --class  "cn.edu.xmu.UserOnlineAnalysis"  --driver-class-path  :/usr/local/spark/jars/* ~/IdeaProjects/Spark_Web/out/artifacts/Spark_Web_jar/Spark_Web.jar  file:///home/hadoop/Downloads/demo.txt

出现全部结束,说明数据导入成功了

执行结束后,在MySQL Shell交互式执行环境中,执行如下SQL命令语句。

show database;
use spark_web;
show tables;
select * from detail;

select * from sum;

select * from cleanMap;

5.使用 Spring MVC框架进行数据可视化分析

5.1新建项目SpringMVC

将网盘的文件下载复制到虚拟机中,用idea打开,更新pom.xml文件即可

项目Spark_Web的目录结构如下。

 jdbc连接池

将配置更改成自己本地的数据库用户名和密码

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/spark_web?useSSL=false&characterEncoding=utf-8
jdbc_username=root
jdbc_password=123456

5.2生成应用程序JAR包

如果对代码进行了修改,请重新进行打包

5.3网页应用部署到Tomcat服务器中

进人Tomcat安装目录(即“/usr/local/tomcat"), 再进入conf子目录,打开“server.xml" 文件,修改配置文件。

然后,保存“server.xml”文件,Linux终端中继续执行如下Shell命令,重新启动Tomcat 服务器:

然后,保存“server.xml”文件,在Linux终端中继续执行如下Shell命令,重新启动Tomcat 服务器:

cd /usr/local/tomcat

./bin/shutdown.sh

./bin/startup.sh

 

前面已经生成的SpringMVC.war 文件的路径是

“~/ldeaProjects/SpringMVC/out/artifacts/SpringMVcSpringMVC.war”。把“SpringMVC.war”文件复制到 Tomcat 的安装目录的“webapps”目录下(即“usr/local/tomcat/webapps”目录)。如图6-47所示,当把“SpringMVC.war”文件复制到webapps目录下的时候,Tomcat 会自动在该目录下生成文件夹 SpringMVC。实际上,如果后面要修改网页程序,当把 webapps目录下的“SpringMVC.war”文件删除时,Tomcat也会自动删除SpringMVC目录。

打开Linux系统的浏览器,在浏览器输人地址“http:/localhost:9999/charts”。就可以看到最终的数据图表了。

其他资料和源代码请参考厦门大学数据库实验室

高校大数据实训课程系列案例之电信用户行为分析

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值