慕课网日志分析项目
- 将项目克隆到本地
- 将Imooc_SparkSQL和Imooc_Web项目分别导入IDEA
- 正确设置Imooc_Data里日志文件的路径
- 阅读代码,运行项目
- spark-2.1.0-bin-hadoop2.6
- scala-2.11.8
- hadoop-2.6.4
- 按天统计最受欢迎课程
- 按城市统计最受欢迎课程
- 按流量统计最受欢迎课程
- 读取初始日志
- 进行数据一次清洗
- 输入格式
218.75.35.226 - - [11/05/2017:08:07:35 +0800] "POST /api3/getadv HTTP/1.1" 200 407 "http://www.imooc.com/article/17891" "-" cid=0×tamp=1455254555&uid=5844555- 输出格式:“date url traffic ip”
2017-05-11 08:07:35 http://www.imooc.com/article/17891 407 218.75.35.226
- 保存结果
- 读取一次清洗结果文件
- 进行数据二次清洗
- 输入格式:“date url traffic ip”
2017-05-11 08:07:35 http://www.imooc.com/article/17891 407 218.75.35.226- 输出格式:“url courseType courseId traffic ip city time day”
http://www.imooc.com/article/17891 article 17891 407 218.75.35.226 北京 08:07:35 2017-05-11
- 创建DataFrame
- 保存结果为parquet文件类型
- 读取二次清洗结果文件
- 使用DataFrame方式或MySQL方式统计数据
- dos中启动mysql,创建数据库和相应表
- 调用DAO将结果写入MySQL数据库
(1) 打包
- File → Project Structure → Artifacts → “+” → JAR → From modules with dependencies → Main Class:CleanYarn → OK
- Build → Build Artifacts → Build
(2) 上传"Imooc_SparkSQL.jar、ipDatabase.csv、ipResgion.xlsx、format日志文件"到linux的/home/hadoop/imooc/
(3) 启动hadoop,上传format日志文件到hdfs的/imooc/input/
(4) 导入hadoop路径
- 方式一:执行命令export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop/etc/hadoop
- 方式二:spark/conf/spark-env.sh配置文件中添加:export YARN_CONF_DIR=/home/hadoop/apps/hadoop/etc/hadoop
(5) 提交作业
[hadoop@mini1 spark]$ bin/spark-submit
--class main.CleanYarn
--name CleanYarn
--master yarn
--executor-memory 1G
--num-executors 1
--files /home/hadoop/imooc/ipDatabase.csv,/home/hadoop/imooc/ipRegion.xlsx
/home/hadoop/imooc/Imooc_SparkSQL.jar
hdfs://mini1:9000/imooc/input/*
hdfs://mini1:9000/imooc/clean
(6) hdfs查看运行结果,即产生clean目录文件
(1) 打包
- Build → Build Artifacts → Edit → Main Class:TopNYarn → OK
- Build → Build Artifacts → Rebuild
(2) 删除旧jar包,重新上传新jar包到linux的/home/hadoop/imooc/
(3) linux中启动mysql,创建数据库和相应表
(4) 提交作业
[hadoop@mini1 spark]$ bin/spark-submit
--class main.TopNYarn
--name TopNYarn
--master yarn
--executor-memory 1G
--num-executors 1
/home/hadoop/imooc/Imooc_SparkSQL.jar
hdfs://mini1:9000/imooc/clean 2017-05-11
(5) linux的mysql中查看运行结果,即插入数据到表
- yarn mini1:8088
- hdfs mini1:50070
- 配置、启动tomcat
- 读取mysql数据,使用Echarts展示
- 浏览器访问:http://localhost:8080/Imooc_Web/topn.html
- 展示效果
- https://github.com/wzhe06/ipdatabase
fork到自己仓库,克隆项目到本地(D:\) - 编译项目:D:\ipdatabase> mvn clean package –DskipTests
- 安装jar包到自己的maven仓库
D:\ipdatabase>mvn install:install-file
-Dfile=D:\ipdatabase\target\ipdatabase-1.0-SNAPSHOT.jar
-DgroupId=com.ggstar
-DartifactId=ipdatabase
-Dversion=1.0
-Dpackaging=jar
- 导入依赖
<groupId>com.ggstar</groupId>
<artifactId>ipdatabase</artifactId>
<version>1.0</version>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
- 将ipDatabase/target/classes/ipDatabase.csv和ipDatabase/target/classes/ipRegion.xlsx复制到src/main/resources/
- 创建数据库
mysql> create database imooc;
- 创建表
- 按天统计
mysql> create table day_top (
day varchar(10) not null,
courseId bigint(10) not null,
times bigint(10) not null,
primary key (day,courseId)
);
- 按城市统计
mysql> create table city_top(
day varchar(10) not null,
courseId bigint(10) not null,
city varchar(10) not null,
times bigint(10) not null,
timesRank int not null,
primary key (day,courseId,city)
);
- 按流量统计
mysql> create table traffic_top(
day varchar(10) not null,
courseId bigint(10) not null,
traffics bigint(10) not null,
primary key (day, courseId)
);