构建倒排泰森多边形的分布式索引方法与流程

文档序号:13813047阅读:263来源:国知局

本发明属于云计算、大数据领域,涉及一种在分布式环境下可以有效提高查询效率的mapreduce索引。



背景技术:

mapreduce是一种目前流行的基于云平台的编程框架,它可以处理及生成大型数据集,其利用无共享集群来支持数据密集型的应用。处理步骤具体为:在分布式缓存系统中,由mapreduce任务在处理一个键/值对时,是在map函数中生成一组中间键/值对,根据相同的中间键来合并所有的中间值,每个map都独立于其他操作,即所有maps就可以并行执行。mapreduce的一组“reducers”可以执行归约操作,具有相同key的map操作的输出同时可以归约到同一个reducer。然而单独运行一个归约过程可能会使得效率低下;

mapreduce可用于支持比传统的商业服务器集群更大规模的数据处理,它可以在仅仅几小时内即可处理一个pb数量的数据,使用mapreduce进行数据索引具有较好的应用前景。然而,现有的索引算法由于不能适应mapreduce的并行处理,构建索引的时间耗费不够理想,可扩展性不佳,因而有必要构建一种索引方法,其能够适用于并行处理,以能够提高检索效率。



技术实现要素:

为了提高现有数据查询方法索引效率,构建一种基于分布式的时空索引方法,本发明提供如下方案:

一种构建倒排泰森多边形的分布式索引方法,其步骤如下:

s1.d维空间中给定两个数据集r和s,hadoop进行分片,部分mappers同时并行运行,在mapreduce任务中,使用默认的reducer,在启动map函数之前,使用预聚类算法得到代表点p,并加载到每个map的主存中;

s2.在每一个map处理进程中,依次利用textinputforma来读取输入的分片,textinputformat从文件读取数据到mapper的实例中,分别计算数据集r中的m个对象r与各代表点p之间的距离、数据集s中的n个对象s与代表点p之间的距离,并将距离数据集r中的第i个对象r与数据集s中的第j个对象sj的最接近的代表点pij选出并聚集在voronoi单元格vci中,形成m个vc的分区vc1~vcm,所述的i顺序取遍1~m,并且,当i顺序取1~m中的一个具体值时,在i的该值下,j顺序取遍1~n的所有值,得到m个存储最接近的代表点的voronoi单元格;输出<vci,list(pij)>对;

已知查询点p,判别其最邻近的vci或最一些邻近的vci集,由mapper输出所述最邻近的vci或最一些邻近的vci集对应的原始数据集r和/或s中的r、s对象,并输出最邻近的vci或最一些邻近的vci集的id;

s3.将mapper输出到hadoop的文件系统。

在所述步骤s2中,所述的将距离数据集r中的第i个对象r与数据集s中的第j个对象sj的最接近的代表点pij选出并聚集在voronoi单元格vci中,形成m个vc的分区vc1~vcm的过程如下:

数据集r中第一个对象r1与数据集s中的第一个对象s1的最接近的代表点为p11,数据集r中第一个对象r1与数据集s中的第二个对象s2的最接近的代表点为p12,······,数据集r中第一个对象r1与数据集s中的第n个对象sn的最接近的代表点为p1n,该n个最接近的代表点选出并聚集在voronoi单元格v1中;

数据集r中第一个对象r1与数据集s中的第一个对象s1的最接近的代表点为p11,数据集r中第一个对象r1与数据集s中的第二个对象s2的最接近的代表点为p12,······,数据集r中第一个对象r1与数据集s中的第n个对象sn的最接近的代表点为p1n,该n个最接近的代表点选出并聚集在voronoi单元格v1中;

······

数据集r中第m个对象rm与数据集s中的第一个对象s1的最接近的代表点为pm1,数据集r中第m个对象rm与数据集s中的第二个对象s2的最接近的代表点为pm2,······,数据集r中第m个对象rm与数据集s中的第n个对象sn的最接近的代表点为pmn,该n个最接近的代表点选出并聚集在voronoi单元格vm中。

