一种基于Hadoop的海量矢量数据划分方法及系统的制作方法

文档序号:10655403阅读:429来源:国知局
一种基于Hadoop的海量矢量数据划分方法及系统的制作方法
【专利摘要】本发明涉及一种基于Hadoop的海量矢量数据划分方法及系统。该方法包括:基于Hilbert空间填充曲线对空间数据集中的空间要素进行空间编码;通过Map函数和Reduce函数实现空间要素的键值化,并生成空间数据样本信息集;根据所述空间数据样本信息集生成空间数据划分矩阵;根据所述空间数据划分矩阵将各个空间要素划分入对应的存储数据块中,同时将相邻数据块分发至同一集群节点上。本发明系统将Hilbert空间填充曲线引入到数据抽样和划分规则中,充分考虑空间数据相邻对象的空间位置关系、空间对象的自身大小以及相同编码块的空间对象个数等影响要素,不仅保证了样本信息集的空间分布特征,提高了海量矢量数据的空间索引效率;同时也保证了基于HDFS数据块存储的负载均衡。
【专利说明】
-种基于Hadoop的海量矢量数据划分方法及系统
技术领域
[0001] 本发明设及空间大数据技术领域,尤其设及一种基于化doop的海量矢量数据划分 方法及系统。
【背景技术】
[0002] 随着大数据时代的到来,传统的数据存储和处理方式都面临着严峻的挑战,大数 据时代的大量化(Volume )、多样化(Variety )、快速化(Velocity)和价值密度低(Value)等 特点让传统的工具和处理方法有时只能望"数据"而兴叹。在地理空间矢量数据管理领域, 现有成熟的地理信息系统(GIS,geographic information system)空间数据多依赖于关系 型数据库存储,在海量数据管理、高并发访问W及扩展性等方面都有先天的局限性,从而在 大数据时代已经无法发挥应有的作用。
[0003] 云计算技术的出现,为实现海量数据的存储与管理提供了理想的解决方案。其中, 基于分布式存储与并行化处理的Hadoop大数据平台,由于其具有易扩展、高容错、可靠、高 效、经济等特点,近几年在科学计算、人工智能、数据挖掘、信息处理等各个领域都得到了广 泛的应用,成为最受欢迎的开源大数据处理平台之一。Hadoop作为云计算平台,采用 Master/Slavers的主从结构,将海量数据分发至集群节点,利用分布式文件系统HDFS来分 布式存储海量数据,通过MapReduce来进行海量数据的并行计算。因此,基于化doop云计算 平台,进行空间大数据的索引、存储W及管理计算等成为了近年来研究的热点。
[0004] 空间数据抽样与划分方法是空间大数据索引方法及其数据存储的重要组成部分。 化doop是基于皿FS的分布式存储系统,其数据结构W块为单位进行数据存储。而在空间索 引过程中,如何抽样和划分数据是基于化doop存储与管理海量矢量数据的关键。目前基于 化doop建立空间索引的方法采用基于随机抽样理论建立空间数据划分规则,然后对所有空 间要素进行逐一划分。由于样本的随机性,对空间索引技术本身而言,一方面无法保证其空 间索引结果的一致性,另一方面也会丢失空间数据的空间分布特征,从而导致最终数据的 划分结果并不理想。对化doop平台而言,由于样本的随机性,其建立的数据划分规则无法保 证数据的均衡分布,进而造成Reduce负载分布不均,使得整个任务执行效率降低;同时,其 结果也将直接导致HDFS上严重的数据倾斜(Data Skew);另外,目前的并行化空间划分算 法,尽管能够将相邻的要素存储到了同一个数据块中,但并不能保证相邻的数据块存储在 同一个集群节点上。

【发明内容】

