浙江大学学报(工学版), 2020, 54(9): 1768-1776 doi: 10.3785/j.issn.1008-973X.2020.09.013

计算机技术

两步解码式空间矢量数据并行转换算法

孙乐乐,, 金宝轩,

Spatial vector data parallel conversion algorithm based on two-step decoding

SUN Le-le,, JIN Bao-xuan,

通讯作者: 金宝轩,男,教授级高工. orcid.org/0000-0001-5079-2083. E-mail: jinbx163@163.com

收稿日期: 2019-08-2  

Received: 2019-08-2  

作者简介 About authors

孙乐乐(1992—),男,博士生,从事空间大数据运算研究.orcid.org/0000-0003-4855-0629.E-mail:sycamoresun@foxmail.com , E-mail:sycamoresun@foxmail.com

摘要

传统单机转换工具与基于范围分区方案的并行转换算法存在扩展性差、数据倾斜的问题,为此提出两步解码式空间矢量数据(SVD)并行转换算法. 通过归纳地理空间数据库(GDB)中空间矢量数据的存储编码模式,构建优化后的几何解码函数作为基础工具. 初次解码:仅解析空间元数据,根据几何复杂度平衡解析任务,提高解析与数据量的均衡度;二次解码:借助几何并行解析机制提取、解析压缩几何字节,提高转换效率. 该算法基于Spark实现,将其与ArcGIS单机转换工具、基于范围分区方案的并行查询转换算法进行对比可知,所提算法具有显著的效率、性能扩展优势,转换效率提升了2.5~117倍,大幅降低了几何复杂度不均导致的数据倾斜情况.

关键词: 地理信息系统 ; 空间矢量数据(SVD) ; 数据并行转换 ; 数据倾斜

Abstract

In view of the poor scalability and data skew in traditional single-machine conversion tools and RangePartitioner-based parallel methods, A spatial vector data (SVD) parallel conversion was proposed based on two-step decoding. An optimized geometry-parsing algorithm was introduced as a basic decoding tool with the storage schema of SVD in geospatial database (GDB). Only the spatial metadata was parsed in the first-step decoding, and the task was balanced according to the set geometry complexity to improve the balance between parsing and data. In the later-step decoding, the compressed geometry bytes were extracted and parsed with the geometric parallel parsing mechanism, to improve the conversion efficiency. This algorithm was implemented on Apache Spark, which was compared with ArcGIS conversion tool and the RangePartitioner-based parallel query transform algorithm. The experimental results verify that the proposed algorithm has significant advantages in efficiency and performance expansion; the conversion efficiency is promoted by 2.5−117 times; and the data skew caused by uneven geometric complexity is greatly reduced.

Keywords: geographic information system ; spatial vector data (SVD) ; data parallel conversion ; data skew

PDF (1065KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

孙乐乐, 金宝轩. 两步解码式空间矢量数据并行转换算法. 浙江大学学报(工学版)[J], 2020, 54(9): 1768-1776 doi:10.3785/j.issn.1008-973X.2020.09.013

SUN Le-le, JIN Bao-xuan. Spatial vector data parallel conversion algorithm based on two-step decoding. Journal of Zhejiang University(Engineering Science)[J], 2020, 54(9): 1768-1776 doi:10.3785/j.issn.1008-973X.2020.09.013

空间数据集成转换是对数据的形式特征和内部特征作全部或部分的调整、转化、合成、分解等操作[1],旨在提供更为高效、便捷的数据运算、管理及共享形式. 在大数据时代,数据准备占据了数据挖掘、人工智能等研究应用工作的主体,规范、合理的空间数据格式是进行地理空间分析的基础. 一方面,GIS技术的发展与应用积累了大量的空间矢量数据(spatial vector data,SVD),存储在传统地理数据库(geospatial database, GDB)中,无法直接支持大数据运算分析[2],如:第二次土地调查成果数据包含1.5亿个图斑[3],地理国情普查成果包含2.6亿个图斑[4]. 另一方面,随着分布式、可扩展的动态空间数据组织管理模式的兴起,半结构化矢量数据交换格式被广泛应用于云计算、互联网中,如:GeoJSON、文本坐标格式(well-known text,WKT)、二进制坐标形式(well-known binary,WKB)、地理标记语言(geographic markup language,GML)等[5-6]被用于大数据运算、支撑构建数据挖掘模型[7]. 空间矢量数据集成转换变得越发重要.

根据集成模式,SVD转换可分为数据格式转换模式、数据互操作模式[8-9]及直接数据访问模式[10]. 后2种模式受到数据体量、传输量的限制,难以支撑大数据转换. 数据格式转换模式因具备批处理运算特征而被广泛使用. 现有转换工具多为单机模式,集成在ArcGIS、Orace Spatial、FME、GeoKettle等软件[11-13]中,具有封装度高、灵活便捷等优点,但单机模式限制了其扩展性,使其仅适用于转换中、小体量的数据,对于海量SVD的转换存在耗时长、内存溢出甚至崩溃等问题.

部分学者借助并行计算技术来提升转换效率,提出了多文件并行解析法[14-15]、并行SQL几何解码法(parallel SQL-based geometry decoding,PSGD)[16-17]以及整库迁移法[18]等. 多文件并行解析法利用并行计算框架与ESRI Shapefile(Shp)文件解析工具对多个Shp文件进行解析,实现SVD转换[14-15]. 由于受到容量限制,Shp仅适用于多个小文件并行转换的应用场景,不能直接支持大体量空间矢量数的转换;另一方面,Shp无法解决文件间的体量差异造成的数据倾斜问题. PSGD借助ArcSDE、Oracle Spatial等地理空间数据库中的几何解析转换函数(如:ST_AsText)拼接SQL并行查询GDB,获取转换后的数据[16-17]. 然而,由于SQL与几何解析转换函数的解析、执行环境为GDB,在整个计算过程中,并行计算框架仅用于并行发送SQL查询请求,并未支撑、执行空间几何解析这一计算密集型任务. 此外,SQL分区、分组查询功能有限,无法实现查询、解析任务的负载平衡. 整库迁移式转换法通过指令整体迁移GDB[18],无法改变矢量数据的编码格式.

已有并行方法忽视了几何复杂度对转换过程的影响. 几何复杂度即几何构成点数大小,SVD转换的主体计算是解析、提取坐标信息,几何复杂度的差异直接影响着转换计算量与转换后SVD区块存储的均衡程度. 并行计算框架在读取Oracle数据表时默认采用区间划分(RangePartitioner)分区器,按照均等切分思想尽可能地保证各分区记录数的均衡,但无法解决记录间的内容差异造成的倾斜问题,因此这种分区方法无法用于构建顾及几何复杂度的均衡策略. 当下流行的空间数据划分方法[19-20]能够提高空间数据的均衡程度,但其往往包含取样、迭代式区域统计、区域分解合并等运算,时间成本甚至大于转换运算. 因此,矢量数据并行转换需要一种更加轻便、高效的均衡化方案.

基于上述问题,要实现海量矢量空间数据的高性能转换,需要明确下列3点核心内容:1)将大体量的SVD存储于GDB;2)以并行计算框架执行空间几何解析计算;3)构建顾及空间几何复杂度的高效、轻便的均衡化方案来降低数据倾斜,提高集群资源利用的合理性.

