1、电脑与电信1 引言随着大数据技术的广泛应用,其对数据进行有效的采集、清洗、整理,然后进行科学的分析,为行业发展1提供数据与决策支撑。近年来,大数据生态技术也处于不断更新迭代和发展中,数据采集、分析、处理组件呈现出多元化特征,如何有效选择相应技术组件,搭建数据分析处理平台,解决行业问题,成为热门的工程应用研究领域。农业是我国的经济基础,目前我国的农产品生产和市场存在一定程度的脱节,需要科学合理的依2据来促进农产品市场投放及价格决策的有效制定。本文综合应用Scrapy、MapReduce、Hive、Sqoop等大数据技术组件,结合SpringBoot与Vue技术,设计并实现一个数据分析处理平台,对
2、农贸批发市场的蔬菜数据从采集、预处理、分析及可视化等环节实现闭环分析处理。该平台的系统架构如图1所示。该平台主要由数据采集、数据预处理、数据分析、数据导出、数据可视化五个子模块组成。其中,数据采集模块选用Scrapy技术实现,采集到的数据被存储到CSV文件2 系统总体设计 基于大数据技术的数据分析处理平台设计与实现杨 宇 刘 昉摘 要:针对目前大数据分析处理组件多而乱、平台技术架构复杂等问题,综合应用MapReduce、Hive、Sqoop等大数据技术,结合Scrapy数据采集框架,设计一种数据分析处理平台,利用SpringBoot及Vue技术搭建Web系统,实现处理结果的可视化。应用该平台对
3、中国蔬菜网上的某一批发市场数据进行分析处理,得出年度蔬菜最高最低差价、年度价格排名前十的蔬菜品种等指标统计结果,分析结果对该批发市场的蔬菜投放及价格调控具有一定的指导意义。(贵州电子信息职业技术学院 大数据与人工智能系,贵州 凯里 556000)关键词:大数据;数据分析;Scrapy;Hive;HDFS;Sqoop;Springboot;Vule;中国蔬菜网中图分类号:TP311.13 文献标识码:A 文章编号:008-6609(2023)01-0081-05作者简介:杨宇(1988),男,贵州凯里人,硕士研究生,工程师,研究方向为大数据技术与应用。基金项目:第二批国家级职业教育教师教学创新团
4、队课题研究项目,项目编号:ZI2021120101。数据采集数据预处理数据分析Scrapy框架CSV存储MapReduce分布式计算框架CSV文件存储Hive数仓工具数据可视化数据导出SpringBoot+Vue前后端分离框架Mysql数据库HDFS分布式文件系统Sqoop图1 平台系统架构811DOI:10.15966/ki.dnydx.2023.z1.027电脑与电信中;数据预处理模块选用MapReduce分布式计算框架实现,预处理后的数据被转存到CSV文件中;数据分析模块采用Hive数据仓库工具实现,分析结果存储在HDFS分布式文件系统上;数据导出模块采用Sqoop工具实现,HDFS上的
5、分析结果数据通过Sqoop导出到Mysql数据库中;数据可视化模块采用行业主流的Springboot+Vue前后端分离框架结合Vue技术实现,以图表形式对Mysql数据库中的结果数据进行可视化。3 系统详细设计3.1 数据采集Scrapy是基于Python语言开发的Web数据抓取框架,只需要编写少量代码,就可以实现从Web服务中快速抓3取数据,其内部构架如图2所示。使用Scrapy进行数据采集基本流程如下:整个Scrapy主要由引擎(Scrapy Engine)、调度器(Scheduler)、下载器(Downloader)、数据解析器(Spiders)、管道文件(Item Pipeline)、
6、下载中间件(Downloader Middlewares)、Spider中间件组成。(1)新建项目工程使用指令:scrapy startproject项目名。在Mapper阶段中,用户自己定义的DataClear Mapper 类需要继承父类Mapper,在Map方法中对读入的每行数据进行清洗(切分数据,并去除对应字段中的无效内容),处理后的数据需要封装到DataBean类中,最后通过Context类中的write方法输出到Reducer阶段。进入项目工程根目录,运行指令:scrapy genspider spider文件名 目标网址3.2 数据预处理在项目工程中,settings.py负责爬
7、虫相关配置,items.py负责定义需要爬取的字段域,Spider包下的爬虫名.py主要负责轮训调度数据爬取、解析、封装及返回,pipelines.py负责对爬取到的数据写CSV文件操作。(3)进入项目工程,进行代码编写(4)启动爬虫程序,开始数据采集由于Scrapy爬取到CSV文件中的数据的某些字段中有无效信息,需要对其进行预处理操作,本文选取基于Hadoop的分布式计算框架MapReduce进行数据清洗。完整的MapReduce编程模型主要包含Map阶段、Reduce阶段4及Driver阶段,其工作流程如图3所示。(2)新建Spider爬虫模块使用命令:cmdline.execute(sc
8、rapy crawl项目工程名.split()Mapper阶段清洗后的数据输入到Reducer阶段,在ReducerTask上做聚合处理,用户自己定义的DataClear Reducer类需要继承父类Reducer,并在Reduce方法中做进一步处理,由于本例中数据的清洗操作已经在Mapper阶段完成,Reducer阶段可以不做操作,直接输出到下一个环节,代码如下所示:输入数据在Mapper阶段MapTask上执行清洗操作,具体在Mapper类中的Map方法中执行,如下代码所示:SchedulerInternetRequestsItemPipelineScrapyEngineDownloade
9、rDownloaderMiddlewaresRequestsSpiderMiddlewaresItemsResponsesSpiders图2 Scrapy构架MapperMapTask1MapTask2MapTasknReducer数据输入ReduceTask1ReduceTask2ReduceTaskn数据输出图3 MapReduce工作流程public class DataClearMapper extends Mapper DataBean dataBean=new DataBean()Override protected void map(LongWritable key,Text v
10、alue,Context context)/数据清洗代码 context.write(dataBean,NullWritable.get();public class DataClearReducer extends Reducer Override protected void reduce(DataBean key,Iterable values,Context context)throws IOException,InterruptedException context.write(key,NullWritable.get();82电脑与电信3.5 数据可视化Driver阶段主要负责数据
11、清洗任务的组装及提交执行,具体是先对DataClearMapper、DataClear Reducer类及每个阶段的输出数据类型进行实例化,然后指定输入输出数据的地址,提交任务,等待清洗任务执行完成。最终将经过MapReduce清洗后的CSV数据文件上传到HDFS,等待数据分析操作。3.3 数据分析在Web服务器上,SpringBoot使用JDBC驱动从Mysql 数据库中读取数据,根据数据可视化前端页面的请求,结合Axios技术将数据反馈给前端页面进行图形可视化。数据可视化采用SpringBoot+vue前后端分离技术框架,结合Echarts进行设计。后台使用SpringBoot搭建,它是一
12、种开源的Java后端开发框架,基于Spring4.0而设6计。前端使用Vue搭建,其是采用基于构建用户界面的渐进式的js框架设计,自底向上逐层应用。Echarts是百度开源的数据可视化组件,用于实现各种图标绘制。数据可视化的设计流程如图5所示。4.1 数据采集通过Scrapy爬取到的数据共计6820条,保存在data.csv文件中,显示前三条如下:2020-7-3.4 数据导出Hive进行数据分析的基本步骤如下:(2)分析数据计算关键指标。2020-7-21,大白菜,天津何庄子鲜活农产品中心批发市场,1.40,1.80,1.60,元/千克(kg),查找Hive是一种对海量数据进行分析的工具。H
13、ive在通过HQL语句进行数据分析时,底层被Driver驱动器转换为MapReduce代码在Yarn上执行,数据分析时,数据保存在HDFS上,库表基本信息、数据目录等元数据信息保存5在Mysql的Metastore数据库中。(1)根据清洗后数据字段信息,在Hive中创建表单,并导入数据。Hive分析完的结果数据被保存在HDFS上,需要通过Sqoop工具将数据从HDFS导出到Mysql数据库中。数据分析使用Hive数据仓库实现,其体系架构如图4所示。4 结果分析本文的实验环境表1所示。本文以中国蔬菜网http:/ rket/235.html天津何庄子鲜活农产品中心批发市场的数据为例,如图6所示。
14、2020-7-21,洋白菜,天津何庄子鲜活农产品中心批发市场,1.20,1.60,1.60,元/千克(kg),查找图6 目标数据网站ClientCLIJDBCDriverQueryOptimizer优化器Meta storeSQLParser解析器PhysicalPlan编译器Execution执行器MapReduceHDFS图4 Hive体系架构数据库Web服务器前端页面JDBCAXiosMysqlSpringBootVue+Echarts图5 数据可视化流程内容处理器内存操作系统scrapypythonHadoopJDKSpringBootVueMysql大小或版本Intel Xeon E
15、5-2020v4X216GB DDR4X10Centos7scrapy1.5.1python3.7.0Hadoop-2.7.4JDK1.8SpringBoot2.4.0Vue2.0Mysql5.7.2表1 实验环境说明83电脑与电信hdfs dfs-put data.csv/上传到HDFS上面,启动MapReduce程序进行数据预处理,处理完成后的结果保存在dataresult.csv文件中,输出前三条数据如下所示:21,油菜,天津何庄子鲜活农产品中心批发市场,2.40,3.00,2.60,元/千克(kg),查找洋白菜 天津何庄子鲜活农产品中心批发市场 1.20 1.60 1.60 2020-
16、7-21使用Sqoop将统计结果从HDFS导出到Mysql数据库中,操作指令如下:大白菜 天津何庄子鲜活农产品中心批发市场 1.40 1.80 1.60 2020-7-212020年蔬菜最高价和最低价的差价如图7所示。油菜 天 津 何 庄 子 鲜 活 农 产 品 中 心 批 发 市 场 2.40 3.00 2.60 2020-7-214.2 数据预处理通过观察数据采集阶段获取的数据可以得出:日期字段有“”,价格字段有“”,后面两个字段对指标分析没有用,需要省去。将data.csv数据文件通过操作指令:4.4 数据导出4.5 数据可视化5 结语启动Hive,创建数据表,将HDFS上的数据导入到Hive数据仓库中,创建表指令如下:本文通过Scrapy数据采集、MapReduce数据清洗、Hive数据分析、Sqoop数据导出、SpringBoot+Vue+Echarts数据可视化,提供一种基于大数据技术的数据分析处理平台的详细设计思路,并以中国蔬菜网作为实验数据来源,利用该平台采集并分析某一批发市场的年度蔬菜最4.3 数据分析2020年最高价排名前十的蔬菜品种如图8所示。图7 2020蔬菜最