【spark】新浪新闻网数据采集实时分析项目 您所在的位置:网站首页 数据采集大数据项目实训报告 【spark】新浪新闻网数据采集实时分析项目

【spark】新浪新闻网数据采集实时分析项目

2024-07-01 14:43| 来源: 网络整理| 查看: 265

摘要:该项目是一个基于Spark的综合实训项目,旨在实现对新浪新闻网数据的实时采集和分析。项目包括数据采集(使用Python和Scrapy框架将新浪新闻数据存入MongoDB)、数据转存(使用Scala将数据从MongoDB实时导入HDFS)、数据分析与存储(使用Spark Streaming对HDFS上的数据进行实时统计并存储到MySQL)、以及数据可视化(使用Python绘制并上传分析结果到Web端)。报告详细描述了每个步骤的功能设计、实现步骤、源码实现和运行截图。

关键词:Scrapy数据采集  实时分析  Spark  Scala  HDFS  Spark Streaming MongoDB  MySQL  数据可视化

(篇幅受限)详细内容可下载文档查看!!!

目录:

1.1. 概述

1.1.1. 训练要点

1.1.2. 需求说明

1.1.3. 实现步骤

1.2. 总体设计

1.2.1. 总体流程

1.2.2. 系统功能结构

1.2.3. 运行环境

1.3. 详细设计

1.3.1. 库表设计

1.3.2. 数据采集

1.3.3. 数据存储(mongodb->hdfs)

1.3.4. 数据分析与存储(spark streaming)

1.3.5. 数据可视

1.1概述(5分) 1.1.1 训练要点(1分)

回顾并熟练使用python进行数据采集;

掌握scala的使用,将数据从mongo采集到hdfs;

熟练掌握使用spark streaming实现对hdfs目录监测并完成数据分析与处理;

熟练spark的使用,将分析结果存储到mysql;

训练数据据的可视化,将mysql的数据取出并完成可视化。

1.1.2 需求说明(2分)

本实训充许同学们采集各类题材数据,包括并不限于:商品、音乐、新闻、房产、书籍、招聘;

本实训要实现的功能是通过同学采集某类题材数据,实时采集题材数据到mongodb, 再从mongodb将所有同学采集的同题材数据采集hdfs,然后实现该类数据的实时流分析,对分析结果进行存储,然后对mysq中数据实时可视化。

1.1.3 实现步骤(2分)

数据采集:使用scrapy框架实现新闻题材网站的数据采集,存入mongo数据库

数据转存:scala实时采集题材数据从mongo到hdfs

数据分析:启动Spark Streaming监控hdfs目录,分析统计数据

数据存储:使用spark将统计结果转存到mysql中

数据可视:使用python将mysql的结果数据每隔几秒显示出来并更新到web上

1.2 总体设计(20分) 1.2.1总体流程(10分)

【业务流程图】(5分) 

【数据流图】(5分)

1.2.2 系统功能结构(5分)

【模块组织结构图】(5分)

1.2.3 运行环境(5) 操作系统和软件依赖(2分)

子系统

操作系统

依赖软件

备注

数据采集

macOS

PyCharm ,python3.9,Chrome

数据存储(mongodb->hdfs)

Linux,Window

Vmware,IDEA,Mongodb,Hadoop3.1, scala2.12,jdk1.8

数据分析与存储(spark streaming)

Linux,Window

Vmware,IDEA,Mysql5.7,Hadoop3.1,scala2.12,jdk1.8

数据可视化

macOS

Pycharm,Mysql,web,python3.9

网络拓朴图(3分)

1.3 详细设计(70分) 1.3.1 库表设计(10分)

1.3.2 数据采集(10分)

功能说明:使用python采集数据到MongoDB

采集内容:新闻数据,包括新闻标题,新闻关键词,发布媒体等数据

采集过程:利用Pycharm从新浪网采集新闻数据到mongodb库中

框架:使用scrapy框架

功能设计:将新浪网的新闻数据,包括新闻标题,新闻关键词,发布媒体等数据采集到mongodb远程数据库中。

