基于Spark的地震数据分析与可视化系统设计与实现

2023-11-24 23:48:20汤梦瑶程斐斐
现代信息科技 2023年18期
关键词:离线可视化用户

汤梦瑶 程斐斐

摘  要:近年来,随着大数据的快速发展,地震数据的采集、存储和分析技术取得了巨大的进步,海量数据得以充分利用。使用Spark SQL对实时爬取到的地震数据进行分析,同时使用Pandas对历史地震数据进行离线分析,采用Django作为前端框架,结合ECharts进行可视化,使用户能够直观地了解地震活动的变化和趋势。这些研究成果有助于提高地震预测的准确性,为相关领域的决策者提供有价值的信息。

关键词:Spark;Python;地震数据;可视化展示

中图分类号:TP311 文献标识码:A  文章编号:2096-4706(2023)18-0020-06

Design and Implementation of a Spark-Based Seismic Data Analysis and Visualization System

TANG Mengyao, CHENG Feifei

(Huanghe S & T Universitry, Zhengzhou  450061, China)

Abstract: In recent years, with the rapid development of big data, the collection, storage, and analysis technology of seismic data has made tremendous progress, allowing massive amounts of data to be fully utilized. Use Spark SQL to analyze real-time crawled seismic data, and use Pandas to offline analyze historical seismic data. Using Django as the front-end framework and ECharts for visualization, users can intuitively understand the changes and trends of seismic activity. These research results help improve the accuracy of seismic prediction and provide valuable information for decision-makers in related fields.

Keywords: Spark; Python; seismic data; visual display

0  引  言

地震是自然界中最古老和最具挑战性的现象之一,它可能会对人类社会造成严重的伤害和损失,因此,对地震的分析和可视化至关重要。地震数据是一种由地震学家收集的用于描述地震活动的数据,它涵盖了地震发生地点、时间、深度、强度等信息。利用这些数据,研究人员可以更好地了解地震的情况,从而提供更准确的预测和解决方案。

1  概  述

本文研究了如何使用Spark来进行地震数据的分析以及可视化。首先,介绍了利用Spark平台对Python爬取的地震数据进行实时分析,使用Pandas对历史地震数据进行离线分析,并通过Django作为前端框架和ECharts进行可视化展示的方法。其次,我们采用Python编写爬虫程序从地震监测站获取地震数据,使用Spark SQL对数据进行分析。同时,我们还使用Pandas对历史地震数据进行深入分析,包括地震强度、深度等指标的综合分析,并对地震活动进行可视化展示,以便更好地理解地震趋势和规律。最后,我们使用Django作为Web框架,将分析结果通过ECharts进行可视化展示,使用户能够直观地了解地震活动的变化和趋势。研究成果有助于提高地震预测的准确性,为相关领域的决策提供有价值的信息。

2  相关技术介绍

2.1  Spark RDD

Spark的核心是弹性分布式数据集RDD。RDD是一种分布式计算框架,它可以将任务分解为小的、可并行处理的块,并在多个机器上并行处理这些块,从而显著加快数据处理的速度。具体来说,RDD通过将作业拆分为可并行处理的块,并在多个机器上并行处理这些块,以实现并行计算。每个块都是一个只读的RDD,可以在其上执行作业,并且只能通过在其他RDD上执行批量操作来创建新的RDD。通过这种方式,可以加快数据处理的速度。

RDD本质上是一个可读的分区记录集,一个RDD可以包含多个分区,一个分区是一个dataset片段。当一个RDD的分区最多只被一个Child RDD的一个分区使用,成为narrow dependency;如果多个Child RDD分区都可以依赖,则称为wide dependency。

在Spark程序中,主要通过操作RDD提供的接口,如map、remove、update、filter等,实现数据的批处理。在RDD操作数据流中,RDD提供了转换和动作两种类型的操作。

1)两种创建方式。从Hadoop的文件系统(或者Hadoop兼容的其他存储系统,比如HBase)读取,然后创建对象RDD。从父RDD转换变成新的RDD。

2)RDD分为两种操作算子类型。转换(Transformation)是将RDD中的元素转换为新的RDD或将原始RDD转换为新的RDD的操作。动作(Action)是在RDD上执行的操作,它可以在RDD上執行一些基本的操作,如添加、删除、更新等。Spark提供了几种不同类型的动作操作。Transformation算子和Action算子。Transformation操作会由一个RDD生成一个新的RDD。Transformation操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换操作不是马上执行,需要等到Actions操作时,才真正开始运算。Action操作会对RDD计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如HDFS)中。

2.2  Spark SQL

Spark SQL(Spark SQL提供了一种用于执行SQL语句的API)是一种用于执行关系型数据库操作的API。它允许您执行各种SQL语句,包括创建表、插入、更新和删除数据等。Spark SQL提供了多种类型的RDD,包括数据帧(DataFrame)、行(Row)和列(Column)。数据帧是一种基本的RDD,它包含一个或多个表,每个表都是一个DataFrame。行是DataFrame中的一行,而列是DataFrame中的一列。