本文提出一种两步解码式SVD并行转换算法. 通过分析GDB中的几何编码模式构建几何解码工具类,在首次解码中提取几何复杂度指标,均衡转换任务;在二次解码中通过空间几何并行解析机制实现基于并行计算框架的SVD解析转换,提高转换性能与扩展性. 本文将阐述算法的实现过程,并从转换性能、数据倾斜2个方面验证所提算法的性能.

1. 空间几何存储与编码

明确空间几何的存储编码模式是解析的基础,是实现并行解析转换的前提. 作为最重要的空间数据传统存储方案,GDB的构建是基于关系模型,诞生于20世纪后期[21],知名GDB产品包括ArcSDE、Oracle Spatial、PostGIS等. 凭借着丰富的功能体系与成熟的Oracle RAC技术,ArcSDE for Oracle这种企业级GDB方案[22]被广泛应用于省级基础地理时空数据库建设[23],存储着海量时空SVD资源. 本章重点分析ArcSDE中SVD的存储、编码模式,归纳空间几何的解析规律.

1.1. 空间几何存储类型

GDB一般以自定义类型存储空间几何,并提供解析函数用于数据查询、转换. ST_GEOMETRY是ArcSDE中存储空间几何的自定义类型,基于Oracle STRUCT类型构建,由13个几何元数据属性(几何的空间四至、几何构成点NUMPTS等)与存储编码压缩后坐标数据的POINTS属性组成,在数据表中以SHAPE字段存储. STRUCT编码模式如表1所示,几何元数据属性为数值型[22],均按“长度位+内容位”的形式编码. 长度位为二进制整数,记录字节长度;内容位采用科学计数法形式存储,即以一个字节存储指数(exponent),以最多20个字节存储尾数(mantissa),解析过程见算法1.

表 1   ArcSDE for Oracle中SHAPE的编码模式

Tab.1  Encoding mode of SHAPE in ArcSDE for Oracle

字节 内容
0 字节数标识,高位为符号位,值为固定值4
1~4 表头元信息,可略过
5~6 标识STRUCT总字节数,二进制
7~m 对应ST_GEOMETRY编码块,m为字节数组末尾位

新窗口打开| 下载CSV


算法1 Oracle数值型字节的数值解析

输入 Oracle中的数值型字节数组bytes.

输出 解析后数值res.

1.   if bytes[0] > 128 //数值为正

2.   index=bytes[0]&0x7f -64

3.    for(int i=1; i<bytes.length;i++)

4.    res+=(bytes[i]−1)*100index−i

5.    return res;

6.   else // 数值为负

7.   index=127−bytes[0]−64

8.    for(int i=1; i<bytes.length;i++)

9.    res+=(101−bytes[i])*100index−i

10.    return –res;

POINTS在Oracle中被存储为BLOB类型,包括BLOB列、LOB索引、LOB段3部分,根据其字节数是否超过3 964选择采用行内或非行内存储[22]. 在行内存储模式下,坐标数据存储在BLOB列,可直接查询访问;而在非行内存储模式下,坐标数据存储在LOB段内,必须通过LOB索引与定位器才能访问. 根据ArcSDE的SVD查询机制,只有涉及几何坐标数据请求的查询才会读取LOB段,否则查询SHAPE字段仅返回几何元数据属性与BLOB列、LOB索引,该机制可以减少输入、输出(input and output, IO),提高性能.

1.2. 坐标压缩与编码

为了节约存储空间,提高传输效率,GDB一般采取压缩编码策略存储坐标数据. 为了保证可解压性与解压效率,ArcSDE并未采用压缩表现更优的空间域或频率域压缩方法,而是通过改变数据类型、存储原点与偏移值的方式实现压缩,其压缩格式为SDELOB,包括以下3个处理步骤.

