3731 字
19 分钟
基于Spark的粤港澳大湾区气象分析系统
2026-04-06
无标签

前言#

当前,全球气候变化加速演进,极端天气事件更加频繁和猛烈,不断放大的气象风险对人类生命、经济发展及地球生态构成直接而严峻的威胁。粤港澳大湾区作为中国开放程度最高、经济活力最强的区域之一,各类产业聚集,人口高度密集、基础设施现代化程度高。这使大湾区对气象变化的响应更为敏感。与此同时,伴随大湾区社会发展与需求升级,公众对气象服务的精细化需求不断提升。因此,通过气象专题平台掌握历史与实时气象资讯,对可能发生的各类极端气象灾害提前采取措施,有助于降低灾害损失,保障区域社会经济稳定运行与民生福祉。

技术选型#

为了模拟分布式Hadoop集群平台框架,系统采用三台虚拟机构建大数据平台架构,并在此基础上搭建并兼容各个组件,实际生产过程中,可以此进行复刻或扩展。同时为避免各个组件版本冲突,存在兼容性问题,以便完成数据仓库搭建、数据分析等开发任务,所需的软件名称与版本如下。

软件名称软件版本
VMwareVMware Workstation 16 Pro
CentOSCentOS 7 64位
HadoopHadoop-3.1.3
SparkSpark-3.0.3
HiveHive-3.1.3
MysqlMysql 5.7.44
FlinkFlink-1.14.4
KafkaKafka-2.8.1
ZookeeperZookeeper-3.6.3
SqoopSqoop-1.4.7
JavaJDK 1.8.0_212
PythonPython-3.8.18
MaxKBv1.10.3-lts
DjangoDjango 3.2
PyMysqlPyMysql 0.10.1
系统软件版本图

其中三台虚拟机各功能模块单独运行最低硬件配置如下:

虚拟机名称内存大小处理器内核数量硬盘大小
Hadoop1004GB430GB
Hadoop1015GB430GB
Hadoop1025GB430GB
虚拟机硬件分配表

集群规划表如下所示:

Hadoop100Hadoop101Hadoop102
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerResourceManager、NodeManagerNodeManager
MySQLMySQL服务
HiveHive、MetastoreHive客户端Hive客户端
SqoopSqoop
ZookeeperQuorumPeerMainQuorumPeerMainQuorumPeerMain
KafkaKafkaKafkaKafka
SparkMaster、WorkerWorkerWorker
FlinkJobManager、TaskManagerTaskManagerTaskManager
集群规划表

数据来源#

实时数据来源如下表所示:

数据类型数据来源
基础气象要素(逐日/小时)OpenWeatherMap
空气数据世界空气质量指数项目
城市预警数据中国气象局公共气象服务
潮汐数据预海天气
生活指数数据心知天气
实时数据来源表

离线数据来源如下表所示:

数据分类数据来源时间范围
空气数据天气后报世界空气质量指数项目环境保护署2021/1/1~2025/9/29
城市预警数据NaTyphoon香港天文台澳门天文气象追击站2021~2025/9
基础气象&海洋数据国家青藏高原科学数据中心欧洲中期天气预报中心2000~2024
台风数据中国科学院海洋科学数据中心2000~2024
离线数据来源表

功能设计#

系统总体架构#

本系统是一套集数据采集处理分析预测推荐可视化于一体的综合性数据服务系统,整体功能简述如下:

  1. 数据源与数据采集:支持多源数据接入,包括多源 API、FTP / 文件、网络爬虫,以及气象论坛数据。实现多维度数据的统一采集与初步存储(Kafka 实时存储、HDFS 离线存储、MySQL 专项存储)。
  2. 数据处理与数仓构建:通过 Flink 实现实时计算,Spark 完成批处理挖掘,Hive 执行数仓 ETL 操作,构建 ODS/DWD/DWS/ADS/DIM 分层数仓,实现数据的清洗、转换、分层管理,最终将核心结果存入 MySQL。
  3. 预测与推荐功能:基于 Spark 批处理模块,完成LSTM、随机森林、决策树三种算法的特征工程训练以及模型构建,并完成数据预测分析并同步至数仓;同时基于 MySQL 论坛数据表,通过 TF-IDF 算法实现论坛帖子的智能推荐,推荐结果同步至核心 MySQL。
  4. 智能解读与可视化:后端通过 Django 提供服务,调用 Pyecharts 实现数据可视化,结合 DeepSeek API 完成核心数据的 AI 智能解读;论坛帖子推荐结果与预测、可视化、智能解读内容一同通过 Web 前端展示,支持用户页面交互操作。 系统总体架构图