DataFrame是一个分布式的数据集合,是一个非常灵活的数据存储格式,可以存储从R语言中的数据集到关系数据库中的表格等多种类型的数据。它支持多维数组、数值型、分类型、日期型等数据类型。通过调用获得DataFrame的内容作为RDD返回的RDD方法,可以将DataFrame转换为RDD,并且它们之间的数据是互相独立的。

3  系统功能需求分析

本文主要选择Spark大数据计算框架为计算引擎进行数据计算分析,从宏观角度可将系统功能模块拆分为以下几个部分:

1)数据生成模块。在没有真实业务的情况下,实时数据部分能够模拟用户搜索真实的场景所产生的日志数,离线的数据量要大、并且数据具有有效性。

2)采集模块。能实现对实时地震台站数据采集,离线数据。

3)存储模块。要保证数据存储的安全性,其次是尽可能地使用低成本实现高效存储。

4)计算模块。从数据流向分析,要能对实时的数據进行统计分析。其次要能对采集的离线数据进行Spark分析,并且可以自定义查看不同年份的分析结果。

5)可视化模块。要能直观、快速、优雅地对离线和实时计算的结果进行图标展示,使用用户能简洁、清洗的分析结果。

6)用户登录模块。系统运行起来后,用户可以通过登录账号密码进入系统进行功能使用。

7)用户管理。系统开发完成后,对于管理员和普通用户进行权限控制,不同的权限访问的功能不一样。

4  系统总体设计

4.1  系统功能模块设计

通过需求分析,从系统开发的角度可将系统设计为五个功能页面模块:用户、管理员、实时数据分析、离线数据分析、个人设置,图1展示了系统功能框架图。

1)用户。普通用户具有最简单的注册、登录、退出功能,没有权限访问用户管理界面,可以预防用户信息被随意更改。

2)管理员。对用户进行使用的权限管理,管理员有权限访问和修改用户的信息,提升系统访问的安全性,保证系统的内部使用,防止数据的泄漏。

3)实时数据分析。将实时计算的结果通过图表进行动态的展示,打造实时数据监控大屏,直观的观察发现实时搜索中存在的问题。

4)离线数据分析。分别是针对重大地震次数、地震深度、地震级别、地震位置的可视化。

5)个人设置。用户登录进入系统,对个人的头像、昵称、密码、密码等信息进行修改管理,实现用户个性化。

4.2  系统整体架构设计

通过需求分析,本系统从技术架构角度设计规划了六个层面,分别是前端UI、展示层、业务层、计算层、数据库、操作系统层。图2展示了系统的架构图。

1)展示层和前端UI,主要是利用前端页面相关技术和ECharts对业务层所传输的指标数据进行可视化展示,从而能清晰、直观的反应潜在问题。

2)业务层,该层主要介绍了项目后端开发的主要方式以及最终所实现的相关的功能,起到了将数据传输到前端展示层的作用。

3)计算层,主要针对离线数据分析和实时数据分析,实时数据计算使用Spark SQL计算统计,离线部分使用Pandas进行聚合计算。

4)数据库,使用MySQL,用来存储离线数据以及登录用户的信息。

5)操作系统层,是系统运行的最基本的环境,在Windows系统中用于搭建Spark环境以运行需求。

4.3  数据表结构设计

对用户的信息存储到MySQL中,用户系统的登录校验以及数据可视化,以下是系统的表结构详细设计。

用户基本表,如表1所示,主要存储用户的账号、密码以及用户的权限。

5  可视化系统设计与实现

地震数据实时分析可视化部分使用Python语言执行django-admin start project命令搭建Django项目,使用PyMySQL配置连接MySQL数据库进行后端开发,前端使用HTML、CSS、JQuery进行开发,将ECharts的相关文件导入Static文件夹下并引入使用,配合HTML进行图表设计,用户通过账号和密码登录进入系统,管理员有权限对用户信息进行管理,进入主页后用户点击相关的指标分析,后端从MySQL中查询相关数据,通过Django模板对HTML渲染组合ECharts.js实现对计算结果的可视化展示。对于实时数据可视化,使用Ajax异步获取数据动态的刷新ECharts,从而实现实时数据的动可视化。

5.1  实时数据具体实现

实时数据可视化采用Spark SQL进行分析处理,使得数据分析速度更快。对实时数据可视化界面展示,如图3所示。

5.2  离线数据具体实现

离线数据分析采用Spark进行分析,与实时数据分析作对比。

对重大地震次数分析界面展示,如图4所示。由图可知1965—2016年期间,每年发生重大地震的次数均超过200次,且总体趋势上,随着年份的增加地震发生的频率也提高了,从2012年开始有所回落,但每年发生地震次数仍达到400以上。可视化结果如图4所示。从图中我们可以看出,每月不同年份发生地震的次数基本都在[10,60]这一区间,仅有个别年份的个别月份地震发生频率激增,最高超过200次。