1.2.1. 坐标值整数化

$\frac{{{V_{\rm{s}}}}}{S} = {V_0} - O.$

式中: ${V_0}$为原始坐标值, ${V_{\rm{s}}}$为整数化值, $O$$S$分别为坐标偏移量、缩放因子,可通过ArcSDE系统表查询获得.

1.2.2. 原点与偏移值计算

根据原点是否唯一可将几何分为2类. 第一类:点、多点、线、面;第二类:多线、多面. 前者仅有一个原点 ${P_0}$,后续折点的坐标可由下式获取:

${P_i} = {P_0} + \sum\limits_{n = 1}^{n = i} {({\rm{d}}{x_n},{\rm{d}}{y_n})}. $

式中: ${P_i}$为点 $i$的坐标值, ${\rm{d}}{x_n}$${\rm{d}}{y_n}$为相对于前一点的坐标位移. 标准的面要素是闭合的,即 ${P_n} = {P_0}$.

第二类由多个第一类几何构成,每个构成部分都符合式(2),但中间增加了分隔位 $- {P_{j,n}}$,其中, $j$为几何序号, $n$为点序号. 由式(2)可知,分隔位坐标值为0,仅用于分隔第一类几何,无数值意义. 总体坐标序列结构如下:

1.2.3. SDELOB编码

文献[24]已对SDELOB压缩、编码进行了详细说明,本文补充2点:1)SDELOB字节为大端Big-endian顺序,解析时需要翻转次序;2)Oracle内LOB块一般为8 kb,SDELOB体积是其整数倍的情况较少见,因此,在非行内存储模式下,LOB段数据块中常常存在值为0的空余位. 在解析时应当利用NUMPTS、SDELOB长度信息共同进行约束,避免这部分的无意义运算.

本文基于上述空间几何编码规律,构建Java工具类用于几何元数据的提取、几何坐标的解析.

2. 两步解码式矢量数据转换算法

该算法以ArcSDE for Oracle为数据源,借助解析工具,通过两步式并行解析,实现SVD向交换格式的转换. 算法的总体思想为“两步解码均衡任务,并行解析提高性能”. 在性能方面,该算法利用空间几何并行解析机制实现并行几何解码转换,以提高传输、转换效率;在数据倾斜方面,初步解码仅从几何元数据中提取几何复杂度指标,以此进行数据划分、重新分区来均衡转换任务,由于并未查询获取非行内存储的大体积空间几何,本次解码避免了大量磁盘IO,降低了均衡处理内存成本. 在后一步解码中,根据存储模式提取SDELOB进行坐标解析、格式加工,由于本阶段的计算任务已均衡化,因此,该算法对集群计算资源、内存资源的利用更加合理、充分,该算法对集群的计算、内存资源利用率更高,能够进一步提高整体转换效率.

考虑到并行作业存在一定的配置、提交延迟,该算法提供单机串行计算模式,用于支持中、小体量SVD的转换,因此,首先根据下式确定计算模式:

$B = \frac{{{N_{\rm{t}}}}}{{{\eta}}} - {t_0}.$

式中: ${N_{\rm{t}}}$为总构成点数, ${\eta}$为节点几何坐标解析的平均效率, ${t_0}$为作业配置耗时. B小于0说明单机转换耗时小于并行作业配置耗时,是最优方案;反之,则说明数据体量较大,应采用并行转换模式. 经测试,本文 ${t_0}$取20 s, ${\eta}$=2 446 070.

2.1. SVD并行查询

SVD并行查询将GDB中的SVD读取为Spark JavaRDD<Row>,不执行其他操作,是两次解码的前提. 首先,按下式估算查询并行度:

$\frac{p}{3} = \frac{{{N_{\rm{r}}}{L_{\rm{r}}}}}{{{{1\;024}^2}{H_{\rm{s}}}}}.$

式中: $p$为并行度; ${N_{\rm{r}}}$为SVD的记录数, ${L_{\rm{r}}}$为记录的平均长度,两者的乘积用于估算SVD的体量大小; ${H_{\rm{s}}}$为集群区块大小,单位为MB. 压缩格式的SVD体积一般为文本交换格式的1/3.

确定 $p$后,计算每个任务查询的数据量 ${N_{\rm{r}}}/ p$与查询范围,构建并行查询矩阵:

${{M}} = \left[ {\begin{array}{*{20}{c}} {{S_0}}&{{E_0}}&{{R_0}} \\ {{S_1}}&{{E_1}}&{{R_1}} \\ \vdots & \vdots & \vdots \\ {{S_i}}&{{E_i}}&{{R_i}} \end{array}} \right].$

式中: $i$为分区号,取值范围0 ~ p${S_i}$$i$分区中对象标识符(object identifier,OID)起始值, ${E_i}$为终止值,两者定义了查询任务的查询范围; ${R_i}$为查询结果数据集,包含属性数据、SHAPE字段查询结果,由于执行的是一般查询,并未访问LOB段,对于非行内存储的SVD,其查询结果中不包含坐标数据. 这一处理减少了IO操作,也降低了后续首次解码阶段均衡处理的内存成本.

2.2. 首次解码

首次解码的工作主要是从 ${R_i}$中解析几何元数据,提取计算几何复杂度指标,进行均衡化处理.

