CN106209989B - 基于spark平台的空间数据并行计算系统及其方法 - Google Patents
基于spark平台的空间数据并行计算系统及其方法 Download PDFInfo
- Publication number
- CN106209989B CN106209989B CN201610496673.XA CN201610496673A CN106209989B CN 106209989 B CN106209989 B CN 106209989B CN 201610496673 A CN201610496673 A CN 201610496673A CN 106209989 B CN106209989 B CN 106209989B
- Authority
- CN
- China
- Prior art keywords
- spatial
- data
- space
- grid
- voronoi diagram
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于spark平台的空间数据并行计算系统及其方法,该系统用于移动通话数据的并行计算,包括索引和存储层,其配置为在spark集群中读取并存储待处理的空间数据集,空间数据集内存储的空间数据为移动通话数据;对所述待处理的空间数据集建立空间索引;查询操作层,其配置为接收API层的空间操作请求,响应空间操作请求,根据空间索引来实现对所述待处理的空间数据集中移动通话数据的空间操作,并将空间操作后的结果反馈至API层;API层,其被配置为通通过空间操作接口接收输入的空间操作请求并传送至查询操作层;接收查询操作层中对空间数据进行空间操作后的结果并输出。
Description
技术领域
本发明涉及移动通信数据业务技术领域,尤其涉及一种基于spark平台的空间数据并行计算系统及其方法。
背景技术
随着信息技术的深入发展,移动电话,车载网络等各种设备不断的产生着大量的空间数据。空间数据集通常是超大容量的,远超过单台机器的计算能力。因此,我们需要一个云计算框架去存储和计算大规模空间数据。通常我们都是使用Hadoop或者spark等平台来辅助处理大型数据集。
一方面,类似于SpatialHadoop和Hadoop-GIS都是通过扩展Hadoop来支持空间数据并行处理。然而,由于Hadoop的磁盘级计算的特点,这些系统在处理复杂和交互的工作方面表现很差。
而另一方面,Apache Spark是一个快速的,通用的大规模数据处理引擎。在支持进行大型集群内存计算的RDD的帮助下,Spark在交互查询和迭代计算方面表现的比Hadoop好100倍以上。GeoSpark是Spark扩展里最先进的空间数据处理系统,其通过扩展弹性分布式数据集(RDDS)来支持空间数据。SpatialSpark在Spark上实现空间连接(Spatial Join)。
移动通信数据业务技术中,以下几点限制了GeoSpark和SpatialSpark在空间数据处理上的性能:
(1)GeoSpark和SpatialSpark都是根据区域来分布空间数据,该方法会将相同区域的空间数据分布到相同的机器上。这样在处理范围查询时就会有一个不可避免的问题——负载不均衡。在将数据集分布到机器中后,每台计算机都会建立一个本地索引,四叉树或者R树。当要将范围查询从查询发起的机器广播到其余每台机器上时,只有查询发起的机器会持续的从根节点到叶节点的检索整个树来发现查询范围中的空间数据,而其余机器会在检索过索引树的根节点后停止。
(2)在GeoSpark和SpatialSpark处理空间连接(Spatial Join)查询时,系统会有巨大的通信成本和负载不均衡问题。Spark以一种RDD的形式来存储和管理空间数据,此RDD时一种不可改变的弹性分布式数据集。RDD提供两个分区策略来并行的处理数据集分区:HashPartitioner计算数据键的哈希值,使用模数为数据进行分区;RangerPartitioner试图确保在每个分区的数据量是相等的。所有策略仅适用于一维数据的分区。
在Spark框架里,SparkSQL是Spark用来进行数据管理和数据查询的部分,他具有完整的数据查询处理过程。SparkSQL在Apache Spark的顶端,它提供了一个数据框的API用以执行关系操作,以简化Spark中的大规模数据处理。SparkSQL为用户提供了一个语言层,用以交互式的sql查询操作。当运行查询,SparkSQL将SQL查询转化成RDD操作。然后SparkSQL运行RDD的文件查询。当数据是成规模时,这需要很长的时间。此外,SparkSQL并不支持空间数据类型和空间操作,所以当数据是空间数据时,它会像对待普通数据一样进行处理,并不会利用其空间属性。
发明内容
为了解决现有技术的缺点,本发明提供一种基于spark平台的空间数据并行计算系统及其方法。本发明的该系统用于移动通话数据的并行计算,能够支持更加高效和便捷的范围查询和空间连接的操作。
为实现上述目的,本发明采用以下技术方案:
一种基于spark平台的空间数据并行计算系统,该系统用于移动通话数据的并行计算,该系统包括从底层到顶层三个层次:
索引和存储层,其配置为在spark集群中读取并存储待处理的空间数据集,所述空间数据集内存储的空间数据为移动通话数据,移动通话数据的位置信息是相应移动通信基站的位置;根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;结合ZCurve Hashing分区法与基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引;
查询操作层,其配置为接收API层的空间操作请求,响应空间操作请求并将空间数据的空间操作转化为RDD文件操作,进而根据空间索引来实现对所述待处理的空间数据集中移动通话数据的空间操作,并将空间操作后的结果反馈至API层;
API层,其被配置为通过扩展SparkSQL来提供一个类SQL API来支持规则的空间数据关系和空间数据类型,且通过空间操作接口接收输入的空间操作请求并传送至查询操作层;所述API层还被配置为接收查询操作层中对空间数据进行空间操作后的结果并输出。
所述空间数据类型还包括用户自定义空间数据类型。
本发明通过扩展用户自定义空间数据类型,进一步扩展了本发明的该并行计算系统处理的空间数据类型,能够兼容多种空间数据类型,进一步提高了空间数据处理的速度。
所述空间数据关系包括还包括用户自定义空间数据关系。
本发明通过扩展用户自定义空间数据关系,进一步扩展了本发明的该并行计算系统处理的空间数据关系,能够兼容多种空间数据关系,进一步提高了空间数据处理的速度。
所述查询操作层中的空间操作包括范围查询和空间连接。
本发明的基于spark平台的空间数据并行计算系统,使用spark内存计算来处理移动通话数据,大幅提高了计算速度;
采用Z Curve Hashing分区法,将空间数据集分布到spark集群中,保持了空间数据并行计算系统良好的负载均衡;在建立索引时,使用基于Voronoi图的密度分割方法,从而最大限度的提高并行化,避免数据失真问题。基于相同类型的每个移动通话基站会覆盖大约相同数量的移动用户,以避免资源浪费的实际情况。
本发明还扩展了SparkSQL,使得基于spark平台的空间数据并行计算系统支持多种空间类型和空间操作,从而达到了充分利用数据的空间属性目的。
一种如基于spark平台的空间数据并行计算系统的工作方法,该方法用于对移动通话数据的并行计算,包括:
在配置有空间数据并行计算系统的spark集群中,读取并存储待处理的空间数据集,其中,空间数据集内存储的空间数据为移动通话数据,移动通话数据的位置信息是相应移动通信基站的位置;根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;结合Z Curve Hashing分区法与基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引;
通过扩展SparkSQL来提供一个类SQL API来支持规则的空间数据关系和空间数据类型,且通过空间操作接口接收输入的空间操作请求并传送至查询操作层;
查询操作层接收API层的空间操作请求,响应空间操作请求并将空间数据的空间操作转化为RDD文件操作,进而根据空间索引来实现对所述待处理的空间数据集中移动通话数据的空间操作,并将空间操作后的结果反馈至API层;
API层接收查询操作层中对空间数据进行空间操作后的结果并输出。
对所述待处理的空间数据集建立空间索引之前,还包括将待处理的空间数据集内的空间数据按其所在的空间区域划分为大小不相等的网格单元。这样对于空间数据的空间连接操作以及ID划分提供了前提条件。
对所述待处理的空间数据集建立空间索引之前,还包括将待处理的空间数据集内的移动通话数据按移动通话数据的位置信息,将移动通话数据相对应的移动通信基站所构成的空间区域划分为大小不相等的网格单元。
将移动通话数据相对应的移动通信基站所构成的空间区域划分为大小不相等的网格单元之后,还包括:
采用Z Curve Hashing分区法对划分成网格单元的空间数据集进行分区,得到若干子数据集;再基于Voronoi图的密度分割法对得到的子数据集建立本地空间索引,最后构建出待处理的空间数据集的空间索引。
基于spark平台的空间数据并行计算系统的工作方法,还包括:
将每个网格单元中的空间数据集进一步划分,并且使用Z order Curve函数对进一步划分后的网格进行排序,从而使得进一步划分后的网格从二维空间映射到一维空间;
使用哈希映射算法将进一步细划分后的网格中的空间数据存储至spark集群的slave节点中。
每个网格单元对应一个ID。
基于spark平台的空间数据并行计算系统的工作方法,还包括:
在查询操作层中对空间数据进行空间连接操作,将空间数据的空间连接操作转化为RDD文件操作;根据网格单元的ID,对位于同一个节点上的网格单元内的空间数据进行join操作;
在join操作的过程中,比较两个网格单元内空间数据量的大小,将包含空间数据量较少的网格单元内的空间数据转移到包含空间数据量较多的网格单元内。
本发明采用Z Curve Hashing分区法,将空间数据集分布到spark集群中,保持了空间数据并行计算系统良好的负载均衡;在建立索引时,使用基于Voronoi图的密度分割方法,从而最大限度的提高并行化。
本发明的有益效果为:
(1)本发明的基于spark平台的空间数据并行计算系统,使用spark内存计算来处理移动通话数据的查询以及空间连接的操作,大幅提高了计算以及操作的速度。
(2)采用Z Curve Hashing分区法,将移动通话数据这些空间数据集分布到spark集群中,保持了空间数据并行计算系统良好的负载均衡;在建立索引时,使用基于Voronoi图的密度分割方法,从而最大限度的提高并行化;避免数据失真问题;基于相同类型的每个移动通话基站会覆盖大约相同数量的移动用户,以避免资源浪费的实际情况。
(3)本发明还扩展了SparkSQL,使得基于spark平台的空间数据并行计算系统支持多种空间类型和空间操作,从而达到了充分利用移动通话数据的空间属性目的。
附图说明
图1是本发明的基于spark平台的空间数据并行计算系统的结构示意图;
图2是本发明的数据区域划分示意图;
图3(a)是本发明的Z Curve Hashing分区法对划分成网格的数据集示意图;
图3(b)是本发明的集群数据分布示意图;
图3(c)是本发明的Z order curve函数排序示意图;
图4是本发明的存储索引层处理数据流程示意图;
图5(a)是本发明的空间数据rdd1示意图;
图5(b)是本发明的空间数据rdd2示意图;
图5(c)是本发明的空间数据rdd3示意图;
图5(d)是本发明的空间数据rdd4示意图;
图6是本发明的基于spark平台的空间数据并行计算系统的工作流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例中一种基于spark平台的空间数据并行计算系统的结构示意图,如图所示本实施例中的基于spark平台的空间数据并行计算系统包括:
索引和存储层,其配置为在spark集群中读取并存储待处理的空间数据集,所述空间数据集内存储的空间数据为移动通话数据,移动通话数据的位置信息是相应移动通信基站的位置;根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;结合ZCurve Hashing分区法与基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引;
查询操作层,其配置为接收API层的空间操作请求,响应空间操作请求并将空间数据的空间操作转化为RDD文件操作,进而根据空间索引来实现对所述待处理的空间数据集中移动通话数据的空间操作,并将空间操作后的结果反馈至API层;
API层,其被配置为通过扩展SparkSQL来提供一个类SQL API来支持规则的空间数据关系和空间数据类型,且通过空间操作接口接收输入的空间操作请求并传送至查询操作层;所述API层还被配置为接收查询操作层中对空间数据进行空间操作后的结果并输出。
其中,本发明通过扩展用户自定义空间数据类型,进一步扩展了本发明的该并行计算系统处理的空间数据类型,能够兼容多种空间数据类型,进一步提高了空间数据处理的速度。
空间数据关系包括还包括用户自定义空间数据关系。
本发明通过扩展用户自定义空间数据关系,进一步扩展了本发明的该并行计算系统处理的空间数据关系,能够兼容多种空间数据关系,进一步提高了空间数据处理的速度。
查询操作层中的空间操作包括范围查询和空间连接。
本发明中的实施例以移动通话数据为对象进行说明,spark集群节点以4个节点A、B、C和D节点为例。
1)在索引和存储层对数据进行处理,步骤如下:
步骤(1):在配置有此并行计算系统的spark集群中,读入所要处理的移动通话数据集。移动通话数据依据其空间属性,如图2地图上的点所示。
步骤(2):对读入的数据集按其空间区域划分为不相等的网格单元(一般按集群内节点个数为网格单元数),网格尺寸随数据的大小而变化,划分方式有三种方式划分,分别为按x方向划分,按y方向划分,以及按xy方向划分。本实施例中,spark集群有4个节点,所以,图2所示为按y方向划分为4块。
步骤(3):使用Z Curve Hashing分区法对划分成网格的数据集进行分区,具体如下:
步骤(3.1):将每个网格再细划分成更小的n*n网格中,如图3(a)所示。并使用Zorder curve函数将小网格按图中所标块号进行排序,排序结果如图3(a)中所标网格号,从而将二维网格映射到一维。
本发明采用Z Curve Hashing分区法对划分成网格的数据集进行分区,达到的效果为:
经步骤(3)处理后,避免了将相同区域的数据分布到同一机器的情况,从而保持了集群整体的负载均衡。
具体的Z order curve函数如下:
(1).选中各个方格的中心位置点,表示为(x,y),x,y方向如图3(c)所示。
(2).将网格号两两比较,举例如网格A中心点(x1,y1),网格B中心点(x2,y2)。
当x1<x2,则网格A在网格B之前。
当x1=x2,则若y1>y2,网格A在网格B之后,否则反之。
当x1>x2,则网格A在网格B之后。
(3).循环执行步骤(2),直到将所有网格排序完成。然后按从前往后给网格以0到(n*n-1)编号。
步骤(3.2):使用哈希映射算法将上面经过Z order curve分区后的数据按照网格编号映射到集群中的节点。具体实现如下:
使用哈希函数中的除留余数法,函数公式如下H(key)=key MOD p,在实例中,集群有四个节点,所以p=4,key为经步骤(3.1)处理后得到的网格编号,而H(key)即为相应网格数据将要分配到的节点编号。
如图3(b)所示,经哈希映射,网格0,4,8,12的数据将会被分布到集群中的0号节点。
步骤(4):使用基于Voronoi图的密度分割方法来对ZCH分区得到的子数据集建立本地索引。其实现如下:
(1).对于移动通话数据,其位置信息是基于移动通信基站。所以通过计算移动通信基站位置来得到Voronoi地图。本系统框架使用了第三方开发的Triangle包来生成Voronoi图,生成命令为triangle-v dots。如图4所示,其中每个多边形代表一个基站覆盖的区域。
(2).Voronoi图生成两个文件,分别为Voronoi图中的点和边,其中点为图中多边形的交点,边为多边形的边。根据上述两个文件对我们的数据按照Voronoi图来进行分割。
(3).对分割好的数据使用R树来建立索引。其中每个Voronoi图中的多边形都是一个叶节点的空间尺度,并且在多边形中的数据通过相对应的叶节点来索引。
使用基于Voronoi图的密度分割方法来对Z Curve Hashing分区法得到的子数据集建立本地索引的有益效果为:确保R树的每个叶节点包含大约相等的数据记录,避免数据失真问题。此解决方案是基于相同类型的每个移动通话基站会覆盖大约相同数量的移动用户,以避免资源浪费的实际情况。
2)对于查询操作层操作如下:
用户在API层请求所需操作,系统会将其转化对RDD的相关操作,在本层中,数据和索引是以RDD形式存在的,数据与索引可以由一个RDD来表示。
其中有范围查询及空间连接,具体实现如下:
(1)范围查询具体实现:
1.在获得查询请求后,集群中的master节点将查询请求发送给所有的slave节点。
2.由于数据与索引在同一个RDD中,所以在接收到查询请求后,slave节点从本地RDD中取出数据索引部分。
3.检索索引,与查询条件比较。得到符合条件的索引树节点。
4.到数据部分取出上一步得到的索引树节点对应的数据。
5.将结果返还给用户
(2)空间连接具体实现:
1.对于要进行空间连接的两个数据RDD分别为rdd1和rdd2,对rdd1和rdd2进行join操作所要满足的条件θ(例如in或者overlap等),首先取出他们的索引部分,命名为node1和node2。
2.得到两组索引的部分索引对。满足如下条件:<n1,n2>,其中n1属于node1索引的叶子节点,n2属于node2索引的叶子节点,n1和n2满足join条件θ。并同时记录下n1和n2对应的数据大小。
3.根据索引对<n1,n2>中数据量较大的ni数据所在的pi区,生产一条记录<pi,nj>,nj是索引对中另一个节点,即数据量小的节点。
4.对rdd1和rdd2的数据,首先进行filter操作,过滤条件是数据所属节点属于步骤2得到的节点对,然后根据步骤3得到的<pi,nj>进行重新分配。得到rdd3和rdd4。
5.举例如图5(a)和图5(b)所示,rdd1与rdd2进行连接操作,首先由步骤2过滤掉不符合join操作条件θ(如in)的数据部分—A3,A4,B3,B4,而对A1与B1,A2与B2进行join操作。并且由步骤3得知,A1数据量大于B1,A2数据量小于B2。则将rdd2中的B1数据传输到A1数据所在分区,形成新的rdd3,同样,将rdd1中的A2数据传输到rdd2中,生成新的rdd4,如图5(c)(d)所示。
6.对rdd3和rdd4中的数据分别进行join操作,得到最终结果。
3)对API层实现如下:
API层通过扩展SparkSQL的数据框而增加了多种空间数据类型,空间关系和空间操作。
(1)对于空间数据类型,是通过扩展用户自定义类型,增加了如Point,Lint及Polygon。
(2)对于空间关系,通过扩展用户自定义方法(User-Defined-Functions)添加了新的关系,如in,overlap和intersect。
对于空间操作,通过扩展Saprk SQL的数据框,API层提供了两个基本的空间操作——范围查询和空间连接。
SparkSQL其为了将空间操作转化为RDD操作,会执行如下步骤:
步骤(1):为将空间操作转化为RDD操作,SpakrSQL根据相应的数据框操作建立一个操作树。
步骤(2):然后SparkSQL使用模式匹配函数递归树的所有节点,将每个数据框函数转换为相对应的RDD操作。换句话说,这个转换过程是将SQL的语言树转化为RDD的实现树。
步骤(3):最后SparkSQL后序遍历步骤(2)中所得到的树,从而得到结果。
为将范围查询和空间连接两种空间操作加入到SparkSQL,需要在logical抽象类中添加相对应的抽象类,同时在execution中添加对应的实现类,并在模式匹配函数中添加相应的case。如此,更多的空间操作也可按照上面的方式添加到API层。
例如对于范围查询,需要在logical中添加其对应的抽象类,之后在execution中通过继承Filter类,实现范围查询,最后在模式匹配函数中添加相应的case。
如图6所示,本发明的基于spark平台的空间数据并行计算系统的工作方法,包括:
在配置有空间数据并行计算系统的spark集群中,读取并存储待处理的空间数据集,结合Z Curve Hashing分区法与基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引;
通过扩展SparkSQL来提供一个类SQL API来支持规则的空间数据关系和空间数据类型,且通过空间操作接口接收输入的空间操作请求并传送至查询操作层;
查询操作层接收API层的空间操作请求,响应空间操作请求并将空间数据的空间操作转化为RDD文件操作,进而根据空间索引来实现对所述待处理的空间数据集中空间数据的空间操作,并将空间操作后的结果反馈至API层;
API层接收查询操作层中对空间数据进行空间操作后的结果并输出。
对所述待处理的空间数据集建立空间索引之前,还包括将待处理的空间数据集内的空间数据按其所在的空间区域划分为大小不相等的网格单元。这样对于空间数据的空间连接操作以及ID划分提供了前提条件。
将待处理的空间数据集内的空间数据按其所在的空间区域划分为大小不相等的网格单元之后,还包括:
采用Z Curve Hashing分区法对划分成网格单元的空间数据集进行分区,得到若干子数据集;再基于Voronoi图的密度分割法对得到的子数据集建立本地空间索引,最后构建出待处理的空间数据集的空间索引。
本发明采用Z Curve Hashing分区法,将空间数据集分布到spark集群中,保持了空间数据并行计算系统良好的负载均衡;在建立索引时,使用基于Voronoi图的密度分割方法,从而最大限度的提高并行化。
基于spark平台的空间数据并行计算系统的工作方法,还包括:
将每个网格单元中的空间数据集进一步划分,并且使用Z order Curve函数对进一步划分后的网格进行排序,从而使得进一步划分后的网格从二维空间映射到一维空间;
使用哈希映射算法将进一步细划分后的网格中的空间数据存储至spark集群的slave节点中。这样能够避免将相同区域的数据分布到同一机器的情况,从而保持了集群整体的负载均衡。
每个网格单元对应一个ID。这样对于空间数据查询以及空间连接操作,将空间数据的空间连接操作转化为RDD文件操作,提供了一一对应的保障。
基于spark平台的空间数据并行计算系统的工作方法,还包括:
在查询操作层中对空间数据进行空间连接操作,将空间数据的空间连接操作转化为RDD文件操作;根据网格单元的ID,对位于同一个节点上的网格单元内的空间数据进行join操作;
在join操作的过程中,比较两个网格单元内空间数据量的大小,将包含空间数据量较少的网格单元内的空间数据转移到包含空间数据量较多的网格单元内。
(1)本发明的基于spark平台的空间数据并行计算系统,使用spark内存计算来处理移动通话数据的查询以及空间连接的操作,大幅提高了计算以及操作的速度。
(2)采用Z Curve Hashing分区法,将移动通话数据这些空间数据集分布到spark集群中,保持了空间数据并行计算系统良好的负载均衡;在建立索引时,使用基于Voronoi图的密度分割方法,从而最大限度的提高并行化;避免数据失真问题;基于相同类型的每个移动通话基站会覆盖大约相同数量的移动用户,以避免资源浪费的实际情况。
(3)本发明还扩展了SparkSQL,使得基于spark平台的空间数据并行计算系统支持多种空间类型和空间操作,从而达到了充分利用移动通话数据的空间属性目的。
为了评价基于spark平台的空间数据并行计算系统的性能,将我们基于spark平台的空间数据并行计算系统与spark进行比较。因为内存计算的原因,基于spark的系统比基于Hadoop的快很多。而基于spark平台的空间数据并行计算系统是通过扩展spark实现的,所以不测试基于Hadoop的系统。实验重点集中在两个数据集的空间范围查询:移动电话通信的合成数据集和真实数据集。
基于spark平台的空间数据并行计算系统是建立在1.5.0版本的spark和1.8的java上。将基于spark平台的空间数据并行计算系统部署在含有四个节点的集群中。每个节点运行Ubuntu Linux 14.04版本,Xeon 2.3GHz cpu以及20G内存。
选择两个数据集来测试性能:(1)合成数据集:一个随机位于矩形区域的点数据集。我们生成几个合成数据集实例包含从1600万到1亿1200万的记录。(2)手机数据集。一个真正的通信数据集是从中国移动通信集团公司提取的一个中等规模城市的数据集。一天内的数据包含1300万个移动电话数据。此次试验中我们使用了从一天到八天的数据量。数据集的数量从1300万(一天的数据)增加到超过1亿个记录(八天的数据)。移动通信数据在该地区的用户密度分布不均。
空间连接操作需要两个数据集作为操作。本实验采用了两种不同的通信数据,其中一个数据集是通过数次稀释另一个数据集得到的。数据集规模从1000万个记录(一天的数据)到1亿个记录(八天的数据)。为避免特殊情况,每个实验结果都是20个随机实验的平均值。
通过实验验证,本发明的基于spark平台的空间数据并行计算系统在查询和空间连接操作的处理速度上,都比spark优越。因为在范围查询中,查询范围肯定位于一个被某个节点所索引的区域中。因此,当其他的从节点执行查询时,比较索引树的根节点的区域后,处理完成,因为根节点表示的区域与查询区域没有交集。这些节点只需要时间去索引数据。只有一个节点需要搜索根节点的子树并且根据索引来获取数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种基于spark平台的空间数据并行计算系统,该系统用于移动通话数据的并行计算,其特征在于,该系统包括从底层到顶层三个层次:
索引和存储层,其配置为在spark集群中读取并存储待处理的空间数据集,所述空间数据集内存储的空间数据为移动通话数据,移动通话数据的位置信息是相应移动通信基站的位置;根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;结合Z CurveHashing分区法与基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引;
所述Z Curve Hashing分区法为:将每个网格单元中的空间数据集进一步划分,并且使用Z order Curve函数对进一步划分后的网格进行排序,从而使得进一步划分后的网格从二维空间映射到一维空间;
所述Z order Curve函数为:选中各个网格的中心位置点,将网格号两两比较排序,直到将所有网格排序完成;
所述基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引过程为:
根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;
Voronoi图生成两个文件,分别为Voronoi图中的点和边;
根据所述两个文件对移动通话数据按照Voronoi图来进行分割;
对分割好的数据使用R树来建立索引,其中每个Voronoi图中的多边形都是一个叶节点的空间尺度,并且在多边形中的数据通过相对应的叶节点来索引;
查询操作层,其配置为接收API层的空间操作请求,响应空间操作请求并将空间数据的空间操作转化为弹性分布式数据集RDD文件操作,进而根据空间索引来实现对所述待处理的空间数据集中移动通话数据的空间操作,并将空间操作后的结果反馈至API层;
API层,其被配置为通过扩展SparkSQL来提供一个类SQL API来支持规则的空间数据关系和空间数据类型,且通过空间操作接口接收输入的空间操作请求并传送至查询操作层;所述API层还被配置为接收查询操作层中对空间数据进行空间操作后的结果并输出。
2.如权利要求1所述的一种基于spark平台的空间数据并行计算系统,其特征在于,所述空间数据类型还包括用户自定义空间数据类型。
3.如权利要求1所述的一种基于spark平台的空间数据并行计算系统,其特征在于,所述空间数据关系包括还包括用户自定义空间数据关系。
4.如权利要求1所述的一种基于spark平台的空间数据并行计算系统,其特征在于,所述查询操作层中的空间操作包括范围查询和空间连接。
5.一种如权利要求1-4任一所述的基于spark平台的空间数据并行计算系统的工作方法,该方法用于对移动通话数据的并行计算,其特征在于,包括:
在配置有空间数据并行计算系统的spark集群中,读取并存储待处理的空间数据集,其中,空间数据集内存储的空间数据为移动通话数据,移动通话数据的位置信息是相应移动通信基站的位置;根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;结合Z Curve Hashing分区法与基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引;
所述Z Curve Hashing分区法为:将每个网格单元中的空间数据集进一步划分,并且使用Z order Curve函数对进一步划分后的网格进行排序,从而使得进一步划分后的网格从二维空间映射到一维空间;
所述Z order Curve函数为:选中各个网格的中心位置点,将网格号两两比较排序,直到将所有网格排序完成;
所述基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引过程为:
根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;
Voronoi图生成两个文件,分别为Voronoi图中的点和边;
根据所述两个文件对移动通话数据按照Voronoi图来进行分割;
对分割好的数据使用R树来建立索引,其中每个Voronoi图中的多边形都是一个叶节点的空间尺度,并且在多边形中的数据通过相对应的叶节点来索引;
通过扩展SparkSQL来提供一个类SQL API来支持规则的空间数据关系和空间数据类型,且通过空间操作接口接收输入的空间操作请求并传送至查询操作层;
查询操作层接收API层的空间操作请求,响应空间操作请求并将空间数据的空间操作转化为弹性分布式数据集RDD文件操作,进而根据空间索引来实现对所述待处理的空间数据集中移动通话数据的空间操作,并将空间操作后的结果反馈至API层;
API层接收查询操作层中对空间数据进行空间操作后的结果并输出。
6.如权利要求5所述的基于spark平台的空间数据并行计算系统的工作方法,其特征在于,对所述待处理的空间数据集建立空间索引之前,还包括将待处理的空间数据集内的移动通话数据按移动通话数据的位置信息,将移动通话数据相对应的移动通信基站所构成的空间区域划分为大小不相等的网格单元。
7.如权利要求6所述的基于spark平台的空间数据并行计算系统的工作方法,其特征在于,将移动通话数据相对应的移动通信基站所构成的空间区域划分为大小不相等的网格单元之后,还包括:
采用Z Curve Hashing分区法对划分成网格单元的空间数据集进行分区,得到若干子数据集;再基于Voronoi图的密度分割法对得到的子数据集建立本地空间索引,最后构建出待处理的空间数据集的空间索引;
所述Z Curve Hashing分区法为:将每个网格单元中的空间数据集进一步划分,并且使用Z order Curve函数对进一步划分后的网格进行排序,从而使得进一步划分后的网格从二维空间映射到一维空间;
所述Z order Curve函数为:选中各个网格的中心位置点,将网格号两两比较排序,直到将所有网格排序完成;
所述基于Voronoi图的密度分割法对所述待处理的空间数据集建立空间索引过程为:
根据移动通信基站的位置,得到移动通信基站覆盖范围的Voronoi图;
Voronoi图生成两个文件,分别为Voronoi图中的点和边;
根据所述两个文件对移动通话数据按照Voronoi图来进行分割;
对分割好的数据使用R树来建立索引,其中每个Voronoi图中的多边形都是一个叶节点的空间尺度,并且在多边形中的数据通过相对应的叶节点来索引。
8.如权利要求6所述的基于spark平台的空间数据并行计算系统的工作方法,其特征在于,还包括:
将每个网格单元中的空间数据集进一步划分,并且使用Z order Curve函数对进一步划分后的网格进行排序,从而使得进一步划分后的网格从二维空间映射到一维空间;
所述Z order Curve函数为:选中各个网格的中心位置点,将网格号两两比较排序,直到将所有网格排序完成;
使用哈希映射算法将进一步细划分后的网格中的空间数据存储至spark集群的slave节点中。
9.如权利要求6所述的基于spark平台的空间数据并行计算系统的工作方法,其特征在于,每个网格单元对应一个ID。
10.如权利要求9所述的基于spark平台的空间数据并行计算系统的工作方法,其特征在于,还包括:
在查询操作层中对空间数据进行空间连接操作,将空间数据的空间连接操作转化为RDD文件操作;根据网格单元的ID,对位于同一个节点上的两个网格单元内的空间数据进行join操作;
在join操作的过程中,比较两个网格单元内空间数据量的大小,将包含空间数据量较少的网格单元内的空间数据转移到包含空间数据量较多的网格单元内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610496673.XA CN106209989B (zh) | 2016-06-29 | 2016-06-29 | 基于spark平台的空间数据并行计算系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610496673.XA CN106209989B (zh) | 2016-06-29 | 2016-06-29 | 基于spark平台的空间数据并行计算系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106209989A CN106209989A (zh) | 2016-12-07 |
CN106209989B true CN106209989B (zh) | 2019-04-16 |
Family
ID=57462667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610496673.XA Expired - Fee Related CN106209989B (zh) | 2016-06-29 | 2016-06-29 | 基于spark平台的空间数据并行计算系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106209989B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909639B (zh) * | 2017-02-16 | 2020-09-29 | 东北大学 | 一种基于Spark的链式多路空间连接查询处理方法 |
CN106874215B (zh) * | 2017-03-17 | 2020-02-07 | 重庆邮电大学 | 一种基于Spark算子的序列化存储优化方法 |
CN107818147A (zh) * | 2017-10-19 | 2018-03-20 | 大连大学 | 基于Voronoi图的分布式时空索引系统 |
CN107832479A (zh) * | 2017-10-19 | 2018-03-23 | 大连大学 | 医疗救援请求移动呼叫方法 |
CN110019984B (zh) * | 2017-12-27 | 2021-10-29 | 北京星选科技有限公司 | 空间索引建立方法、装置、电子设备及可读存储介质 |
CN110995725B (zh) * | 2019-12-11 | 2021-12-07 | 北京明略软件系统有限公司 | 数据处理方法和装置、电子设备及计算机可读存储介质 |
CN111382357B (zh) * | 2020-03-06 | 2020-12-22 | 吉林农业科技学院 | 一种基于大数据的信息推荐系统 |
CN111723097A (zh) * | 2020-06-29 | 2020-09-29 | 深圳壹账通智能科技有限公司 | 应用程序接口配置方法、装置、计算机设备和存储介质 |
CN112333274B (zh) * | 2020-11-09 | 2022-01-21 | 吉林大学 | 基于云计算平台的地空时间域电磁响应并行加速方法 |
CN112925789B (zh) * | 2021-02-24 | 2022-12-20 | 东北林业大学 | 一种基于Spark的空间矢量数据内存存储查询方法及系统 |
CN112685428B (zh) * | 2021-03-10 | 2021-07-06 | 南京烽火星空通信发展有限公司 | 一种基于海量位置轨迹数据时空分析方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009154481A1 (en) * | 2008-06-20 | 2009-12-23 | Business Intelligence Solutions Safe B.V. | A dimension reducing visual representation method |
CN105117497A (zh) * | 2015-09-28 | 2015-12-02 | 上海海洋大学 | 基于Spark云网络的海洋大数据主从索引系统及方法 |
CN105589951A (zh) * | 2015-12-18 | 2016-05-18 | 中国科学院计算机网络信息中心 | 一种海量遥感影像元数据分布式存储方法及并行查询方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8566321B2 (en) * | 2011-03-11 | 2013-10-22 | Amco Llc | Relativistic concept measuring system for data clustering |
-
2016
- 2016-06-29 CN CN201610496673.XA patent/CN106209989B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009154481A1 (en) * | 2008-06-20 | 2009-12-23 | Business Intelligence Solutions Safe B.V. | A dimension reducing visual representation method |
CN105117497A (zh) * | 2015-09-28 | 2015-12-02 | 上海海洋大学 | 基于Spark云网络的海洋大数据主从索引系统及方法 |
CN105589951A (zh) * | 2015-12-18 | 2016-05-18 | 中国科学院计算机网络信息中心 | 一种海量遥感影像元数据分布式存储方法及并行查询方法 |
Non-Patent Citations (2)
Title |
---|
关系数据库关键词检索的结果排序与聚类研究;师兰英;《中国优秀硕士学位论文全文数据库》;20150715;全文 |
面向海暈数据的索引技术研究;李春生;《中国优秀硕士学位论文全文数据库》;20131215;全文 |
Also Published As
Publication number | Publication date |
---|---|
CN106209989A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106209989B (zh) | 基于spark平台的空间数据并行计算系统及其方法 | |
CN106528773B (zh) | 一种基于Spark平台支持空间数据管理的图计算系统及方法 | |
CN104737157B (zh) | 联合数据库系统 | |
CN106503196B (zh) | 云环境下可扩展存储索引结构的构建和查询方法 | |
Tao et al. | Approximate MaxRS in spatial databases | |
CN110147377A (zh) | 大规模空间数据环境下基于二级索引的通用查询算法 | |
EP2564306A1 (en) | System and methods for mapping and searching objects in multidimensional space | |
CN107247799A (zh) | 兼容多种大数据存储的数据处理方法、系统及其建模方法 | |
CN109241159A (zh) | 一种数据立方体的分区查询方法、系统及终端设备 | |
CN101739398A (zh) | 分布式数据库多连接查询优化算法 | |
CN113934686B (zh) | 面向海量机载激光点云的分布式多级空间索引方法 | |
CN107330094A (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
CN106611013A (zh) | 信息查询方法及系统 | |
Kaur et al. | Latency and network aware placement for cloud-native 5G/6G services | |
TWI740895B (zh) | 應用歸屬服務集群的分配方法和裝置 | |
Nguyen et al. | Rethinking virtual link mapping in network virtualization | |
US10484467B2 (en) | Dynamic swarm segmentation | |
CN109254962A (zh) | 一种基于t-树的索引优化方法及装置 | |
CN107276833A (zh) | 一种节点信息管理方法及装置 | |
CN108319604A (zh) | 一种hive中大小表关联的优化方法 | |
Rguez et al. | A GRASP-based algorithm for Virtual Network Embedding | |
CN104133831B (zh) | 跨域数据联接系统、跨域数据联接方法及节点 | |
KR101512647B1 (ko) | 질의처리엔진을 선택하는 방법 | |
CN108376180A (zh) | 影响大数据系统性能的关键参数查找方法及装置 | |
CN108256694A (zh) | 基于重复遗传算法的模糊时间序列预测系统、方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190416 Termination date: 20210629 |