倒排voronoi索引包含两个部分:主索引,包括所有的聚类中心;第二索引,包括储存在每个vc的对像队列。

有益效果:本发明使用voronoi图构造倒排索引,由此索引方法是分布式的,且不受时间和空间的影响,该索引的形成还能够适用于如mapreduce的并行化处理,以能够提高算法索引效率,使得mapreduce可以不再受到空间和时间影响。

附图说明

图1是voronoi图;

图2是voronoi图索引;

图3是mriv结构中的节点数据变化对rsd和sds数据集构建索引时间的影响对比图。

具体实施方

实施例1:一种基于mapreduce与倒排泰森多边形的大规模近邻查询方法,将构建倒排泰森多边形的分布式索引方法适用于mapreduce算法中,其中:mapreduce是现有编程模型,用于大规模数据集的并行运算,所述方法包括如下步骤:

s1.构造基于mapreduce的倒排voronoi索引(泰森多边形索引,invertedvoronoiindex,ivi);

s2.使用倒排voronoi索引对数据集r和s进行分区,得到vc分区,该两个分区是由于后期需要进行voronoi图的建立时,voronoi图需要两个分区结合,因而在该步骤中进行了两个数据集的分区;

s3.使用基于mapreduce的ivknn进行分布式knn(邻近算法)查询,ivknn是利用ivi的倒排voronoi索引。

其中:构造基于mapreduce的倒排voronoi索引的步骤如下:

s1.d维空间中给定两个数据集r和s,hadoop(分布式系统基础架构)进行分片,部分mappers(一种现有编码解码)同时并行运行,在mapreduce任务中,使用默认的reducer(子任务合并过程),在启动map函数之前,使用预聚类算法得到代表点p,并加载到每个map(子任务分解执行)的主存中;

其中:代表点的获取方法,确定内部聚类点与相邻点,将内部聚类点的数据聚类,聚类后选出聚类中心进行索引,所需数据为与内部聚类点连接的相邻点,以这个内部聚类点为圆心,包含相邻的聚类中心点建立圆,以这个圆为外接圆的三角形作为delaunay三角形,本方法中将两个不同的内部聚类点分别建立delaunay三角形,这两个delaunay三角形以相邻点为共同点建立delaunay三角网,将数据对象分割为几个大分区,选择其中一聚类代表点成为代表点,被划分的每个对象以被聚类在一个voronoi单元中,每个voronoi网格中含有对象id。

s2.在每一个map处理进程中,依次利用textinputforma(一种现有读取模式)来读取输入的分片,textinputformat从文件读取数据到mapper的实例中,分别计算数据集r中的m个对象r与各代表点p之间的距离、数据集s中的n个对象s与代表点p之间的距离,并将距离数据集r中的第i个对象r与数据集s中的第j个对象sj的最接近的代表点pij选出并聚集在voronoi单元格vci中,形成m个vc(voronoi图的分区)的分区vc1~vcm,所述的i顺序取遍1~m,并且,当i顺序取1~m中的一个具体值时,在i的该值下,j顺序取遍1~n的所有值,得到m个存储最接近的代表点的voronoi单元格;输出<vci,list(pij)>对;

即:数据集r中第一个对象r1与数据集s中的第一个对象s1的最接近的代表点为p11,数据集r中第一个对象r1与数据集s中的第二个对象s2的最接近的代表点为p12,······,数据集r中第一个对象r1与数据集s中的第n个对象sn的最接近的代表点为p1n,该n个最接近的代表点选出并聚集在voronoi单元格v1中;

数据集r中第二个对象r2与数据集s中的第一个对象s1的最接近的代表点为p21,数据集r中第二个对象r2与数据集s中的第二个对象s2的最接近的代表点为p22,······,数据集r中第二个对象r2与数据集s中的第n个对象sn的最接近的代表点为p2n,该n个最接近的代表点选出并聚集在voronoi单元格v2中;

······