在空间几何中,点要素几何一定为行内存储模式,因其仅有一个构成点,字节长度一定小于3 964. 其他类型几何对象的存储模式需要根据SHAPE字节数与构成点数进行计算、判断. 由第1章可知,SHAPE字段的字节内容包括7位STRUCT元数据字节、几何元数据属性占用的字节、NUMPTS属性占用的字节. 在行内存储模式下,BLOB内的SDELOB对象有一个理论最小体积,因此,行内存储的空间几何SDELOB体积一定大于或等于该值. 基于这一思想,本文提出通过下式判断存储模式、提取信息:

$ \left. \begin{array}{l} H = {L_{\rm{b}}} - {L_{\min }},\\ {L_{\rm{b}}} = {L_{\rm{T}}} - 7 - {L_{\rm{m}}} - {L_{\rm{s}}} - 102,\\ {L_{\min }} = 20 + 2(c - 1). \end{array} \right\} $

式中: $H$为空间几何存储模式,H≥0意味着空间几何采用行内存储模式存储,反之,对应非行内存储模式; ${L_{\rm{b}}}$为POINTS中SDELOB部分的字节长度; ${L_{\rm{T}}}$为SHAPE字段的总字节数;数值7对应STRUCT元数据长度; ${L_{\rm{m}}}$为几何元数据属性的字节长度; ${L_{\rm{s}}}$ 为NUMPT的长度位字节长度,若NUMPT小于254个字节,则 ${L_{\rm{s}}}$为1,否则为5;数值102对应LOB定位器(36)与BLOB列头部(96)的字节总长; ${L_{\min }}$为行内存储模式下根据NUMPTS计算得出的空间几何字节长度的理论最小值,包括固定的8个元数据字节与存储原点坐标的12个字节[24]. 实现后续 $c - 1$个坐标点存储体积的最小化,需要满足的条件如下:1)空间几何的原点唯一,不产生偏移位字节;2)每个坐标点偏移值以2个字节存储,即 $(c - 1)\times2$. 首次解码的均衡化处理策略如下:首先根据H将数据划分为简单几何数据集与复杂几何数据集. 对2个数据集分别进行重新分区处理,分区数根据2个数据集的几何构成点总数之比确定,以保证数据量级的平衡.

2.3. 二次解码

二次解码基于均衡化的转换任务,借助几何并行解析机制实现高性能空间几何解码与数据转换. 首先要获取几何类型、坐标系标识(well-known id,WKID)、NUMPTS信息. 几何类型用于判断原点是否唯一,WKID用于确定式(1)中的 $O$$S$值,以空间几何构成点数和LT为控制,借助几何解码工具类计算几何原点,而后结合式(2)逐点计算后续坐标值,最后将空间数据与属性数据标准化作为目标格式.

二次解码的关键在于准确地获取SDELOB. 对于简单几何数据集,SDELOB直接存储于BLOB列内,要获取SDELOB只须按照式(6)计算各组成部分的长度信息,提取SDELOB字节起始位置,对SHAPE字节内容进行截取.

复杂几何数据集中并未存储SDELOB,结合第1.1节,要获取LOB段中的SDELOB字节,必须在查询中请求几何坐标数据. 由于 ${R_i}$已包含BLOB列、LOB索引,可借助LOB索引来访问LOB段并获取SDELOB. 复杂几何数据集SDELOB的提取与解码过程见算法2。首先,为每个任务建立一个GDB连接,查询、获取一个临时STRUCT对象;其次,逐条遍历当前数据分区的记录,获取其SHAPE字段中的LOB索引、定位器数据,通过重置STRUCT对象的LOB定位器,直接查询对应的LOB段,获取SDELOB字节,避免重复查询数据集中已获取到的属性、几何元数据部分;最后,借助几何解码工具对SDELOB进行几何坐标解析,结合属性与几何元数据执行格式加工、标准化处理并输出、保存.

算法2 复杂几何数据集SDELOB的提取与解码

输入 复杂几何数据集CompGeoPairRDD.

输出 完成解码、转换后的目标格式数据集RDD.

1. for each partition in CompGeoPairRDD do

2.  建立一个GDB连接conn.

3.  获取临时oracle.sql.STRUCT对象tmpStruct.

4.   for each LOB index bytes in this partition do

5.   tmpStruct.setBytes(LOB index bytes).

6.   myDecoder.decode(tmpStruct.getbytes(13)).

7.   属性、空间数据格式加工输出到RDD B.

8.  conn.close.

9. Return RDD B.

3. 算法实现

图1所示,本文算法分为单机和并行2种模式. 单机串行模式面向中、小体量SVD,基于JDBC实现,通过遍历单机查询结果集,借助本研究构建的几何解码工具类对SHAPE字段、属性字段进行解析、格式加工,实现转换. 在并行计算框架中,Spark具备良好的SQL支持及内存运算特性,具有高扩展性、易用性、通用性等优点. 并行模式基于Spark实现,包括3个作业阶段.

图 1

图 1   两步解码式矢量空间数据并行转换算法的实现过程

Fig.1   Implementation process of spatial vector data parallel conversion algorithm based on two-step decoding


3.1. 作业配置阶段

本阶段对并行转换作业涉及的SVD数据体量、作业并行度、Spark SQL相关参数进行配置.

