基于Spark分布式的栅格代数运算方法、系统及设备技术方案

技术编号:38231325 阅读:11 留言:0更新日期:2023-07-25 17:59
本发明专利技术涉及空间数据处理技术领域,具体涉及一种基于Spark分布式的栅格代数运算方法、系统及设备,旨在提高计算效率。本发明专利技术的基于Spark分布式的栅格代数运算方法包括:基于Spark并行技术分块读取多个空间范围和像元大小相同的栅格数据并序列化为多个第一RDD;对所有的第一RDD进行压缩,得到第二RDD;获取用户输入的表达式,并解析为运算符和函数,进而生成计算器类;根据计算器类,利用Spark对第二RDD进行分布式并行计算,生成第三RDD;对第三RDD进行反序列化并输出至栅格文件。本发明专利技术充分利用了Spark框架的优势,实现对多个栅格数据进行高效、灵活和通用的计算,并支持多种输入和输出格式。入和输出格式。入和输出格式。

【技术实现步骤摘要】
基于Spark分布式的栅格代数运算方法、系统及设备


[0001]本专利技术涉及空间数据处理
,具体涉及一种基于Spark分布式的栅格代数运算方法、系统及设备。

技术介绍

[0002]栅格数据是一种常见的地理空间数据类型,它将地表划分为规则的网格单元,并为每个单元赋予一个数值,表示该单元对应的地理属性或现象。栅格数据计算是指对多个栅格数据进行数学运算或统计分析,以得到新的栅格数据或结果。栅格数据计算在地理信息系统、遥感、气象、水文等领域有着广泛的应用。
[0003]目前,常用的栅格数据计算方法有以下几种:
[0004](1)基于本地文件系统的计算方法:该方法将多个栅格数据文件存储在本地磁盘中,并通过专业软件或编程语言进行读取和计算。
[0005](2)基于Hadoop(一个由Apache基金会所开发的分布式系统基础架构)分布式文件系统(Hadoop Distributed File System,HDFS)的方法:该方法将多个栅格数据文件存储在HDFS中,并通过MapReduce(一种编程模型,用于大规模数据集的并行运算)框架进行分布式计算。该方法可以利用集群资源进行大规模的栅格数据计算任务,但是由于MapReduce框架存在较高的启动开销、不支持迭代和交互式计算等缺点,导致其性能和效率不高。
[0006]针对上述相关技术,专利技术人认为上述第(1)种方法适用于小规模的栅格数据计算任务,当处理大规模或高分辨率的栅格数据时,会遇到内存不足、读写速度慢和并行处理能力低等问题;上述第(2)种方法性能和效率不高:因为MapReduce框架存在较高的启动开销和网络传输开销、不支持迭代式和交互式计算、缺乏内存管理机制,并且需要编写复杂的Map(映射)和Reduce(归约)函数。

技术实现思路

