空气质量数据分析及web实现

        本次课程设计主要是针对大数据计算框架这门课程的总结,同时利用web进行展示,也是对自己之前学习前端的一次小检验。同时也是自己第一次和同学们进行分工合作完成的作业,自己主要负责对所有的内容整合,并进行web实现。利用暑期时间将实习报告进行整理形成一篇文章,方便日后回顾。


目录

 一、任务描述

 二、方案设计

2.1存储模块设计

2.1.1相关存储技术

2.1.2存储模块设计与实现

2.1.3数据导入

2.2计算模块设计

2.2.1相关计算框架及技术

2.2.2计算模块设计及实现

三、结果展示

四、实习总结


 一、任务描述

        针对北京、大连、青岛、武汉、昆明、郑州这六个城市2015年至2017年的空气质量状况进行了分析,分析内容如下:

 二、方案设计

2.1存储模块设计

2.1.1相关存储技术

        1、Hadoop计算框架 :

        Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且 是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:高可靠性、高效性 、高可扩展性、高容错性 、成本低、运行在Linux平台上 、支持多种编程语言。

        我们用的是hadoop2.0,包括三个分支:HDFS分布式文件系统,Mapreduce分布式并行编程模型,Yarn资源管理和调度器。

        2、hdfs分布式文件系统:

        兼容廉价的硬件设备,流数据读写,大数据集,简单的文件模型,跨平台兼容性。同时采取抽象块的概念,以支持大规模文件存储,简化系统设计,适合数据备份。

        3、MapReduce:

        MapReduce是一个并行计算与运行软件框架。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。

        4、Yarn资源管理和调度器

        5、数据仓库Hive

        Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同)。通常用于进行离线数据处理(采用MapReduce)底层支持多种不同的执行引擎(Hive on MapReduce、Hive onTez、Hiveon Spark)

2.1.2存储模块设计与实现

        数据内容包括:城市,日期,质量等级,AQI指数,当天AQI排名,PM2.5,PM10,SO2,NO2,CO,O3,

2.1.3数据导入

1、启动hdfs、yarn

start-dfs.sh
start-yarn.sh

 2、建立hive表

CREATE external TABLE if not exists keshe1
(city_name string,  //城市
time date,   //日期
quality_level string,   //质量等级
AQI int,   //AQI指数
AQI_rank int,  //当天AQI排名
PM2_5 int,  //PM2.5
PM10 int,  //PM10
SO2 int,   //SO2
NO2 int,   //NO2
CO double,  //CO
O3 int)  //O3
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','; 

3、导入数据到hive表

load data local inpath '/home/hadoop/kechengsheji/shuju.txt' overwrite into table keshe1;

4、查询部分数据

5、建立mysql数据库

mysql中的库为test,故use test;

6、将hive中的数据导出到mysql

        这一步共分为三步:第一现将hive中的数据导出到本地,第二步将本地的数据上传到hdfs,第三步将hdfs上的数据导出到mysql。

 第一步

第二步+第三步

Navicat中呈现:

部分查询:

2.2计算模块设计

2.2.1相关计算框架及技术

        这次实验我们运用了MapReduce计算框架。MapReduce是一个分布式运算程序的编程框架,用于大规模数据集(大于1TB)的并行运算,是Hadoop核心框架之一。核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想。

2.2.2计算模块设计及实现

主要呈现实现查询的语句:

内容一:

select AQI,time from keshe1 where city_name='北京市' and time>='2015-01-01' and time <='2015-12-31' order by time;

内容二:

select city_name,count(quality_level) from keshe1 where time >= '2015-01-01' and time <= '2015-12-31' and (quality_level='优' or quality_level='良') group by city_name;

内容三:

select quality_level,count(*) from keshe1 where  time>='2015-01-01' and time <='2015-12-31' group by quality_level,city_name having quality_level in('优','良','轻度污染','中度污染','重度污染','严重污染') and quality_level='优' order by (case quality_level when '优' then 1 when '良' then 2 when '轻度污染' then 3 when '中度污染' then 4 when'重度污染' then 5 else 6 end);

内容四:

select AQI,time from keshe1 where city_name='青岛市' and time>='2015-01-01' and time <='2015-12-31';

内容五:

select quality_level,count(*) from keshe1 where city_name='青岛市' and time>='2015-01-01' and time <='2015-12-31' group by quality_level;

内容六:

select AQI_rank,time from keshe1 where city_name='北京市' and time>='2017-01-01' and time <='2017-3-31';

内容七:

select avg(PM2_5) from keshe1 where time>='2015-01-01' and time <='2015-12-31' group by city_name;

内容八:

select city_name,paiming from keshe2;

select city_name,jingwei from keshe3;

 三、结果展示

主页面

(上方导航栏可下拉选项点击进入)

 (首页代码将近250行,没有将css部分单独列出,代码较为冗余)

柱状图:

柱状堆叠图:

折线图:

饼状图:

地图:

 (代码过于繁多,就不展示了)

四、实习总结

        web前端代码实现时,大量使用了css、js技术,使用外部样式表进行引入,把HTML代码、CSS代码和JS代码都单独放在不同文件中,然后在HTML文档中使用link标签来引用样式表,大大减少了代码冗余度。echarts实现时经常会因为虚拟机网络的断接导致连接失败。

(仅针对自己做的部分进行总结)

  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值