数据体量可通过查询Oracle系统表中SVD数据表的记录数、平均记录大小数据,根据式(4)估算获取,并结合HDFS默认区块大小,估算 $p$值. Spark SQL配置方面,由于Spark本身不支持ST_Geometry类型,必须通过配置数据库方言(SparkSQL Dialect)将其声明为字节数组形式,保证其可解析性. 对于并行查询配置部分,查询分区字段为OID,根据并行查询矩阵 ${{M}}$确定每个查询任务查询数据的范围,配置完成后执行SVD并行查询.

3.2. 首次解码阶段

通过mapPartitionsToPair算子对查询结果DataFrame进行解析. 每个传入Dataframe由Spark Row组成,属性数据按照对应的Spark数据类型直接存储在Row中,可直接获取;由于配置了SparkSQL方言,SHAPE字段内容以字节数组存储于Row中。通过式(6)计算H,并将查询结果键值化为<H,Tuple2<String,byte[ ] $>\!\!>$形式的JavaPairRDD,其中,H值用于标识空间几何存储模式,String代表JSON格式的属性数据,byte[ ]对应SHAPE字段数据。

3.3. 二次解码阶段

利用filter算子,根据JavaPairRDD的Key值过滤得到简单几何数据集与复杂几何数据集,并分别进行重新分区. 对分区后数据的ValueRDD部分通过mapPartitions算子,利用本研究构建的几何解码工具类,提取SDELOB、解析几何坐标,最后进行标准化处理,将输出保存为目标格式,完成转换.

4. 实验与结果分析

4.1. 实验设计与数据

实验的单机环境处理器为Intel Xeon E3-1230 v5,内存容量为8 G,操作系统为Windows 10专业版,ArcGIS版本为10.5. 并行环境为CDH集群,版本为5.13.3,包括4个计算节点,96个CPU虚拟核,节点内存为80 G,Spark版本为1.6.0.

采用自然资源管理单位的SVD来验证算法在真实应用场景中转换生产数据时的表现. 数据信息如表2所示,共包括5个数据集,数据体量由小到大,其中,数据集 ${D_1}$${D_2}$数据区域是指按照高斯3度分带模式投影云南省SVD时属于第33、35号投影带的数据区域. 存储模型为ArcSDE,Oracle版本为12c,处理器为Intel Xeon E3-2630 v4,内存为128 G.

表 2   实验数据集信息

Tab.2  Information of experimental datasets

数据集 数据区域 要素数/M 构成点数/M 数据大小/GB
${D_0}$ 怒江州 0.103 11.939 0.512
${D_1}$ 33° 带 0.041 44.305 1.300
${D_2}$ 35° 带 1.996 192.056 6.300
${D_3}$ 云南省 8.280 730.922 22.900
${D_4}$ 云南省 8.396 2069.057 56.730

新窗口打开| 下载CSV


试验以GeoJSON为目标格式,将所提算法与单机、并行转换方法进行对比. 其中,单机转换法是指ArcGIS中的JSON转换工具,并行转换法包括PSGD与一步解码式SVD转换算法.

PSGD方法来自文献[16],原始方法的计算框架为MapReduce,以ST_AsText函数查询、获取转换为WKT格式的SVD,实现并行转换. 前期测试发现其效率较低,转换数据集 ${D_3}$的耗时已超过单机方法. 为提供更具说服力的结果,统计不同查询数据量 ${N_{\rm{q}}}$下,ST_AsText与ST_AsBinary函数的查询转换耗时 ${T_{\rm{q}}}$,如图2所示. 其中,ST_AsBinary函数可将几何坐标解析为体积更小、更易传输的WKB. 由图2可知,ST_AsBinary函数的耗时更短,且其效率优势随查询数据量的增加愈加明显. 因此,本文结合ST_AsBinary与Spark框架构建更高效的PSGD法,选取效率最优的运行结果与本文算法进行对比.

图 2

图 2   不同查询数据量下ST_AsText、ST_AsBinary函数的查询响应耗时对比

Fig.2   Comparison of query response time between ST_AsText and ST_AsBinary functions with different query data sizes


将本文算法与一步解码式SVD并行转换法进行对比,以验证提出的两步解码处理在提高转换性能、改善数据倾斜方面的作用. 一步解码转换法首先进行SVD并行查询,而后借助本研究构建的几何解码工具直接执行几何解码、标准化,完成转换. 一步解码转换法的均衡方案只有范围分区处理.

4.2. 实验结果分析

4.2.1. 转换性能分析

转换性能包括效率与扩展性两部分. 效率可直接通过转换耗时 $T_{\rm{q}}$进行评价.扩展性部分,一方面,对比、评价各方法在SVD体量不断增大情况下的转换耗时变化情况;另一方面,转换过程中的HDFS写入速率v、集群CPU使用率Uc反映了各方法对集群资源的利用能力,也能用于评价并行转换方法的扩展性. 因此,本文记录4种方法的 $T_{\rm{q}}$值,如表3所示;并统计3种并行转换方法的指标v${U_{\rm{c}}}$的平均值与最大值,如图34所示.

表 3   采用各转换方法转换不同数据集的执行耗时对比

Tab.3  Comparison of execution time by various conversion methods for different datasets min

转换方法 ${D_0}$ ${D_1}$ ${D_2}$ ${D_3}$ ${D_4}$
ArcGIS 5.60 16.42 87.80 252.40 689.22
PSGD 1.90 2.68 8.93 49.98 53.70
一步解码法 0.53 2.08 2.67 4.67 6.73
两步解码法 0.51 1.08 1.73 4.03 5.87

新窗口打开| 下载CSV


图 3

图 3   采用各并行方法转换不同数据集时的集群CPU利用率 对比