数据集r中第m个对象rm与数据集s中的第一个对象s1的最接近的代表点为pm1,数据集r中第m个对象rm与数据集s中的第二个对象s2的最接近的代表点为pm2,······,数据集r中第m个对象rm与数据集s中的第n个对象sn的最接近的代表点为pmn,该n个最接近的代表点选出并聚集在voronoi单元格vm中;

已知查询点p,判别其最邻近的vci或最一些邻近的vci集,由mapper输出所述最邻近的vci或最一些邻近的vci集对应的原始数据集r和/或s中的r、s对象,并输出最邻近的vci或最一些邻近的vci集的id;

s3.将mapper输出到hadoop的文件系统。

使用基于mapreduce的ivknn算法进行查询的步骤如下:

s1.根据ivi(倒排voronoi索引)摆放包含数据集r和s的分区值文件;

s2.主节点将文件加载到分布式缓存中,mappers从分布式缓存中读取ri∈r和sj∈s每个分区信息形成的键值对,map函数生成新的键值对,对于每个对象r∈r,其中键是其分区id,值由k和v组成,对于每个对象s∈s,如果dist(s,pij)<dist(r,pij),则map函数也创建一组新的键值对;

reducer迭代地从mapper读取ri和sj中的所有点,将vci的相同的键值对进分群组,进行knn查询,检查sj的所有分区后,reducer输出knn(r,s),输出键值对<r,knn(r,s)>作为knn查询结果。

所述ivi,ivi包含两个部分:主索引,其包括所有的聚类中心;第二索引,其包括储存在每个vc的对像队列。

实施例2:本实施例可以作为独立的技术方案实施或作为实施例1中各方案的进一步说明,本实施例提供了一种基于mapreduce与倒排泰森多边形的大规模近邻查询方法,此方法是一种基于mapreduce的利用voronoi图来处理knn查询的高效算法,其还可以解决移动医疗呼叫系统符合无线化、网络化、移动化这一未来发展趋势。本实施例也针对现有技术中的不足进行了改进,拥有良好的高效性和可扩展性。为了实现上述目的,本实施例所采用的技术方案执行步骤如下:进行mapreduce与倒排泰森多边形的大规模近邻查询索引的建立;mapreduce是一种目前流行的基于云平台的编程框架,它可以处理及生成大型数据集,其利用无共享集群来支持数据密集型的应用。处理步骤具体为:在分布式缓存系统中,由mapreduce任务在处理一个键/值对时,是在map函数中生成一组中间键/值对,根据相同的中间键来合并所有的中间值。每个map都独立于其他操作,即所有maps就可以并行执行——尽管实际上这受限于独立数据源或数据源附近cpu数量。同样的,一组“reducers”可以执行归约操作,具有相同key的map操作的输出同时可以归约到同一个reducer。尽管与串行的算法相比,此过程可能会出现效率低下(因为必须运行多个而不是一个归约过程),但mapreduce可用于支持比传统的商业服务器集群更大规模的数据处理,它可以在仅仅几小时内即可处理一个pb数量的数据,我们在实践中,主要是运用在spark系统中,得到了明显的效率提升,比采用之前传统的方法执行效率提高12%以上。

本实施例使用mapreduce构建ivi,ivi包含两个部分:主索引,包括所有的聚类中心;第二索引,包括储存在每个vc的对像队列。倒排索引是为了有效地索引位置与查询对象相邻的队列中的数据对象。当给定一个查询,我们就可以判别最邻近的vc或最一些邻近的vc集。然后将这些vc相对应的队列元素列举出来,从而得到knn查询结果集。由于voronoi图可以通过拆分与合并多个voronoi图(vp)来获得,所以构造倒排voronoi索引适用于mapreduce模型。特别是将每个子vp合并得到最后的voronoi。

构造倒排voronoi索引具体步骤为:

s1.给定d维空间中给定两个数据集r和s。hadoop安默认机制进行分片。一些mappers同时并行运行。在mapreduce任务中,我们使用默认的reducer。在启动map函数之前,我们使用快速预聚类算法得到代表点p,并加载到每个map的主存中。