系统总体架构图

数据流图#

  • 系统的输入链路上细分为离线与实时通道
    • 一是Web网站与协议接口分别输出网页离线气象数据与协议接口离线气象数据,经离线数据采集与接入模块整合为原始离线气象数据,存入离线数据仓库。该仓库将支撑数据仓库分层加工与数据建模,并将加工后的ADS层数据与模型结果同步至模块中;
    • 二是协议接口输出的协议接口实时气象数据,经实时数据采集与清洗模块处理为清洗后实时数据,与离线加工数据一同写入Mysql展示库。
  • 在服务输出层面
    • 用户的用户交互请求经用户交互统一处理模块分发,可通过MaxKB AI智能系统实现自然语言问答,或从Mysql展示库获取图表数据生成可视化结果;
    • 同时,模块还支持账户社交操作,可将账户社交数据写入账户/论坛数据库,实现用户间的论坛互动与数据存储,最终向用户反馈包含智能问答、图表与论坛互动的交互结果。
    • 系统管理员的维护请求经系统维护统一处理模块,可完成对Mysql展示库、账户/论坛数据库、MaxKB知识库的配置与维护,并接收维护结果反馈。 系统一层数据流图
系统一层数据流图

功能模块#

系统在整体设计上主要包括数据采集与处理、数据分析和应用与服务模块。

  1. 数据采集与处理主要实现多源气象数据的离线与实时获取、清洗与标准化;
  2. 气象数据分析面向海量数据完成离线仓库构建和气象要素模型构建与预测;
  3. 应用与服务面向用户提供数据图表可视化展示、气象论坛与推荐、智能问答交互及后台管理功能 系统功能模块设计
系统功能模块设计图

离线多源数据采集功能设计#

本系统将通过Python完成粤港澳大湾区的多源数据的采集任务,其中包括基础气象、空气质量、气象预警、海洋、台风主题等历史数据内容。通过网络爬虫文件/RSS/FTP/API下载等方式进行数据采集。针对数据采集方式多样化的问题,系统的采集模块将针对两种不同的采集方式进行设计。针对接口协议等下载方式,采用Python语言封装各类协议客户端,通过参数化配置建立可靠连接,实现批量下载的自动化采集流程。而针对Web网站,则通过Scrapy网络爬虫框架,实现URL队列遍历调度,结合CSS选择器与正则表达式对网页DOM结构进行解析操作,自动提取数据内容。

离线多源数据采集架构功能流程图

离线多源数据采集架构功能流程图

实时数据采集与清洗功能设计#

在实时数据采集与处理模块上使用Java进行分层架构设计与代码编写,通过定时调度机制实现API接口数据抓取,同时设置请求间隔避免触发API频率限制;利用Kafka消息中间键作为数据传输的载体,实现采集与处理模块的解耦;最后利用Flink流处理框架,通过Flink SQL完成数据的转化与ETL操作,实现实时数据的处理并存储在Mysql数据库中。

实时数据采集架构功能流程图

实时数据采集架构功能流程图

离线数据仓库功能设计#

离线数据采集模块获取基础气象、空气质量、气象预警、海洋及台风等多主题数据后,采用分层式离线数据仓库架构进行处理。该架构以各主题气象数据为数据源,经加载流程同步至数据仓库,依次通过ODS/DIM层完成原始数据存储与维度建模、DWD/DWS层实现数据清洗聚合与主题宽表构建、ADS层输出面向业务场景的应用数据,并由元数据管理模块贯穿全流程,实现数据血缘追踪与表结构管控。

离线数据仓库架构图

离线数据仓库架构图

系统采用Spark+HDFS构建分层式气象数据仓库,实现海量气象数据的标准化加工、结构化存储与高效管理。离线数据仓库模块将遵循数据仓库分层设计思想,采用星型模型作为主要的数仓建模方式,并面向系统的业务主题拆分为事实表与维度表,以减少数据仓库的冗余存储,提高查询性能和计算效率。

星型模型图

星型模型图

数据建模与预测功能设计#