[0007]为了解决现有技术中的上述问题,本专利技术提出了一种基于Spark分布式的栅格代数运算方法、系统及设备,提高了计算效率。
[0008]本专利技术的一方面,提出一种基于Spark分布式的栅格代数运算方法,所述方法包括:
[0009]基于Spark并行技术分块读取多个空间范围和像元大小相同的栅格数据并序列化为多个第一RDD(Resilient Distributed Datasets,弹性分布式数据集);
[0010]对所有的所述第一RDD进行压缩,得到第二RDD;
[0011]获取用户输入的表达式,并解析为运算符和函数,进而生成计算器类;
[0012]根据所述计算器类,利用Spark对所述第二RDD进行分布式并行计算,生成第三RDD;
[0013]对所述第三RDD进行反序列化并输出至栅格文件。
[0014]优选地,“基于Spark并行技术分块读取多个空间范围和像元大小相同的栅格数据
并序列化为多个第一RDD”的步骤包括:
[0015]利用Spark分布式技术从多个输入文件中并行地读取栅格数据,同时在读取过程中将每个栅格数据分割为多个瓦片并序列化,得到与所述输入文件一一对应的第一RDD;
[0016]将所有的所述第一RDD按顺序存入第一数组;
[0017]将所有的所述输入文件的别名按顺序存入第二数组;
[0018]提取所有的所述第一RDD中的栅格数据类型并进行合并,得到最终输出的数据类型;
[0019]其中,
[0020]所述第一RDD为自定义的TileRDD;
[0021]所述第一RDD的每行(Row)中包括一个瓦片(Tile)和一个表示该瓦片位置的索引,且每个瓦片为一个多维数组。
[0022]优选地,“对所有的所述第一RDD进行压缩,得到第二RDD”的步骤包括:
[0023]利用Spark的zip函数,按顺序遍历所述第一数组中的每个所述第一RDD并进行压缩,从而生成第二RDD;
[0024]其中,所述第二RDD中的每行包括一个瓦片数组和一个表示该瓦片数组中各瓦片位置的索引数组。
[0025]优选地,所述计算器类包括:运算表达式、解析后的运算符和函数,以及执行函数;
[0026]所述运算表达式是将所述用户输入的表达式中参与运算的栅格数据替换为所述输入文件的别名从而得到;
[0027]解析后的函数包括自定义函数;
[0028]所述执行函数用于执行所述运算表达式;
[0029]“根据所述计算器类,利用Spark对所述第二RDD进行分布式并行计算,生成第三RDD”的步骤包括:
[0030]对所述计算器类进行序列化;
[0031]利用Spark中的map函数对所述第二RDD中的每行数据运行所述执行函数,向所述执行函数传入所述运算表达式、所述第一数组和所述第二数组,并将运算后的瓦片数据类型转换为所述最终输出的数据类型,从而生成第三RDD;
[0032]其中,
[0033]所述第三RDD的每行中包括一个瓦片和一个表示该瓦片位置的索引。
[0034]优选地,“提取所有的所述第一RDD中的栅格数据类型并进行合并,得到最终输出的数据类型”的步骤包括:
[0035]提取所有的所述第一RDD中的栅格数据类型;
[0036]从提取的所述栅格数据类型中选择取值范围最大的类型,作为所述最终输出的数据类型。
[0037]优选地,“对所述第三RDD进行反序列化并输出至栅格文件”的步骤包括:
[0038]对所述第三RDD进行反序列化并利用Spark并行技术将栅格数据写出至本地或HDFS栅格文件中。
[0039]可选地,用PySpark(基于Python语言开发的Spark接口库)替换Spark进行分布式的栅格代数运算。
[0040]本专利技术的第二方面,提出一种基于Spark分布式的栅格代数运算系统,所述系统包括:
[0041]读取模块,用于基于Spark并行技术分块读取多个空间范围和像元大小相同的栅格数据并序列化为多个第一RDD;
[0042]压缩模块,用于对所有的所述第一RDD进行压缩,得到第二RDD;
[0043]计算器类生成模块,用于获取用户输入的表达式,并解析为运算符和函数,进而生成计算器类;
[0044]计算模块,用于根据所述计算器类,利用Spark对所述第二RDD进行分布式并行计算,生成第三RDD;
[0045]反序列化及输出模块,用于对所述第三RDD进行反序列化,并输出至栅格文件。
[0046]本专利技术的第三方面,提出一种处理设备,包括存储器和处理器,所述存储器上存储有能够被所述处理器加载并执行上面所述方法的计算机程序。
[0047]本专利技术的第四方面,提出一种存储设备,存储有能够被处理器加载并执行上面所述方法的计算机程序。
[0048]本专利技术具有如下有益效果:
[0049]本专利技术利用Spark并行技术分块读取多个栅格数据,并将其转换为第一RDD(自定义TileRDD格式),以便进行高效地分布式处理;将多个第一RDD本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spark分布式的栅格代数运算方法,其特征在于,所述方法包括:基于Spark并行技术分块读取多个空间范围和像元大小相同的栅格数据并序列化为多个第一RDD;对所有的所述第一RDD进行压缩,得到第二RDD;获取用户输入的表达式,并解析为运算符和函数,进而生成计算器类;根据所述计算器类,利用Spark对所述第二RDD进行分布式并行计算,生成第三RDD;对所述第三RDD进行反序列化并输出至栅格文件。2.根据权利要求1所述的基于Spark分布式的栅格代数运算方法,其特征在于,“基于Spark并行技术分块读取多个空间范围和像元大小相同的栅格数据并序列化为多个第一RDD”的步骤包括:利用Spark分布式技术从多个输入文件中并行地读取栅格数据,同时在读取过程中将每个栅格数据分割为多个瓦片并序列化,得到与所述输入文件一一对应的第一RDD;将所有的所述第一RDD按顺序存入第一数组;将所有的所述输入文件的别名按顺序存入第二数组;提取所有的所述第一RDD中的栅格数据类型并进行合并,得到最终输出的数据类型;其中,所述第一RDD为自定义的TileRDD;所述第一RDD的每行中包括一个瓦片和一个表示该瓦片位置的索引,且每个瓦片为一个多维数组。3.根据权利要求2所述的基于Spark分布式的栅格代数运算方法,其特征在于,“对所有的所述第一RDD进行压缩,得到第二RDD”的步骤包括:利用Spark的zip函数,按顺序遍历所述第一数组中的每个所述第一RDD并进行压缩,从而生成第二RDD;其中,所述第二RDD中的每行包括一个瓦片数组和一个表示该瓦片数组中各瓦片位置的索引数组。4.根据权利要求3所述的基于Spark分布式的栅格代数运算方法,其特征在于,所述计算器类包括:运算表达式、解析后的运算符和函数,以及执行函数;所述运算表达式是将所述用户输入的表达式中参与运算的栅格数据替换为所述输入文件的别名从而得到;解析后的函数包括自定义函数;所述执行函数用于执行所述运算表达式;“根据所述计算器类,利用Spark对所述第二RDD进行分布式并行计算,生成第三RDD”的步骤包括:对所述计算器类进行序列化;...

【专利技术属性】
技术研发人员:丁双龙沙志友刘春影李超
申请(专利权)人:易智瑞信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1