s2.在每一个map处理进程中,它将依次利用textinputformat来读取输入的分片(按在分布式文件系统的输入格式),textinputformat可以从文件读取数据到mapper的实例中。计算每一个r,s对象与p点之间的距离,并将r,s分配给最接近的代表点p.在算法的2-3行中,每个点都被聚集在一个voronoi单元格中,它将产成m个voronoi单元格,在算法4-6行中会输出<vcm,list(pi)>对,mapper输出原始数据集(r或s)到最靠近的分区的每一个对象r、s及其分区vcm的id。

最终,在算法8-10行中,我们需要根据自已的需要通过自定义的multipleoutputformat函数将mapper输出到hadoop的文件系统。它决定了如何将任务结果写回到底层的持久存储中。在算法1中我们详细描述了构建基于mapreduce的voronoi索引结构的算法伪码。利用ivi,如果给定一个代表点,我们就可以启动mapreduce任务来进行数据分区并收集每个分区的一些数据信息。

在实践中,我们首先通过改变集群节点数,从2到32的数量变化,来评估构建基于mapreduce的倒排voronoi(mriv)索引效率。图2说明了节点数据变化对rsd和sds数据集构建索引时间的影响。图2中,索引结构随着集群节点数增加几乎呈线性增长。实践结果也证明了mriv索引的构建需要更少的时间,最终的voronoi可通过合并多个voronoi子图来获得因此适用于mapreduce并行化处理。另外,ivi采用了倒排索引结构,其可扩展性优于其他方法,综上,索引大规模的空间数据,倒排voronoi索引是最适合的方法。

实施例3:在社会保障服务高速飞速发展的今天,人们的物质生活水平日益提高,对于医疗服务的需求也变得更加人性化和个性化。同时也有着越来越多的人们需要更加便捷和完善的医疗服务。

随着移动通信和基于位置服务相关技术的快速增长,云计算、大数据、物联网、移动计算以及空间定位等技术逐步成熟,如gps、摄像头、蓝牙数据等也在不断的增加,涌现了大量的空间数据,这使得各种空间数据或对象的存储与处理中面临着巨大的挑战。因此,随着信息化进程的发展,医疗服务行业中电子病历、护理呼叫中心系统、大规模医疗数据库等应用也在快速发展,在提高工作效率、完善医疗服务、节约医疗成本等方面发挥了越来越多作用。

但是我国地理环境差异巨大、经济发展不平衡、医疗资源分布不均衡,发达地区与边远地区相比,医疗水平也存在很大的区别,同时随着农村向城市迁移、旅游等产业的飞速发展,使得在原本人口流动性大的基础上呈指数型增长,经常会遇到初到一个地方,遇到疾病不知道要到哪里去看病,排队挂号更可能是需要提前几个月买票,乘车辗转多家医院,最终将大量人力财力都浪费在了路上,病却没有得到及时治疗的问题。经常会遇到需要急诊时,却不知道周围都有什么医院,哪家医院能处理这种险情,哪家医院位置更近、服务更好,因为延误时间、导致救治不及时,甚至会发生因延误治疗而致死的悲剧。但随着大数据时代的到来,出现了更多的有关医疗资源查询的方式。医疗资源查询使患者更方便的查找到自己所需要的资料,例如,患者可通过医疗资源查询查询到离自己最近的医院,以来方便就医。基于该出发点,我们设计并实现了该发明。

在本实施例中,对上述两个实施例所述基于mapreduce与倒排泰森多边形的大规模近邻查询方法的具体应用作出说明。

在一种实施例中,基于如下步骤实现索引、请求处理、数据返回的过程:

s1.医院建立用于执行基于mapreduce与倒排泰森多边形的大规模近邻查询方法的系统;

s2.用户通过移动医疗设备向医院发起请求;

s3.医院接受到用户请求时,进行同意,并将用户所需数据返回给用户。