以历史气象要素主题的数据为基础,完成从数据处理到预测的端到端功能设计。核心由四部分组成:

  • 利用Spark从Hive数据仓库中提取历史气象数据,构建包含时间基础特征、周期性特征、滞后特征、统计特征及变化率的时间序列特征体系;
  • 其次,基于上述特征体系通过Pipeline统一完成特征向量化与标准化处理,为模型训练提供规范输入;
  • 随后分别构建传统机器学习模型与深度学习模型
    • 针对决策树、随机森林配置最大深度、树数量等超参数
    • 同时构建双层LSTM网络并采用Dropout正则化策略提升泛化能力,最终保存完整的预处理管道与各类模型文件;
  • 接着通过MAE、RMSE等指标评估各模型性能并生成可视化图表,验证模型有效性;
  • 最后采用递归预测机制,读取最新气象数据作为输入,实现未来七天的滚动预测,并将预测结果持久化至对应数据仓库表中。

数据建模与预测功能流程图

数据建模与预测功能流程图

数据图表可视化展示功能设计#

使用异步请求机制从Django后端接口获取原始数据,并基于ECharts可视化库将获取到的数据初始化并渲染至指定的前端图表容器中以完成图表的首次呈现;同时为筛选交互控件绑定值变化监听事件,当筛选条件发生改变时,系统会依据新的筛选规则对原始数据进行过滤处理,并调用图表渲染逻辑重新生成并展示符合筛选条件的可视化图表,最终输出支持动态筛选交互的可视化图表实例。

数据图表可视化展示功能流程图

数据图表可视化展示功能流程图

气象论坛功能设计#

  • 气象论坛功能模块涵盖帖子管理、回复管理、互动功能、内容组织、智能推荐及权限管理六大核心组件:
    • 帖子管理实现发布、编辑、软删除与自动浏览计数;
    • 回复管理实现发布、编辑、软删除;
    • 互动功能实现点赞、收藏的异步实时反馈;
    • 内容组织实现分类筛选与多维排序;
    • 智能推荐基于内容相似度匹配;
    • 权限管理实现内容与互动记录的访问控制。
  • 其中,基于内容相似度的智能推荐采用TF-IDF算法,在用户访问帖子详情页时触发,核心流程包括数据预处理、特征计算、相似度匹配与推荐生成,技术实现采用稀疏矩阵存储与缓存优化,后端基于Jieba分词与Scikit-learn计算,前端Ajax异步获取,预期减少用户搜索成本并提升气象领域内容利用率。

TF-IDF推荐流程图

TF-IDF推荐流程图

智能问答交互功能设计#

基于开源组件MaxKB搭建数据库调取业务流程并集成DeepSeek API服务,实现从自然语言到数据库查询再到精炼回答的全链路处理。

  • 通过MaxKB页面输入自然语言问题后,业务流程模块将接收请求并转发至DeepSeek API
  • 利用其大语言模型能力将自然语言转换为结构化SQL查询语句
  • 随后执行该SQL语句与Mysql进行交互,获取原始查询结果
  • 再将结果与用户问题一并发送至DeepSeek API,生成符合用户需求的简要精炼回答
  • 最终通过MaxKB将回答返回给用户。

智能问答交互流程图

智能问答交互流程图

后台管理功能设计#

基于Django框架自带的Django Admin进行数据管理,并在各Django APP的models.pyadmin.py文件中进行模型注册。

部份成果展示图#

Scrapy空气质量数据爬虫

Scrapy空气质量数据爬虫

FTP协议接口气象栅格类数据

FTP协议接口气象栅格类数据(Pannoly工具展示)

实时气象预警数据消费

实时气象预警数据消费

实时数据图表看板界面图

实时数据图表看板界面图

离线数据图表界面图

离线数据图表界面图

气象预测数据图表展示页面

气象预测数据图表展示页面

登录界面图

登录界面图

气象论坛界面图

气象论坛界面图

帖子详细与TF-IDF推荐界面图

帖子详细与TF-IDF推荐界面图

智能问答交互功能界面图

智能问答交互功能界面图

智能问答交互功能流程界面图

智能问答交互功能流程界面图
基于Spark的粤港澳大湾区气象分析系统
https://minthana.github.io/posts/基于spark的粤港澳大湾区气象分析系统/
作者
Mint
发布于
2026-04-06
许可协议
CC BY-NC-SA 4.0