Fig.3   Comparison of cluster CPU utilization by various parallel conversion methods for different datasets


图 4

图 4   采用各并行方法转换不同数据集时的集群磁盘写入速率对比

Fig.4   Comparison of write speed in cluster disk by various parallel conversion methods for different datasets


表3可知,并行转换方法具备显著的性能与扩展性优势,转换耗时均保持在60 min内;而ArcGIS单机转换工具的执行耗时随数据量的增加急剧增长,数据集 ${D_2}$的转换耗时相对于 ${D_0}$增大了约15倍,数据集 ${D_4}$的转换耗时高达11.5 h.

并行转换方法间的耗时差异验证了本文算法“两步解码均衡任务,并行解析提高性能”处理思想的性能与扩展性优势. 其中,PSGD方法的耗时最长,结合图34可知,无论转换数据体量的大小如何,PSGD的集群CPU利用率始终无法超过30.9%,磁盘写入速率在并行方法中也是最低的. 这一结果与本文第一部分对PSGD性能缺陷的论述一致,其转换性能被GDB端几何解析转换函数的执行效率所限制,并未实现在云环境中并行执行空间几何解码任务. 一步解码转换法与本文算法避免了GDB端的几何解码,并行查询获取的是GDB中原始形式的SVD,使GDB回归检索、传输数据的基本职能;借助几何并行解析机制,依托于云环境中的计算资源执行几何解码、格式加工,实现了良好的转换效率,最大耗时小于7 min. 一步解码法与本文算法的 ${U_{\rm{c}}}$v值也随着数据体量的增长而增大,能够合理、弹性地利用集群的计算、IO资源,这一结果证实了几何并行解析机制具备较高的性能扩展性.

与一步解码法相比,本文算法更具性能优势. 两者转换数据集 ${D_0}$的耗时最接近,在转换其他数据集时,本文算法具备0.6~1.0 min的效率优势. 结合图34可知,本文算法的集群 ${U_{\rm{c}}}$$v$值更高. 在运算量上,与一步解码法相比,所提算法的两步解码机制虽然增加了基于几何复杂度的数据划分、重新分区等均衡化处理,但几何复杂度可由几何元数据直接提取,因此,均衡化处理的时间成本很小. 此外,均衡化处理使得任务间的几何复杂度更相近,带来了更加均匀的计算任务与数据分配,使转换任务对集群资源的利用更加合理、充分,使得均衡化处理的时间成本小于数据倾斜增加的时间成本,进一步提升了转换效率.

本文算法通过构建的几何解码工具类将几何解码运算转移到并行框架内,充分利用了集群计算的性能、扩展性优势;两步解码充分考虑了几何构成复杂度对转换运算的影响,提高了计算任务分配的均衡度,进一步提升了转换效率. 实验结果证实了所提算法在效率、性能扩展上的优越性.

4.2.2. 数据倾斜分析

为了评价并行转换方法在降低数据倾斜情况上的表现,构建转换耗时倾斜指标 ${K_{\rm{t}}}$与区块倾斜指标 ${K_{\rm{b}}}$. ${K_{\rm{t}}}$为任务间运行耗时的标准差; ${K_{\rm{b}}}$为转换结果存储到HDFS后,全部数据块大小的标准差. ${K_{\rm{t}}}$${K_{\rm{b}}}$的值越小,说明转换方法的倾斜程度越小. 本文算法的均衡化处理将数据划分为简单几何、复杂几何,因此需要分别计算这两部分的指标值.

图5可知,PSGD与一步解码法的 ${K_{\rm{t}}}$值态势十分相似,这是由于两者均采用范围分区方案. PSGD的最大 ${K_{\rm{t}}}$值为3 min,在转换数据集 ${D_3}$时,最慢任务的耗时比最快任务多14 min,转换耗时倾斜度极高. 一步解码法由于采用几何解码工具类,减少了整体转换耗时, ${K_{\rm{t}}}$值也因此减小,但根本上,由于范围分区方案无法顾及数据间的几何复杂度差异,PSGD与一步解码法无法平衡分配几何解码的计算量,造成转换任务耗时倾斜.

图 5

图 5   采用各并行方法转换不同数据集时的耗时倾斜指标对比

Fig.5   Comparison of skewness in execution time by various parallel conversion methods for different datasets


本文算法的 ${K_{\rm{t}}}$值最小,原因包括:1) 算法充分考虑了数据间的几何复杂度差异,通过两步解码平衡了任务间几何解码的计算量,实现了更均衡的转换任务耗时;2) 算法的整体转换耗时最短, ${K_{\rm{t}}}$也随之进一步减小. 对于数据集 ${D_3}$${D_4}$,本文算法的 ${K_{\rm{t}}}$值有所增长,这是因为两步解码的均衡策略并未进行迭代式统计、划分,以很大的均衡化时间成本换取转换任务的绝对平衡,而是兼顾了整体时间成本与数据倾斜.

图6可知,相较于在转换耗时倾斜上的表现,PSGD、一步解码法在提高区块平衡上的表现与本文算法的差距更加明显. 这是由于虽然提高转换效率虽然可以减小 ${K_{\rm{t}}}$值,但对数据区块倾斜问题则毫无作用,而本文算法的两步解码机制在提高区块平衡度方面的优势十分显著.

图 6

图 6   采用各并行方法转换不同数据集时的区块倾斜指标对比

Fig.6   Comparison of block skewness by various parallel conversion methods for different datasets


