(大数据应用考察)全国水资源分析可视化

本文详述了一次基于Python、Flask和Hadoop的大数据处理与可视化实验。通过爬取实时水情数据和统计年鉴数据,利用Hadoop集群进行预处理,接着运用ECharts进行数据展示。实验中,数据被划分为不同用水量级别,通过相关性分析、序列预测和Flask交互,揭示了我国水资源状况和节水的重要性。
摘要由CSDN通过智能技术生成

1实验环境

1.1本次实验采用python、flask、hadoop分布式集群。需要搭建的环境包括:Python、flask、MySql和hadoop分布式集群。编程主要在 Visual studio Code中进行。

1.2主要环境包括

1.2.1Flask环境配置

  首先搭建flask,创建文件夹,在虚拟环境中运行。
在这里插入图片描述
      virtualenv是一个虚拟的Python环境构建器。 帮助用户并行创建多个Python环境。 因此,它可以避免不同版本的库之间的兼容性问题。这里使用虚拟环境在开发和生产中管理项目的依赖关系。虚拟环境是独立的Python库组,每个项目一个环境。一个项目安装的软件包不会影响其他项目或操作系统的软件包,安装virtualenv。

pip install virtualenv //安装Flask命令
venv\scripts\activate  //要激活相应的环境

  app.route(rule, options):rule 参数表示与该函数绑定的URL。options 是要转发给底层Rule对象的参数列表。
  通过flak连接数据库和前端,结合python读取数据库数据,对数据进行分析和统计,将数值的结果反馈到前端。引入ECharts它是一个使用 JavaScript 实现的开源可视化库,使用它将数据动态展示出来。

下载:echarts.min.js
数据库:https://echarts.apache.org/examples/zh/index.html#chart-type-bar
1.2.2搭建hadoop分布式集群

  集群的部署集群可以采用分布式集群或者伪分布式集群,我这里采用的是分布式集群原理和伪分布式集群一样。
  主要实现的步骤如下:

  • 静态ip的设置

  将虚拟机IP设为静态,并进行配置

[root@ljc100 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改为如下

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e59bb0ad-2918-4de6-93fa-46bd94c0a474"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.87.100
GATEWAY=192.168.87.2
DNS1=192.168.87.2
  • 主机名的设置
  • hosts文件修改(ip和主机名的映射关系)
# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@hadoop100 ~]# hostname   //查看主机名
hadoop100
[root@hadoop100 ~]# more /etc/hosts    //查看映射文件,查看部署的主机
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1  localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.87.100 hadoop100            //作为主节点
192.168.87.101 hadoop101
192.168.87.102 hadoop102
192.168.87.110 hadoop110
  • 关闭防火墙(临时和永久)

关闭防火墙,关闭防火墙开机自启

[root@ljc100 ~]# systemctl stop firewalld
[root@ljc100 ~]# systemctl disable firewalld.service
  • ssh免密码登录

实现在集群中免密码登录
主节点能免密码登录其他的从节点

cd /data
cd soft/hadoop-3.2.2
ssh-copy-id -i hadoop101  //实现秘钥从主节点传送给101
yes
Password:123456
ssh hadoop101  //测试可以免密码
  • JDK的安装(jdk1.8)
  • hadoop伪分布式的安装,4个配置文件的配置
  • 将配置文件拷贝到另两个从节点(hadoop101、hadoop102)

……配置文件过程忽略
将配置拷贝到其他

[root@hadoop100 hadoop-3.2.2]# cd ..
[root@hadoop100 soft]# scp -rq hadoop-3.2.2 hadoop101:/data/soft/
[root@hadoop100 soft]# scp -rq hadoop-3.2.2 hadoop102:/data/soft/

//hadoop100实现效果
[root@hadoop100 hadoop-3.2.2]# jps
33072 SecondaryNameNode
33712 Jps
33353 ResourceManager
32827 NameNode
  • 启动和关闭hadoop集群

  这里注意我们可以简化工程量,只要做到主节点对两个从节点的免密码登录,下载hadoop后对文件进行配置完成后,需要对hadoop进行初始化一次,以后就不需要初始化,命令启动集群。

//初始化一次
[root@hadoop100 hadoop-3.2.2]# bin/hdfs namenode -format

在这里插入图片描述
  启动和关闭集群。搭建成功后可以通过浏览器查看集群实现的效果,我这里通过8088和9870两个端口可以查看。

启动:sbin/start-all.sh
关闭:sbin/stop-all.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2数据集选用及爬取

2.1数据集来源1

数据来源:http://xxfb.mwr.cn/sq_djdh.html,对“全国大江大河实时水情”进行动态的爬(real-time_rep.py),该网站的数据每一日都是变化的,也就是每日更新数据,过去的数据不展示,通过“任务计划程序”每日定时执行代码进行爬取。
图1 数据来源实时水情

(该网页信息爬取有专门的一个博客介绍,可自行查找)

//对全国大江大河实时水情进行数据爬取
attributes = {
   
    "poiAddv": "行政区",
    "poiBsnm": "流域",
    "ql": "流量",
    "rvnm": "河名",
    "stcd": "站点代码",
    "stnm": "站名",
    "tm": "时间",
    "webStlc": "站址",
    "wrz": "警戒水位",
    "zl": "水位",
    "dateTime": "日期"
}
requests.packages.urllib3.disable_warnings()
html = requests.get('http://xxfb.mwr.cn/hydroSearch/greatRiver',verify=False)
if html.status_code == 200:
    resour = html.json()
    rivers = dict(resour)["result"]["data"]#转数组了
    river_table = pd.DataFrame(rivers[0], index=[0])
    for i in range(1, len(rivers)):
        river_table = pd.concat([river_table, pd.DataFrame(rivers[i], index=[0])])
    for str_col_name in ["poiAddv"
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值