对地震深度页面分析界面展示,如图5所示。可见震级8.0以上的地震大部分震源深度较浅,但从整体看地震的震级与震源深度并不存在明显的线性关系。在[250,500]这一区间内,地震的强度和频率明显少于其他深度区间,反而在深度约60以下为地震高发区,且震级强度也分布较广。查资料发现震级只与该地震释放的能量有关,而通常震源深度越浅,造成的破坏就越大。

对地震级别进行分析中可知,地震等级在[5—5.9]的地震发生的次数最多,地震等級主要分布在5.5级。具体分析结果如图6所示。

在对地震位置进行分析可知,如图7所示,可以清楚地看出重大地震主要分布在地震带上,且可以通过年份进行查询,查看不同年份地震带的分布。由图中可明显看出不同的地震带把地球明显分成好几个板块,环太平洋火山地震带上,地震发生频率和震级都较其他地震带要高。地图支持放大缩小,且鼠标指针停在某个点上时可以显示地震等级信息。

5.3  用户模块具体实现

用户登录界面,如图8所示,此页面支持新用户的注册和老用户的登录功能。老用户通过填写用户账号和密码进行登录,新用户通过注册按钮可以跳转到新用户注册页面进行注册,注册完成之后,返回此页面进行系统登录。

用户管理界面,如图9所示,用户管理界面主要有用户搜索功能,用户基本信息查看、修改功能,用户增加、删除功能等。其中,用户搜索功能支持使用用户账号搜索,用户手机号搜索,用户权限搜索,使搜索功能更加完整,实现个性化搜索。

6  结  论

本系统在设计方面,采用Python编程语言数据进行实时爬取,用Spark SQL对爬取到的实时数据进行数据分析,使用Pandas对离线数据进行数据分析;接着使用Django实现了地震数据的可视化显示,使操作员能够在计算机上对地震发生的地点、地震的等级有较为直观且详细的了解;同时,系统能够实现简单的用户登录、添加、删除等功能。

Spark在地震数据分析和可视化方面取得了很大的进步,它能够提供更加准确和可靠的预测和解决方案,从而更好地保护人民的安全。未来,Spark在地震数据分析和可视化方面仍将有很大的发展前景。

参考文献:

[1]  廉西猛.基于Spark的地震数据重建方法的并行化 [J].科学技术与工程,2023,23(8):3168-3176.

[2] 新房,刘义卿.基于分布式系统的地震数据处理及可视化研究 [J].科学技术创新,2021(35):64-66.

[3] 王鹏辉. 基于流式处理的地震大数据系统的研究与设计 [D].济南:山东交通学院,2022.

[4] 王志浩.地震大数据机器学习平台 [D].廊坊:防灾科技学院,2021.

[5] 朱丽萍,王建东,李洪奇,等.Spark框架下地震属性处理方法研究 [J].计算机与数字工程,2018,46(8):1620-1626.

[6] 檀照望.基于Spark的大数据处理可视化工具的设计和实现 [D].北京:北京邮电大学,2017.

[7] 刘禹,李胜乐,李力.大数据平台的测震数据流实时可视化系统设计与实现 [J].测绘地理信息,2022,47(4):77-81.

[8] 吴春毅.云计算下针对大数据的大规模任务处理关键问题研究 [D].长春:吉林大学,2019.

[9] YADAV M L. Query Execution Time Analysis Using Apache Spark Framework for Big Data:A CRM Approach [J].Journal of Information & Knowledge Management,2022,21(4):1-17.

[10] IQBAL M M,LATHA K. A Parallel Approach for Sentiment Analysis on Social Networks Using Spark [J].Intelligent Automation & Soft Computing,2023,35(2):1831-1842.

[11] XIONG S Y,JIANG K W,WU R S. Research on Rule Matching Model Based on Spark [J].Journal of Physics:Conference Series,2022,2303(1).

作者简介:汤梦瑶(2000—),女,汉族,河南商丘人,本科在读,研究方向:数据可视化;程斐斐(1988—),女,汉族,河南焦作人,讲师,硕士研究生,研究方向:大数据分析与研究。

猜你喜欢
离线可视化用户
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
云南化工(2021年8期)2021-12-21 06:37:54
异步电机离线参数辨识方法
防爆电机(2021年4期)2021-07-28 07:42:46
呼吸阀离线检验工艺与评定探讨
浅谈ATC离线基础数据的准备
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
传媒评论(2019年4期)2019-07-13 05:49:14
离线富集-HPLC法同时测定氨咖黄敏胶囊中5种合成色素
中成药(2018年2期)2018-05-09 07:20:09
关注用户
商用汽车(2016年11期)2016-12-19 01:20:16
关注用户
商用汽车(2016年6期)2016-06-29 09:18:54