PSGD与一步解码法存在着严重的区块倾斜问题. 对于前3个数据集,PSGD的 ${K_{\rm{b}}}$值小于一步解码法,这是由于其分区数约为一步分区法的3倍,更多的数据切分数量一定程度上降低了区块间的数据倾斜;面对大体量SVD,过多的并行SQL几何解析任务会极大地占用Oracle的计算资源,导致严重的任务阻塞甚至作业失败. 因此,在转换 ${D_3}$${D_4}$时,PSGD的分区数与一步解码法基本一致,其 ${K_{\rm{b}}}$值的态势与一步解码法也呈现出相似性. 这2种方法的转换结果数据被存储到HDFS后,最小与最大数据块间的体量差异最大可达千兆字节。实验结果证明,RangePartitioner保持分区间记录数一致的分区策略,并不能解决由几何构成复杂度导致的数据倾斜问题。

本文算法在转换5个数据集时均保证了良好的区块平衡性,最大 ${K_{\rm{b}}}$值不到10 MB,复杂几何数据集的 ${K_{\rm{b}}}$值大于简单几何数据集,与算法根据几何复杂度划分、均衡化处理SVD的思想相符. 几何复杂度的差异是导致转换任务计算量分配不均与数据倾斜问题的核心因素, 两步解码处理则充分考虑到这一点, ${K_{\rm{b}}}$值的态势证实了其优良性能.

实验结果证实了以几何复杂度作为核心平衡指标的合理性,验证了两步解码处理在降低数据倾斜方面的优越性;所提算法大幅提高了SVD并行转换中运算量、数据的均衡性.

5. 结 语

针对日益增加的SVD体量与空间大数据应用挖掘需求,本文提出了一种两步解码式空间矢量数据并行转换算法,通过并行查询、两步解码处理实现GDB中海量SVD由传统形式向交换格式的转换. 本文采用自然资源管理单位的真实生产数据,从转换效率、扩展性、数据倾斜方面分析了算法的表现. 与ArcGIS转换工具、PSGD以及一步解码转换法相比,采用两步解码转换算法构建的空间几何并行解析机制提供了最佳的转换性能与扩展性,转换效率提升了2.5~117倍;所提出的顾及几何复杂度的均衡策略大幅提高了SVD并行转换中运算量、数据的均衡性. 实验结果表明,提出的两步解码式转换算法在转换性能、扩展性和数据倾斜方面具有显著的优越性,能够为海量SVD迁移转换、空间大数据应用挖掘提供更高效的数据转换服务.

参考文献

李军, 费川云

地球空间数据集成研究概况

[J]. 地理科学进展, 2000, 19 (3): 203- 211

DOI:10.3969/j.issn.1007-6301.2000.03.002      [本文引用: 1]

LI Jun, FEI Chuan-yun

Overview of study on geo-spatial data integration

[J]. Progress in Geography, 2000, 19 (3): 203- 211

DOI:10.3969/j.issn.1007-6301.2000.03.002      [本文引用: 1]

李清泉, 李德仁

大数据GIS

[J]. 武汉大学学报: 信息科学版, 2014, 39 (6): 641- 644

[本文引用: 1]

LI Qing-quan, LI De-ren

Big data GIS

[J]. Geomatics and Information Science of Wuhan University, 2014, 39 (6): 641- 644

[本文引用: 1]

人民网. 土地调查国家级数据库实现全国“一张图”[EB/OL]. (2015-01-02)[2019-12-24]. http://scitech.people.com.cn/n/2015/0102/c1057-26311822.html.

[本文引用: 1]

人民日报. 首次全国地理国情普查完成[EB/OL]. (2017-01-03)[2019-12-24]. http://www.gov.cn/xinwen/2017-01/03/content_5155812.htm.

[本文引用: 1]

乐鹏, 吴昭炎, 上官博屹

基于Spark的分布式空间数据存储结构设计与实现

[J]. 武汉大学学报: 信息科学版, 2018, 43 (12): 542- 549

[本文引用: 1]

YUE Peng, WU Zhao-yan, SHANGGUAN Bo-yi

Design and implement of a distributed geospatial data storage structure based on spark

[J]. Geomatics and Information Science of Wuhan University, 2018, 43 (12): 542- 549

[本文引用: 1]

YUE P, TAN Z

GIS databases and NoSQL databases

[J]. Comprehensive Geographic Information Systems, 2018, 6 (1): 50- 79

[本文引用: 1]

LI W, SONG M, ZHOU B, et al

Performance improvement techniques for geospatial web services in a cyberinfrastructure environment: a case study with a disaster management portal

[J]. Computers Environment and Urban Systems, 2015, 54 (3): 314- 325

[本文引用: 1]

陈德权

基于GeoJSON的WFS实现方式

[J]. 测绘科学技术学报, 2011, 28 (1): 66- 69

DOI:10.3969/j.issn.1673-6338.2011.01.016      [本文引用: 1]

CHEN De-quan

The realization of WFS based on GeoJSON

[J]. Journal of Geomatics Science and Technology, 2011, 28 (1): 66- 69

DOI:10.3969/j.issn.1673-6338.2011.01.016      [本文引用: 1]

龚健雅, 贾文珏, 陈玉敏, 等

从平台GIS到跨平台互操作GIS的发展

[J]. 武汉大学学报: 信息科学版, 2004, 29 (11): 985- 989

[本文引用: 1]

GONG Jian-ya, JIA Wen-jue, CHEN Yu-min, et al