以下是scrapy框架:

先是访问新浪新闻网:https://feed.mix.sina.com.cn/,获取歌手的起始页和总页数,根据页数构造URL,依次访问URL,获取新闻数据,包括新闻标题,新闻关键词,发布媒体等数据,生成新闻item信息,并且item发送pipeline的processitem进行入库处理,最后将信息录入到mongodb数据库的news_data集合中。

新闻数据的采集流程如下:

源码实现:

1、scrapy脚本:

2、pipline脚本

3、 midlleware脚本

4、item脚本

运行截图:

1.3.3 数据存储(mongodb->hdfs)(10分)

功能说明:使用scala将mongdb数据拉取到hdfs,而且这个过程时实时的不断进行的。

功能设计:连接mongdb数据库,从pythondb数据库的表news_data的表中筛选出满足collector为“蔡安琪”条件的数据,然后遍历数据,将数据导入Hdfs文件系统中。

流程图如下:

源码实现:

运行截图:

在hadoop集群上运行结果截图:

​​​​​​​1.3.4 数据分析与存储(spark streaming)(30分)

功能说明:使用spark streaming分析数据,实时监控 hdfs上从mongdo转储过来的数据,进行实时分析,按发布媒体名称、关键词进行实时统计,将统计结果存入mysql。

功能设计:

1、首先进行初始化sc,ssc:

2、ssc.textFileStream(streamingpath)监控hdfs目录,得到 DStream: lines;

3、对DStream:lines进行map转换,转换keyvalue 的DStream:ItemPairs;

4、进行窗口转换操作ItemPairs.reduceByKeyAndWindow生成htmlCount;

5、对htmlCount进行htmlCount.transform操作,得到发布媒体名称、关键词统计实时分析结果hottestHtml;

6、将分析结果hottestHtml的数据存入mysql;

流程图:

源码实现:

统计关键词Top15:

     2.统计发布媒体Top15:

运行截图:

1、统计关键词Top15:

2、统计发布媒体Top15:

1.3.5 数据可视(10分)

功能说明:使用python语言绘制可视化图片,并上传到web端

功能设计:使用python语言的barplot()根据存储在mysql的分析结果绘制直方图图片,并将这些图片上传到指定的web网页。

流程图:

源码实现:

1、关键词Top15:

2、发布媒体Top15:

运行截图:

1、关键词Top15:

2、发布媒体Top15:

1.4 ​​​​​​​项目小结(5分)

本项目是一个综合性的数据处理实训,总结了本学期Spark快速大数据处理实训课的相关内容。旨在通过对新浪新闻数据的实时采集与分析,展示如何使用Spark及相关技术(Scrapy、Scala、MongoDB、HDFS、MySQL)完成一个实际的数据处理任务。项目的主要目的是通过使用Python进行数据采集,利用Scala将数据从MongoDB导入HDFS,以及使用Spark Streaming进行实时数据分析和处理。

项目从数据采集的步骤开始,使用Scrapy框架从新浪新闻网站抓取数据,并将这些数据存入MongoDB。然后,通过Scala实时地将这些数据从MongoDB转存到HDFS。在这一过程中,使用了Hadoop的分布式文件系统来存储大量数据,并为Spark Streaming准备数据源。

Spark Streaming在这一项目中发挥了关键作用,它用于实时监控HDFS中的新闻数据,并对其进行统计分析。通过Spark Streaming的窗口操作,能够按发布媒体名称和关键词实时统计数据,并将这些统计结果存储到MySQL数据库中。

最后,项目通过Python脚本对存储在MySQL中的分析结果进行可视化处理,生成直方图,并将这些图片上传到一个Web页面,以便直观地查看分析结果。

整个项目展示了从数据采集到数据分析,再到数据存储和可视化的完整流程。通过这个项目,我不仅掌握了Spark Streaming的实战应用,还提升了数据处理和可视化的能力。

总的来说,这个项目它不仅锻炼了我的编程技能,还让我在实际操作中理解了大数据处理和分析的复杂性,以及如何通过断点分析来解决实际问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有