具体到患者发出医疗知识索取或医疗救援请求时,其移动呼叫方法如下:

s1.医院建立用于执行基于mapreduce与倒排泰森多边形的大规模近邻查询方法的系统,以便用户在分布式环境下可以有效提高查询效率。

s2.患者用户在医院外部,在急需医疗知识和/或医疗救援时,可通过移动医疗呼叫设备向医院发出相应请求。

s3.医院接受到用户请求时,调取倒排泰森多边形索引,执行分布式skyline或knn等空间查询算法(不限于这些算法),如果满足条件就进行同意决策,并将用户所需数据返回给用户。

在另一种实施例中,所述基于mapreduce与倒排泰森多边形的大规模近邻查询方法被应用于医疗物资配送,其实现医疗资源配送包括如下步骤:

s1.医疗资源供给商建立执行基于mapreduce与倒排泰森多边形的大规模近邻查询的系统,并将医疗资源数据上传在系统中;

s2.用户需要医疗资源时,向医疗资源供给商提出请求;

s3.医疗资源供给商给定两个医疗资源数据集,hadoop进行分片,每一个map处理进程中,依次利用textinputforma来读取输入的分片,计算每一个对象与用户所需的医疗资源之间的距离,并将寻找到的对象分配给最接近用户所需的医疗资源,将离用户所需的医疗资源最近的对象选出并聚集在voronoi单元格vm中,输出关于用户所需的医疗资源最邻近的vci或最一些邻近的vci集的id,将数据传输给用户。

在另一种实施例中,手持设备医疗资源需求客户端接入移动互联网,并与医疗资源供给商建立联系,医疗资源需求客户向医疗资源供给商发送医疗资源需求请求,医疗资源需求客户的空间地理信息被采集至用于执行实施例1-2中所述的基于mapreduce与倒排泰森多边形的大规模近邻查询方法的系统中,且医疗资源物流车的空间地理信息被所述系统实时采集,所述系统以医疗资源需求客户信息为代表点,以医疗资源位置及医疗资源物流货车位置数据为数据集,将医疗资源的物流车空间地理信息数据集进行分片,使用基于mapreduce与倒排泰森多边形的大规模近邻查询方法以查找到距离医疗资源需求客户均为最近邻的医疗资源物流车位置及医疗资源位置。

作为上述方案的进一步解释,该医疗资源物流车也被称为医疗配送车,手持设备医疗资源需求客户端通过基于2g/3g/4g方式或是wifi的无线网络,接入移动互联网的同时与医疗资源供给商建立联系,医疗资源需求客户向医疗资源供给商发送请求,医疗配送医疗资源配送车司机在登陆该系统之后,将空间地理信息(包括自己的位置信息以及医疗资源需求客户信息)发送到医疗资源供给商mapreduce与倒排泰森多边形的大规模近邻查询系统,空间地理信息在系统对医疗配送车司机公开的空间地理信息建立索引。医疗资源需求客户通过手机获取当前所在位置的信息,将获取到的位置信息发送到系统,系统采用mapreduce与倒排泰森多边形的大规模近邻查询索引技术,在海量的医疗资源中以客户信息为代表点,以物流货车的总和数据为数据集,将物流货车数据集进行分片,查找到距离符合客户信息的最优物流货车,查询到的医疗资源配送车司机出现在医疗资源需求客户的医疗资源需求客户端软件地图界面上,医疗资源需求客户选择医疗资源配送车司机,可以向系统发送请求或是直接拨打医疗资源配送车司机电话的方式发送请求,服务器将医疗资源需求客户请求转发到医疗资源配送车司机,医疗资源配送车司机接收到发送请求后,对请求做出处理并返回给医疗资源供给商,由医疗资源供给商发送到医疗资源需求客户手机。这能大大提高查询效率。在医疗资源配送中,这种情况十分常见,如果全靠人工着实是一项很大的工作量。但若使用基于mapreduce与倒排泰森多边形的大规模近邻查询方法会大大减少人工工作时间,减少不必要的开支。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1