Development from platform GIS to cross-platform interoperable GIS

[J]. Geomatics and Information Science of Wuhan University, 2004, 29 (11): 985- 989

[本文引用: 1]

占美志, 何政伟, 李程

基于GML的空间数据集成技术研究

[J]. 地理信息世界, 2014, (2): 29- 32

DOI:10.3969/j.issn.1672-1586.2014.02.008      [本文引用: 1]

ZHAN Zhi-mei, HE Zheng-wei, LI Cheng

Research of integration technology of spatial data based on GML

[J]. Geomatics World, 2014, (2): 29- 32

DOI:10.3969/j.issn.1672-1586.2014.02.008      [本文引用: 1]

ASTRIANI W, TRISMININGSIH R

Extraction, transformation, and loading (ETL) module for hotspot spatial data warehouse using Geokettle

[J]. Procedia Environmental Sciences, 2016, 33: 626- 634

DOI:10.1016/j.proenv.2016.03.117      [本文引用: 1]

裴莲莲, 唐建智, 毕小硕

多源空间大数据的获取及在城市规划中的应用

[J]. 地理信息世界, 2019, 26 (1): 13- 17

DOI:10.3969/j.issn.1672-1586.2019.01.003     

PEI Lian-lian, TANG Jian-zhi, BI Xiao-shuo

The acquisition of multi-source spatial data and its application to urban planning

[J]. Geomatics World, 2019, 26 (1): 13- 17

DOI:10.3969/j.issn.1672-1586.2019.01.003     

ANEJIONU O C D, THAKURIAH P, MCHUGH A, et al

Spatial urban data system: a cloud-enabled big data infrastructure for social and economic urban analytics

[J]. Future Generation Computer Systems, 2019, 98 (9): 456- 473

[本文引用: 1]

姚晓闯. 矢量大数据管理关键技术研究 [D]. 北京: 中国农业大学, 2017: 48.

[本文引用: 2]

YAO Xiao-chuang. Research on key technologies of vector big data management [D]. Beijing: China Agricultural University, 2017: 48.

[本文引用: 2]

张少将. 基于Hadoop的地理空间大数据存储与查询技术[D]. 西安: 西安电子科技大学, 2017: 34.

[本文引用: 2]

ZHANG Shao-jiang. Hadoop-based geospatial data storage and query technology [D]. Xi’an: Xidian University, 2017: 34.

[本文引用: 2]

周经纬. 矢量大数据高性能计算模型及关键技术研究[D]. 杭州: 浙江大学, 2016: 89.

[本文引用: 3]

ZHOU Jing-wei. Research on big vector data’s high performance computing model and key technologies [D]. Hangzhou: Zhejiang University, 2016: 89.

[本文引用: 3]

李家, 曹威

Oracle Spatial空间数据在ArcSDE中的图层注册

[J]. 计算机系统应用, 2015, 24 (1): 143- 146

DOI:10.3969/j.issn.1003-3254.2015.01.026      [本文引用: 2]

LI Jia, CAO Wei

Layer register of Oracle Spatial data in ArcSDE

[J]. Computer Systems and Applications, 2015, 24 (1): 143- 146

DOI:10.3969/j.issn.1003-3254.2015.01.026      [本文引用: 2]

吴锦超

基于Oracle的ArcSDE数据迁移

[J]. 测绘与空间地理信息, 2018, 41 (3): 154- 155

DOI:10.3969/j.issn.1672-5867.2018.03.048      [本文引用: 2]

WU Jin-chao

Data migration of ArcSDE based on Oracle

[J]. Geomatics and Spatial Information Technology, 2018, 41 (3): 154- 155

DOI:10.3969/j.issn.1672-5867.2018.03.048      [本文引用: 2]

YAO X, MOKBEL M F, ALARABI L, et al

Spatial coding-based approach for partitioning big spatial data in Hadoop

[J]. Computers and Geosciences, 2017, 106: 60- 67

DOI:10.1016/j.cageo.2017.05.014      [本文引用: 1]

ELDAWY A, ALARABI L, MOKBEL M F

Spatial partitioning techniques in Spatial Hadoop

[J]. Proceedings of the VLDB Endowment, 2015, 8 (12): 1602- 1605

DOI:10.14778/2824032.2824057      [本文引用: 1]

ZEILER M. Modeling our world: the ESRI guide to geodatabase design [M]. Redlands: ESRI Press, 1999: 8.

[本文引用: 1]

ESRI. ArcGIS所支持的Oracle数据类型[EB/OL]. (2014-05-10)[2019-08-01]. http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/na/002n00000067000000/.

[本文引用: 3]

王怀, 樊文锋, 叶芳宏

基于ArcSDE的省级基础地理信息数据库系统建设

[J]. 地理信息世界, 2011, 9 (3): 65- 69

DOI:10.3969/j.issn.1672-1586.2011.03.013      [本文引用: 1]

WANG Huai, FAN Wen-feng, YE Fang-hong

Building provincial fundamental geographic information database system based on ArcSDE

[J]. Geomatics World, 2011, 9 (3): 65- 69

DOI:10.3969/j.issn.1672-1586.2011.03.013      [本文引用: 1]

周龙廷. 直接访问ArcSDE空间数据模型的技术方法研究[D]. 上海: 华东师范大学, 2011: 30.

[本文引用: 2]

ZHOU Long-ting. The technical research of methods to direct access to ArcSDE spatial data model [D]. Shanghai: East China Normal University, 2011: 30.

[本文引用: 2]

/