[0005] 本发明所要解决的技术问题是:基于Haoop的海量矢量数据划分与存储问题。
[0006] 为解决上述技术问题,本发明一方面提出了一种基于化doop的海量矢量数据划分 方法,该基于化doop的海量矢量数据划分方法包括:
[0007] 基于化化ert空间填充曲线对空间数据集中的空间要素进行空间编码;
[000引通过Map函数和Reduce函数实现空间要素的键值化,并生成空间数据样本信息集;
[0009] 根据所述空间数据样本信息集生成空间数据划分矩阵;
[0010] 根据所述空间数据划分矩阵将各个空间要素划分入对应的存储数据块中,同时将 相邻数据块分发至同一集群节点上。
[0011] 可选地,所述基于化化ert空间填充曲线对空间数据集中的空间要素进行空间编 码包括:
[0012]基于Hi化ert空间填充曲线通过Map函数遍历空间数据集中的空间要素,计算各个 空间要素对应的空间编码。
[0013] 可选地,所述通过Map函数和Reduce函数实现空间要素的键值化,并生成空间数据 样本信息集包括:
[0014] 通过Map函数实现各个空间要素的键值化,获取各个空间要素对应的数据量大小 和空间位置信息;
[0015] 通过Reduce函数生成空间数据样本信息集,其内容包括编码块对应的空间编码、 编码块大小和二级划分样本集合。
[0016] 可选地,所述根据所述空间数据样本信息集生成空间数据划分矩阵包括:
[0017] 根据当前编码块与皿FS数据存储块之间的数据量大小关系,确定该编码块在皿FS 上的存储编号;
[0018] 若当前编码块大小小于存储数据块大小的最小阔值,则所述当前编码块对应的存 储数据块编号与相邻编码块相同,在数据划分过程中将所述当前编码块和与所述当前编码 块相邻的编码块写入同一存储数据块当中;
[0019] 若当前编码块大小大于存储数据块大小的最大阔值,则所述当前编码块对应的存 储数据块包括多个存储编号,在数据划分过程中将所述当前编码块分割为多个数据块进行 存储;对分割后的数据碎片进行合并处理;
[0020] 所述空间数据划分矩阵内容包括空间编码、存储数据块编号和二级划分样本集 厶 1=1 O
[0021] 可选地,所述根据所述空间数据划分矩阵将各个空间要素划分入对应的存储数据 块中,同时将相邻数据块分发至同一集群节点上包括:根据所述空间数据划分矩阵,遍历整 个空间要素集,获取各个空间要素的化化ert编码,通过与划分矩阵匹配,得到相应的HDFS 存储编号,将各个空间要素划分入与所述存储数据块编号对应的存储数据块中;同时将相 邻数据块分发至同一集群节点上。
[0022] 本发明另一方面提出了一种基于化doop的海量矢量数据划分系统,该基于化doop 的海量矢量数据划分系统包括:
[0023] 空间编码生成单元,用于基于化化ert空间填充曲线对空间数据集中的空间要素 生成对应的空间编码;
[0024] 空间数据样本信息集生成单元,用于通过Map函数和Reduce函数实现空间要素的 键值化,并生成空间数据样本信息集;
[0025] 空间数据划分矩阵生成单元,用于根据所述空间数据样本信息集生成空间数据划 分矩阵;
[0026] 空间数据划分单元,用于根据所述空间数据划分矩阵对空间数据进行空间划分。
[0027] 可选地,所述空间编码生成单元包括:
[00%]空间数据编码模块,用于基于化化ert空间填充曲线,通过Map函数遍历空间数据 集中的空间要素,计算各个空间要素对应的空间编码。
[0029] 可选地,所述空间数据样本信息集生成单元包括:
[0030] 空间要素键值化模块,用于通过Map函数实现各个空间要素的键值化,获取各个空 间要素对应的数据量大小和空间位置信息;
[0031] 空间数据样本信息集生成模块,用于通过Reduce函数生成空间数据样本信息集, 其内容包括编码块对应的空间编码、编码块大小和二级划分样本集合。
[0032] 可选地,所述空间数据划分矩阵生成单元包括:
[0033] 存储编号计算模块,用于通过Map函数,根据当前编码块与HDFS数据存储块之间的 数据量大小关系,确定该编码块在皿FS上的存储编号;
[0034] 划分矩阵生成模块,用于通过Reduce函数生成与空间数据样本信息集对应的空间 数据划分矩阵,所述空间数据划分矩阵内容包括空间编码、存储数据块编号和二级划分样 本集合。
[0035] 可选地,所述空间数据划分单元包括:
[0036] 空间数据划分模块,用于根据所述空间数据划分矩阵将各个空间要素划分入与所 述存储数据块编号对应的存储数据块中;
[0037] 数据块分发模块,用于将相邻的数据块分发至同一集群节点上。
[0038] 本发明提供的基于化doop的海量矢量数据划分方法及系统,将化化ert空间填充 曲线引入到数据抽样和划分规则中,充分考虑空间数据相邻对象的空间位置关系、空间对 象的自身大小W及相同编码块的空间对象个数等影响要素,不仅有效地保证了样本信息集 的空间分布特征,提高了海量矢量数据的空间索引效率;同时也保证了基于HDFS数据块存 储的负载均衡,使得海量矢量数据的存储和计算效率得到较大提升。
【附图说明】
[0039] 通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理 解为对本发明进行任何限制,在附图中:
[0040] 图1示出了本发明一个实施例的基于化doop的海量矢量数据划分方法的流程示意 图;
[0041] 图2示出了本发明一个实施例的生成空间数据样本信息集的流程示意图;
[0042] 图3示出了本发明一个实施例的生成空间数据划分矩阵进行数据划分的流程示意 图;
[0043] 图4示出了本发明一个实施例的矢量数据划分方法与现有技术的随机抽样方法的 数据划分结果对比图;
[0044] 图5示出了本发明一个实施例的基于化doop的海量矢量数据划分系统的结构示意 图。
【具体实施方式】
[0045] 下面将结合附图对本发明的实施例进行详细描述。
[0046] 图1示出了本发明一个实施例的基于化doop的海量矢量数据划分方法的流程示意 图。如图I所示,该实施例的基于化doop的海量矢量数据划分方法,包括:
[0047] Sll:基于化化ert空间填充曲线对空间数据集中的空间要素进行空间编码;
[004引S12:通过Map函数和Reduce函数实现空间要素的键值化,并生成空间数据样本信 息集;
[0049] S13:根据所述空间数据样本信息集生成空间数据划分矩阵;
[0050] S14:根据所述空间数据划分矩阵将各个空间要素划分入对应的存储数据块中,同 时将相邻数据块分发至同一集群节点上。
[0051 ]本发明实施例的基于化doop的海量矢量数据划分方法,将化化ert空间填充曲线 引入到数据抽样和划分规则中,充分考虑空间数据相邻对象的空间位置关系、空间对象的 自身大小W及相同编码块的空间对象个数等影响要素,不仅有效地保证了样本信息集的空 间分布特征,提高了海量矢量数据的空间索引效率;同时也保证了基于HDFS数据块存储的 负载均衡,使得海量矢量数据的存储和计算效率得到较大提升。
[0052] 在一种可选的实施方式中,所述基于化化ert空间填充曲线对空间数据集中的空 间要素进行空间编码包括:
[0053] 基于化化ert空间填充曲线通过Map函数遍历空间数据集中的空间要素,计算各个 空间要素对应的空间编码。
[0054] 进一步地,所述通过Map函数和Reduce函数实现空间要素的键值化,并生成空间数 据样本信息集包括:
[0055] 通过Map函数实现各个空间要素的键值化,获取各个空间要素对应的数据量大小 和空间位置信息;
[0056] 通过Reduce函数生成空间数据样本信息集,其内容包括编码块对应的空间编码、 编码块大小和二级划分样本集合。
[0057] 在实际应用中,系统根据用户的输入空间矢量数据集和设定参数N,N为化化ert空 间填充单元总个数(系统默认值为256),通过Map函数遍历所有空间数据要素,对每一个空 间要素做一下操作:
[0化引 1)计算并记录其对应的化化ert空间编码(Scode);
[0059] 2)记录该要素的字符大小(Size);
[0060] 3)记录该空间要素,如果空间要素类型为点(包含多点),则记录该空间要素点坐 标(Point);如果空间要素类型为线(包含多线)或者为面(包含多面),则记录该空间要素的 中屯、点坐标(Cente;rPoint)。
[0061] 通过该Map任务现所有空间要素的键值化,其中键Key为空间编码(Scode),值 化Iue为每一个要素的字符大小(Size)和中屯、点坐标(Cent&rPoint)。
[0062] 具体地,所述根据所述空间数据样本信息集生成空间数据划分矩阵包括:
[0063] 根据当前编码块与皿FS数据存储块之间的数据量大小关系,确定该编码块在皿FS 上的存储编号;
[0064] 若当前编码块大小小于存储数据块大小的最小阔值,则所述当前编码块对应的存 储数据块编号与相邻编码块相同,在数据划分过程中将所述当前编码块和与所述当前编码 块相邻的编码块写入同一存储数据块当中;
[0065] 若当前编码块大小大于存储数据块大小的最大阔值,则所述当前编码块对应的存 储数据块包括多个存储编号,在数据划分过程中将所述当前编码块分割为多个数据块进行 存储;对分割后的数据碎片进行合并处理;
[0066] 所述空间数据划分矩阵内容包括空间编码、存储数据块编号和二级划分样本集 厶 1=1 O
[0067] 本实施方式的基于化doop的海量矢量数据划分方法不仅考虑了空间矢量数据的 空间分布特征,同时也考虑了影响HDFS数据倾斜的要素字符大小等影响要素,并依据HDFS 存储数据块的大小来生成对编码块的二级划分样本集。
[0068] 在实际应用中,如果当前编码块大小(CodeSize)远小于皿FS的存储数据块大小 (BlockSize),则该编码块对应的皿FS存储数据块编号与相邻编码块相同。运样意味着在划 分过程中,将对小于HDR5存储数据块大小的编码块进行合并,直至到与BlockSize相差在阔 值范围之内;如果当前编码块大小(CodeSize)远大于HDFS的存储数据块大小(BlockSize), 则该编码块对应的HDFS存储数据块编号将含有多个IcL运样意味着在划分过程中,将对大 于皿FS存储数据块大小的编码块进行二次划分,直至到与BlockSize相差在阔值范围之内。
[0069] 所述根据所述空间数据划分矩阵将各个空间要素划分入对应的存储数据块中,同 时将相邻数据块分发至同一集群节点上包括:根据所述空间数据划分矩阵,遍历整个空间 要素集,获取各个空间要素的化化ert编码,通过与划分矩阵匹配,得到相应的HDFS存储编 号,将各个空间要素划分入与所述存储数据块编号对应的存储数据块中;同时将相邻数据 块分发至同一集群节点上。
[0070] 本实施例的基于化doop的海量矢量数据划分方法,将化化ert空间填充曲线引入 到海量矢量数据抽样当中,在抽样和划分阶段,充分考虑空间数据相邻对象的空间位置关 系、空间对象的自身大小W及相同编码块的空间对象个数等影响要素,并通过"合并小编码 块,分解大编码块"的划分原则,实现了云环境下海量矢量数据的抽样与划分并行化算法。 本发明方法不仅能够提高海量矢量数据的空间索引效率,而且也能够很好地解决空间矢量 数据在分布式存储皿FS上的数据倾斜问题,从而使得空间矢量数据在化doop中的存储和计 算效率得到较大提升。
[0071 ] W下结合实例数据对本发明的方法做详细的描述。
[0072] 本发明实例数据集为全球县级行政单元数据,为面状要素,实验环境为 化doopl. 2.1 (本方法不限于此版本)。
[0073] -、用户设定方法参数。
[0074] 用户根据系统提示,设定本发明方法的参数,主要包括空间抽样单元大小,即 化化6的网格数目N,和编码块阔值P。本示例设定N= 256; P为0.2,则Pmax为1.2 ;pmin为0.8; 皿FS默认数据块大小为64M。
[00巧]二、空间编码。
[0076] 基于化化ert空间填充曲线,利用Map函数,遍历数据集所有空间要素,获取该要素 的化化ert编码号(Scode ),大小(Size) W及中屯、点坐标(Cente巧Oint);并按照键值对进行 规范化,可表述为:<Scode, Size; Cente;rPoint〉。
[0077] Map空间编码任务完成后,经过排序汇总生成Reduce输入数据记录,每一条记录 Key为空间编码值Scode,化Iue为该空间编码值的包含的所有空间要素集,每条记录可表述 为:<Scode , (Size;CenterPoint) (Size;CenterPoint)......(Size;CenterPoint)〉。该集合 为编码块。
[007引 S、空间抽样。
[0079] 图2示出了本发明一个实施例的生成海量空间数据样本信息集的流程示意图。如 图2所示,针对Map函数的输出结果,通过Reduce函数生成空间数据样本信息集 (SampleSet)。该步骤主要实现对具有相同空间编码(Scode)的空间要素,累计其数据量总 和编码块大小CodeSize,判断CodeSize与HDFS的数据块默认大小BlockSize之间的倍数关 系,如果CodeSize>BlockSize*pmax,则计算该空间编码对应数据的二级划分样本集合 (SubSp 1 its);否则,其二级划分样本集合为{0}。
[0080] 其中,Pmax为HDFS默认数据块的最大倍数,默认值为1.2;二级划分样本集合 (SubSp Iits)计算方法如下:
[0081] 为了保证所建立的空间索引更优,首先计算该编码块对应的长度和宽度(约定X (经度)方向为宽度,Y(缔度)方向为长度),如果宽度大于长度,将计算X方向集合;否则,计 算Y方向集合。计算方法先将该编码中要素的平均大小,然后按照固定间隔,对有序要素获 取相应的X方向或者Y方向的切分点集合,形成二级划分样本集。
[0082] 通过该步骤我们可W得到一个空间数据样本集合A,可表述为:
[0083] A= {Scodei,CodeSizei,subSplitsi} ,(1 = 0,1,2......n)
[0084] 集合A中,Scode为Hi化ert编码;CodeSize为该编码块大小;SubSplits为该编码块 对应的二级划分样本集,该集合用B表示,可表述为:
[0085]
[0086] 四、生成空间数据划分矩阵。
[0087] 图3示出了本发明一个实施例的生成空间数据划分矩阵进行数据划分的流程示意 图。如图3所示,根据空间数据样本信息集A,生成空间数据划分矩阵C,可表述为:
[008引
[0089] 矩阵C中,第一列为空间编码,第二列为数据块IcU第=列为二级划分样本点集合。 由空间数据样本信息集A向空间数据划分矩阵C转换,必须遵循W下原则:
[0090] 1)如果,CodeSizei 小于 BlockSi ze*pmin,那么Bl OckI di+1 = BlockIdi,意味着将合 并运两编码块作为一个数据块;如果两者之和依旧小于BlockSize*pmin,那么,将继续与下 一个编码块要素进行合并,一直到所合并的编码块的大小之和大于BlockSize*pmin;其中, 前置条件为下一个编码块的大小不应超过BlockSize*0.5;
[0091 ] 2)如果,CodeSizei大于BlockSi ze*pmax,那么,将根据其二级划分样本集合B,计 算当前的BlockIdi,其对应的计算公式为:BlockIdi = BlockIdi-I+j ;其中j为当前空间要素 中线点坐标X值或者Y值在集合B中所处的区间。如,小于集合B中第一个值,取0,大于第一个 而小于第二个,取1,W此类推;
[0092] 3)如果,CodeSizei介于最大和最小两者之间,那么,该编码块所对应的数据块Id 计算公式为:BlockIdi = BlockIdi-i+l;
[009引五、空间数据划分。
[0094]基于步骤S中得到的空间划分矩阵C,通过Map函数,遍历所有空间要素,计算其 化化6^空间编码,判断其所属编码块,然后通过Reduce函数,将其写入到对应的数据块 BlockId中,同时将相邻的编码块分发至同一集群节点上,至此,完成所有空间数据的划分 工作。
[00M]为了很好的完成本发明方法的实施工作,系统基于该方法实现了 R-化ee空间索引 的建立。在图4中,分别进行了本发明方法与传统方法在创建空间索引优越性(Area(T)和 Overlap(T))和HDFS存储数据块倾斜度(STD(BlockSize))两个方面做了对比试验。通过对 比,本发明方法不仅能够提高海量矢量数据的索引效率,能够很好的保证数据的空间分布 特征,将相邻或者相近的空间要素划分的相同数据块中进行存储,W提高空间查询分析等 操作效率;同时在HD!^存储数据块的数据倾斜方面,也表现优越,能够将存储数据块的大小 限制在用户设定的阔值范围之内,从而很大程度上提高了空间矢量数据在化doop中的存储 和计算效率。
[0096] 需要说明的是,本方法基于开源云计算平台化doopl. 2.1(不限于该版本)中实现 为一个软件模块,编程语言为JAVA。
[0097] 本实施方式的基于化doop的海量矢量数据划分具有如下有益技术效果:
[0098] 1)将化化ert空间填充曲线引入到海量矢量数据抽样当中,与随机抽样相比,有效 地保证了样本信息集的空间分布特征;
[0099] 2)利用空间数据样本信息集代替了单纯的样本点抽样方案,引入了空间编码、编 码块大小、二级划分样本集等直接因素,来调控空间数据划分规则;
[0100] 3)将化化ert空间填充曲线引入到海量矢量数据划分规则中,利用其编码相邻则 空间位置相邻的特点,来合并相邻的小编码块,不仅能够确保同一数据块中存放相邻的空 间要素集,同时也能够保证相邻的数据块存储在同一个集群环境的节点上。
[0101] 4)根据HDFS默认数据块的大小,来生成空间数据划分矩阵。采用"合并小编码块, 分解大编码块"的原则,来完成数据块的划分工作,有效降低了数据倾斜程度,保证了基于 皿FS数据块存储的负载均衡,使得海量矢量数据的存储和计算效率得到较大提升;
[0102] 5)本方法提供了相应的可配置参数,用户可W针对自己的数据,通过调节化化ert 网格数N,W及编码块阔值P,来进一步提高任务的执行效率;
[0103] 6)基于该方法能够大大提高海量矢量数据的索引效率,而且,也保证了其空间索 引的一致性,不受集群大小的影响;同时也满足了Hadoop对大数据的存储和处理要求;
[0104] 7)本方法针对空间海量矢量数据,适用于云计算平台的集群环境,更适合当前学 术界和工业界相关空间大数据管理系统的应用场景。
[0105] 图5示出了本发明一个实施例的基于化doop的海量矢量数据划分系统的结构示意 图。如图5所示,该实施例的基于化doop的海量矢量数据划分系统包括:空间编码生成单元 51、空间数据样本信息集生成单元52、空间数据划分矩阵生成单元53和空间数据划分单元 54;具体地:
[0106] 空间编码生成单元51,用于基于化化ert空间填充曲线对空间数据集中的空间要 素生成对应的空间编码;
[0107] 空间数据样本信息集生成单元52,用于通过Map函数和Reduce函数实现空间要素 的键值化,并生成空间数据样本信息集;
[0108] 空间数据划分矩阵生成单元53,用于根据所述空间数据样本信息集生成空间数据 划分矩阵;
[0109] 空间数据划分单元54,用于根据所述空间数据划分矩阵对空间数据进行空间划 分。
[0110] 具体地,空间编码生成单元51包括:
[0111] 空间数据编码模块,用于基于化化ert空间填充曲线,通过Map函数遍历空间数据 集中的空间要素,计算各个空间要素对应的空间编码。
[0112] 具体地,空间数据样本信息集生成单元52包括:
[0113] 空间要素键值化模块,用于通过Map函数实现各个空间要素的键值化,获取各个空 间要素对应的数据量大小和空间位置信息;
[0114] 空间数据样本信息集生成模块,用于通过Reduce函数生成空间数据样本信息集, 其内容包括编码块对应的空间编码、编码块大小和二级划分样本集合。
[0115] 具体地,空间数据划分矩阵生成单元53包括:
[0116] 存储编号计算模块,用于通过Map函数,根据当前编码块与HDFS数据存储块之间的 数据量大小关系,确定该编码块在皿FS上的存储编号;
[0117] 划分矩阵生成模块,用于通过Reduce函数生成与空间数据样本信息集对应的空间 数据划分矩阵,所述空间数据划分矩阵内容包括空间编码、存储数据块编号和二级划分样 本集合。
[0118] 具体地,空间数据划分单元54包括:
[0119] 空间数据划分模块,用于根据所述空间数据划分矩阵将各个空间要素划分入与所 述存储数据块编号对应的存储数据块中;数据块分发模块,用于将相邻的数据块分发至同 一集群节点上。
[0120] 本实施例所述的基于化doop的海量矢量数据划分系统可W用于执行上述方法实 施例,其原理和技术效果类似,此处不再寶述。
[0121] 本发明提供的基于化doop的海量矢量数据划分方法及系统,将化化ert空间填充 曲线引入到数据抽样和划分规则中,在抽样和划分阶段,充分考虑空间数据相邻对象的空 间位置关系、空间对象的自身大小W及相同编码块的空间对象个数等影响要素,不仅有效 地保证了样本信息集的空间分布特征,提高了海量矢量数据的空间索引效率;同时也保证 了基于皿FS数据块存储的负载均衡,使得海量矢量数据的存储和计算效率得到较大提升。
[0122] 虽然结合附图描述了本发明的实施方式,但是本领域技术人员可W在不脱离本发 明的精神和范围的情况下做出各种修改和变型,运样的修改和变型均落入由所附权利要求 所限定的范围之内。
【主权项】
1. 一种基于Hadoop的海量矢量数据划分方法,其特征在于,包括: 基于Hilbert空间填充曲线对空间数据集中的空间要素进行空间编码; 通过Map函数和Reduce函数实现空间要素的键值化,并生成空间数据样本信息集; 根据所述空间数据样本信息集生成空间数据划分矩阵; 根据所述空间数据划分矩阵将各个空间要素划分入对应的存储数据块中,同时将相邻 数据块分发至同一集群节点上。2. 根据权利要求1所述的基于Hadoop的海量矢量数据划分方法,其特征在于,所述基于 Hilbert空间填充曲线对空间数据集中的空间要素进行空间编码包括: 基于Hilbert空间填充曲线通过Map函数遍历空间数据集中的空间要素,计算各个空间 要素对应的空间编码。3. 根据权利要求1所述的基于Hadoop的海量矢量数据划分方法,其特征在于,所述通过 Map函数和Reduce函数实现空间要素的键值化,并生成空间数据样本信息集包括: 通过Map函数实现各个空间要素的键值化,获取各个空间要素对应的数据量大小和空 间位置信息; 通过Reduce函数生成空间数据样本信息集,其内容包括编码块对应的空间编码、编码 块大小和二级划分样本集合。4. 根据权利要求1所述的基于Hadoop的海量矢量数据划分方法,其特征在于,所述根据 所述空间数据样本信息集生成空间数据划分矩阵包括: 根据当前编码块与HDFS数据存储块之间的数据量大小关系,确定该编码块在HDFS上的 存储编号; 若当前编码块大小小于存储数据块大小的最小阈值,则所述当前编码块对应的存储数 据块编号与相邻编码块相同,在数据划分过程中将所述当前编码块和与所述当前编码块相 邻的编码块写入同一存储数据块当中; 若当前编码块大小大于存储数据块大小的最大阈值,则所述当前编码块对应的存储数 据块包括多个存储编号,在数据划分过程中将所述当前编码块分割为多个数据块进行存 储;对分割后的数据碎片进行合并处理; 所述空间数据划分矩阵内容包括空间编码、存储数据块编号和二级划分样本集合。5. 根据权利要求1所述的基于Hadoop的海量矢量数据划分方法,其特征在于,所述根据 所述空间数据划分矩阵将各个空间要素划分入对应的存储数据块中,同时将相邻数据块分 发至同一集群节点上包括:根据所述空间数据划分矩阵,遍历整个空间要素集,获取各个空 间要素的Hilbert编码,通过与划分矩阵匹配,得到相应的HDFS存储编号,将各个空间要素 划分入与所述存储数据块编号对应的存储数据块中;同时将相邻数据块分发至同一集群节 点上。6. -种基于Hadoop的海量矢量数据划分系统,其特征在于,包括: 空间编码生成单元,用于基于Hilbert空间填充曲线对空间数据集中的空间要素生成 对应的空间编码; 空间数据样本信息集生成单元,用于通过Map函数和Reduce函数实现空间要素的键值 化,并生成空间数据样本信息集; 空间数据划分矩阵生成单元,用于根据所述空间数据样本信息集生成空间数据划分矩 阵; 空间数据划分单元,用于根据所述空间数据划分矩阵对空间数据进行空间划分。7. 根据权利要求6所述的基于Hadoop的海量矢量数据划分系统,其特征在于,所述空间 编码生成单元包括: 空间数据编码模块,用于基于Hilbert空间填充曲线,通过Map函数遍历空间数据集中 的空间要素,计算各个空间要素对应的空间编码。8. 根据权利要求6所述的基于Hadoop的海量矢量数据划分系统,其特征在于,所述空间 数据样本信息集生成单元包括: 空间要素键值化模块,用于通过Map函数实现各个空间要素的键值化,获取各个空间要 素对应的数据量大小和空间位置信息; 空间数据样本信息集生成模块,用于通过Reduce函数生成空间数据样本信息集,其内 容包括编码块对应的空间编码、编码块大小和二级划分样本集合。9. 根据权利要求6所述的基于Hadoop的海量矢量数据划分系统,其特征在于,所述空间 数据划分矩阵生成单元包括: 存储编号计算模块,用于通过Map函数,根据当前编码块与HDFS数据存储块之间的数据 量大小关系,确定该编码块在HDFS上的存储编号; 划分矩阵生成模块,用于通过Reduce函数生成与空间数据样本信息集对应的空间数据 划分矩阵,所述空间数据划分矩阵内容包括空间编码、存储数据块编号和二级划分样本集 合。10. 根据权利要求6所述的基于Hadoop的海量矢量数据划分系统,其特征在于,所述空 间数据划分单元包括: 空间数据划分模块,用于根据所述空间数据划分矩阵将各个空间要素划分入与所述存 储数据块编号对应的存储数据块中; 数据块分发模块,用于将相邻的数据块分发至同一集群节点上。
【文档编号】G06F17/30GK106021567SQ201610377710
【公开日】2016年10月12日
【申请日】2016年5月31日
【发明人】李林, 姚晓闯, 朱德海, 郧文聚, 杨建宇, 叶思菁, 赵祖亮
【申请人】中国农业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1