CN112699173A - 一种基于Spark的分布式时空对象邻近查询方法 - Google Patents

一种基于Spark的分布式时空对象邻近查询方法 Download PDF

Info

Publication number
CN112699173A
CN112699173A CN202110024086.1A CN202110024086A CN112699173A CN 112699173 A CN112699173 A CN 112699173A CN 202110024086 A CN202110024086 A CN 202110024086A CN 112699173 A CN112699173 A CN 112699173A
Authority
CN
China
Prior art keywords
space
time
data
query
spatio
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.)
Pending
Application number
CN202110024086.1A
Other languages
English (en)
Inventor
于雷
李宗鑫
周含笑
姜宇
刘源
王建勋
李墨野
董丽娜
王兆祥
邵文杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Space Star Data System Technology Co ltd
Original Assignee
Harbin Space Star Data System Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Harbin Space Star Data System Technology Co ltd filed Critical Harbin Space Star Data System Technology Co ltd
Priority to CN202110024086.1A priority Critical patent/CN112699173A/zh
Publication of CN112699173A publication Critical patent/CN112699173A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明是一种基于Spark的分布式时空对象邻近查询方法,为了解决查询过程中,缺乏支撑海量数据频繁更新和并行查询的索引结构,导致对海量时空数据分布式存储和维护的支持性较差的问题;该方法以Spark为计算引擎,以Cassandra为存储引擎的分布式时空对象邻近查询,根据查询的空间网格集合,然后运用分布式计算模型对Cassandra的索引模型与存储模型进行查询,计算出每一个时空对象距离目标位置的最近距离;通过自定义的排序方法,计算距离目标位置最近的K个时空对象,完成K个邻近时空对象的查询。本方法实现了索引与数据分离,保证了数据的局部性,并结合时空网格索引,进行分布式时空对象邻近查询,具有快速查询、有效查询等特点。

Description

一种基于Spark的分布式时空对象邻近查询方法
技术领域
本发明一种基于Spark的分布式时空对象邻近查询方法,尤其涉及针对时空对象的邻 近环境的查询,属于计算机应用领域。
背景技术
时空数据(Spatial-TemporalData)是指具有空间和时间维度的一类数据,它通常用 来描述某一对象的空间信息随时间的变化状态。时空数据具有数据量大,数据增速快、非 结构化等特点。在实际应用中面临数据存储难、查询复杂等问题。传统的单机计算模式受 到计算和存储能力的限制,已经难以应对大规模时空数据的并发查询。
时空对象邻近问题是指给定一个空间点与一个时间范围,查找在该时间段内与该空间 点最近的K个时空对象。需要指出的是对于同一个时空对象可能存在多条时空数据记录, 对于这样的时空对象,只选取最近距离的时空数据记录。
目前,国内外学者在时空数据查询领域已经做了很多工作,但是对于分布式环境下的 海量时空数据邻近查询研究还处于起步阶段。主要体现在缺乏支撑海量数据频繁更新和并 行查询的索引结构,导致对海量时空数据分布式存储和维护的支持性较差;现有的时空数 据查询方法大多数都是基于单机计算环境的集中式处理方法,缺乏有效的分布式时空对象 邻近查询方法。
发明内容
为了解决查询过程中,时空数据具有数量大、增速快、价值高但存储困难、查询复杂 的问题,基于此提供一种基于Spark的分布式时空对象邻近查询方法,本发明的方案如下:
具体方法步骤为:
步骤一,基于时空轨迹数据,以时间序列构建Cassandra时空存储模型;
步骤二,采用SQL-Server降维法,建立时空数据索引;
步骤三,根据时空查询范围与邻近数量k的数值,计算需要查找的索引网格集合;
步骤四,从步骤三中获得的网格集合,结合Cassandra时空存储模型进行分布式时空 对象邻近查询,其中分区节点进行本地时空对象邻近查询,得到分区时空对象邻近查询结 果;
步骤五,合并分区时空对象邻近结果,全局时空对象邻近按照与该点的欧氏距离远近 排序,得到查询结果;
步骤六,结合时间与Cassandra存储节点个数,构造QueryRDD弹性分布式数据集,并 根据Cassandra存储备份策略重排QueryRDD;
步骤七,QueryRDD与Cassandra时空索引表连接,然后进行时空数据存储表连接,并 根据时间范围(ts,te)在服务端过滤不需要的数据,得到TrajectoryRDD;
步骤八,取出TrajectoryRDD的segments轨迹段集合,对每个分区的轨迹段集合计算 每个分区距离目标空间点最近topK个时空对象;
步骤九,最后合并所有分区,得到topK个时空对象,并根据距离从近到远选取topK个时空对象,得到输出结果完成查询搜索。
进一步地,在步骤一中,所述的构建Cassandra时空存储模型的过程细化为:
步骤一一,构建<rid,tstart,tend>键,其中rid是分区键,<tstart,tend>是聚簇键;
步骤一二,使用Murmurhash分区算法模型,将所有的时空轨迹数据根据rid的hash值, 划分到Cassandra分布式数据库环上的各个节点上;
步骤一三,将空间地理位置,按照0.5的fraction空间分辨率划分成若干个格子,并按 照时间顺序排列。
进一步地,在步骤三中,所述的索引网格集合,是通过计算外扩时空网格的方式实现 的,具体步骤细化为:
步骤三一,编辑时空对象邻近算法的代码程序描述;
步骤三二,设查询空间点坐标(lat,lon),时间范围为[ts,te],定义邻近数量为k;
步骤三三,计算需要查找的索引网格集合。
进一步地,在步骤九中,所述的完成查询搜索的过程,具体步骤细化为:
步骤九一,初始化优先级队列priorQueue长度为K;
步骤九二,获取分区便利迭代器it;
步骤九三,判断集合it中是否还包含元素,若是则执行步骤九四,否则跳转至步骤九 六;
步骤九四,计算it对应数据st_data与目标空间点的欧氏距离distance;
步骤九五,将priorQueue插入(st_data,distance)对象,并返回步骤九三进行判断, 否则迭代溢出进行步骤九六;
步骤九六,将priorQueue转化为List。
本发明与现有技术相比带来的有益效果为:
1.以Spark为计算引擎,Cassandra为存储引擎,提高搜索的效率和准确率;
2.所提出的分布式索引结构能够对持续变化的海量时空数据进行实施存储和维护;
3.实现对时空数据上的时空对象邻近查询的实时处理,减少了分布式环境下处理时空 数据时空对象邻近查询所产生的物理计算节点之间的通信代价,能够对大规模并发时空对 象邻近查询进行实施响应.
附图说明
图1为时空对象邻近流程图;
图2为时空对象邻近算法的部分伪代码示意图;
图3为时空数据降维示意图;
图4为本地计算topK流程图。
具体实施方式
以下结合附图对本发明具体实施方式进行说明:
具体实施方式一:
(1)以<rid,tstart,tend>为键,其中rid是分区键,<tstart,tend>是聚簇键,使用Murmurhash分区算法模型将所有的时空轨迹数据根据rid的hash值划分到Cassandra(开源分布式NoSQL数据库系统)分布式数据库环上的各个节点上;
(2)将经度范围是-180°到+180°,纬度范围是-90°到+90°的空间地理位置,按照0.5的fraction分辨率划分成若干个格子,该格子按照时间顺序排列,保证了属于同一个轨迹的不同轨迹段按照时间顺序被组合在同一个数据库节点中;
(3)采用SQL-Server降维法,获取格子id为sectorID。经计算得到经度longitude的空 间索引为lon_index,纬度latitude的空间索引为lat_index,根据下列计算公式可求得格 子区域id。
sectorID=(lon_index*360*1/fraction)+lat_index
(4)建立了一个索引数据表trajectories_index,该表以空间维为一维,以时间维为 另一维设计了时空网格索引存储模型如图1;
(5)将空间二维坐标转为一维线性空间,并且按照一定的空间分辨率fraction划分成 若干个一维空间片段,定义该维为zindex,对时间维也按照一定的分辨率time_slice将连 续的时间划分成若干个时间片段,定义为tindex;
(6)结合Cassandra分布式数据库的特性,给出trajectories_index存储模型表结构 如图2;
(7)时空对象邻近算法的伪代码描述如图3所示,其中,设查询空间点坐标(lat,lon), 时间范围为[ts,te],邻近数量为k,计算需要查找的索引网格集合;
(8)从上一步获得的网格集合,进行分布式时空对象邻近查询,其中分区节点进行本 地时空对象邻近查询,得到分区时空对象邻近查询结果;
(9)合并分区时空对象邻近结果,全局时空对象邻近按照与该点的欧氏距离远近排序, 得到查询结果;
(10)构建QueryRDD(查询弹性分布式数据集),同样该分布式数据集RDD根据Cassandra 存储备份策略重排QueryRDD,以达到最佳计算性能;
(11)接着QueryRDD与Cassandra时空索引表连接,然后进行时空数据存储表连接,并 根据时间范围(ts,te)在服务端过滤不需要的数据,减少不必要的时间和CPU消耗,得到TrajectoryRDD(轨道分布式数据集);
(12)下一步取出TrajectoryRDD的segments(分段式)轨迹段集合,对每个分区的轨 迹段集合计算每个分区距离目标空间点最近的topK个时空对象;
(13)最后合并所有分区,得到topK个时空对象,并根据距离从近到远选取topK个时 空对象,得到输出结果,整体流程如图4所示,具体步骤如下
步骤s1,初始化优先级队列priorQueue长度为K;
步骤s2,获取分区便利迭代器it;
步骤s3,判断集合it中是否还包含元素,若是则执行步骤s4,否则执行s6;
步骤s4,计算it对应数据st_data与目标空间点的欧氏距离distance;
步骤s5,将priorQueue插入(st_data,distance)对象,并返回s3进行判断,否则迭代溢出进行步骤s6;
步骤s6,将priorQueue转化为List。
具体实施方式二:在实施方式一的基础上,细化描述在这个实施例中用到的关键算子 与操作,具体包括:
1.getOutSectors操作:
该操作用于实现用最少的空间网格集合达到至少k个时空对象。
2.joinWithCassandraTable算子:
此算子用于内存中的弹性分布式数据集与Cassandra表的连接操作,算法的第6行和第8 行中提到的join实际上就是这个算子,该算子是由cassandra-connector提供的。无论是QueryRDD与trajectories_index相连接,还是与trajectory的连接都用到这个算子,在连 接前为了更好地本地局部性,会使用cassandra-connector提供的ByCassandraReplica 方法,这个方法会利用Cassandra备份策略,让内存中的数据根据Cassandra备份策略重排 列,数据由离数据Cassandra最近的存储节点提供。
3.flatMap算子:
flatMap算子用于将TrajectoryRDD中的segments部分获取到并压平合成一个集合,即 TrajectoryRDD的每个数据项都存在一个segments,但是每个segments大小数目不尽相同, 因此把这些数据合在一起组成集合存在内存中,如此就构造出了TrajSegRDD,其中的每个 数据项是时空轨迹段,接下来就需要对轨迹段内的时空数据计算与目标空间点的距离,并 求前k个。
4.mapPartitions算子:
该算子用于执行RDD每个分区按照迭代器的方式进行操作,可以认为是一个分区内的批 处理过程,具有较快的执行速度。结合算法,mapPartitions执行的操作是获取分区的迭代 器,并计算与目标空间点的欧氏距离,最多选择topK个时空对象数据加入分区结果集,分 区结果集的时空数据按照距离由近到远排序,此时的TrajSegDistRDD返回(segment, distance)的元组。其中segment是时空数据,distance是该时空数据点与目标空间点的欧 氏距离。mapPartitions需要传递iterator迭代器,故此处实现一个computeTopK的函数, 用于在每个分区中计算topK,computeTopK的流程图如图4所示。
5.takeOrder算子:
即takeOrder(K)(ordering)方法,该算子的作用是从弹性分布式数据集中按照某种排 序顺序取前k个数据,即需要2个参数个数k和排序规则。首先k取值显然是kNN(kNearest Neighbor)中的K,即时空对象个数;排序规则需要自定义,此处按照每项数据的distance 作为排序依据。
6.saveAsTextFile算子:
该算子会触发任务的提交与运行,最后将kNN查询结果存放到HDFS(HadoopDistributed File System)中。
本领域的技术人员应当理解,上述实施方式仅仅是为了清楚地说明本公开,而不是对 本公开的适用范围做限定。对于相关技术人员可根据本公开公布步骤根据需求自由组合变 化或变型,但这些变化或变型仍然处于本公开的范围内。

Claims (6)

1.一种基于Spark的分布式时空对象邻近查询方法,其特征在于:具体方法步骤如下:
步骤一,基于时空轨迹数据,以时间序列构建Cassandra时空存储模型;
步骤二,采用SQL-Server降维法,建立时空数据索引;
步骤三,根据时空查询范围与邻近数量k的数值,计算需要查找的索引网格集合;
步骤四,从步骤三中获得的网格集合,结合Cassandra时空存储模型进行分布式时空对象邻近查询,其中分区节点进行本地时空对象邻近查询,得到分区时空对象邻近查询结果;
步骤五,合并分区时空对象邻近结果,全局时空对象邻近按照与该点的欧氏距离远近排序,得到查询结果;
步骤六,结合时间与Cassandra存储节点个数,构造QueryRDD弹性分布式数据集,并根据Cassandra存储备份策略重排QueryRDD;
步骤七,QueryRDD与Cassandra时空索引表连接,然后进行时空数据存储表连接,并根据时间范围(ts,te)在服务端过滤不需要的数据,得到TrajectoryRDD;
步骤八,取出TrajectoryRDD的segments轨迹段集合,对每个分区的轨迹段集合计算每个分区距离目标空间点最近topK个时空对象;
步骤九,最后合并所有分区,得到topK个时空对象,并根据距离从近到远选取topK个时空对象,得到输出结果完成查询搜索。
2.根据权利要求1所述的一种基于Spark的分布式时空对象邻近查询方法,其特征在于:在步骤一中,所述的构建Cassandra时空存储模型的过程细化为:
步骤一一,构建分区键和聚簇键;
步骤一二,使用Murmurhash分区算法模型,将所有的时空轨迹数据根据rid的hash值,划分到Cassandra分布式数据库环上的各个节点上;
步骤一三,将空间地理位置,按照0.5的fraction分辨率划分成若干个格子,并按照时间顺序排列。
3.根据权利要求1所述的一种基于Spark的分布式时空对象邻近查询方法,其特征在于:
在步骤二中,所述的SQL-Server降维法并建立索引的过程,细化步骤如下:
步骤二一,获取格子id;
步骤二二,经计算得到经度的空间索引和纬度的空间索引;
步骤二三,根据计算公式求得格子区域id;
步骤二四,建立了一个索引数据表,该表以空间维为一维,以时间维为另一维,建立出时空网格索引存储模型。
4.根据权利要求1所述的一种基于Spark的分布式时空对象邻近查询方法,其特征在于:在步骤三中,所述的索引网格集合,是通过计算外扩时空网格的方式实现的,具体步骤细化为:
步骤三一,编辑时空对象邻近算法的代码程序描述;
步骤三二,设查询空间点坐标(lat,lon),时间范围为[ts,te],定义邻近数量为k;
步骤三三,计算需要查找的索引网格集合。
5.根据权利要求1所述的一种基于Spark的分布式时空对象邻近查询方法,其特征在于:在步骤九中,所述的完成查询搜索的过程,具体步骤细化为:
步骤九一,初始化优先级队列priorQueue长度为K;
步骤九二,获取分区便利迭代器it;
步骤九三,判断集合it中是否还包含元素,若是则执行步骤九四,否则跳转至步骤九六;
步骤九四,计算it对应数据st_data与目标空间点的欧氏距离distance;
步骤九五,将priorQueue插入(st_data,distance)对象,并返回步骤九三重新进行判断,否则迭代溢出进行步骤九六;
步骤九六,将priorQueue转化为List。
6.根据权利要求5所述的一种基于Spark的分布式时空对象邻近查询方法,其特征在于:在步骤八或九中,所述的取出TrajectoryRDD的segments轨迹段集合和合并所有分区的过程,主要引用mapPartitions算子实现,该算子的具体执行过程如下:
mapPartitions算子用于执行RDD每个分区按照迭代器的方式进行操作,类似一个分区内的批处理过程;
结合算法,mapPartitions执行的操作是获取分区的迭代器,并计算与目标空间点的欧氏距离,最多选择topK个时空对象数据加入分区结果集,分区结果集的时空数据按照距离由近到远排序,此时的TrajSegDistRDD返回(segment,distance)的元组;
其中segment是时空数据,distance是该时空数据点与目标空间点的欧氏距离;mapPartitions需要传递iterator迭代器,故此处实现一个computeTopK的函数,用于在每个分区中计算topK数值。
CN202110024086.1A 2021-01-08 2021-01-08 一种基于Spark的分布式时空对象邻近查询方法 Pending CN112699173A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110024086.1A CN112699173A (zh) 2021-01-08 2021-01-08 一种基于Spark的分布式时空对象邻近查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110024086.1A CN112699173A (zh) 2021-01-08 2021-01-08 一种基于Spark的分布式时空对象邻近查询方法

Publications (1)

Publication Number Publication Date
CN112699173A true CN112699173A (zh) 2021-04-23

Family

ID=75513473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110024086.1A Pending CN112699173A (zh) 2021-01-08 2021-01-08 一种基于Spark的分布式时空对象邻近查询方法

Country Status (1)

Country Link
CN (1) CN112699173A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893605A (zh) * 2016-04-25 2016-08-24 济南大学 面向时空数据k近邻查询的分布式计算平台及查询方法
CN109165215A (zh) * 2018-07-27 2019-01-08 苏州视锐信息科技有限公司 一种云环境下时空索引的构建方法、装置及电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893605A (zh) * 2016-04-25 2016-08-24 济南大学 面向时空数据k近邻查询的分布式计算平台及查询方法
CN109165215A (zh) * 2018-07-27 2019-01-08 苏州视锐信息科技有限公司 一种云环境下时空索引的构建方法、装置及电子设备

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
张等: "HBase时空查询算法研究", 《小型微型计算机系统》 *
苏敏章: ""基于Spark的时空数据查询与分析关键技术研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
赵卓峰等: "基于云架构的交通感知数据集成处理平台", 《计算机研究与发展》 *
钟运琴等: "大规模时空数据分布式存储方法研究", 《高技术通讯》 *

Similar Documents

Publication Publication Date Title
CN107220285B (zh) 面向海量轨迹点数据的时空索引构建方法
CN104281652B (zh) 度量空间中逐个支撑点数据划分方法
Yu et al. A demonstration of GeoSpark: A cluster computing framework for processing big spatial data
Zoumpatianos et al. Data series management: Fulfilling the need for big sequence analytics
CN106897374B (zh) 一种基于轨迹大数据最近邻查询的个性化推荐方法
CN109033340A (zh) 一种基于Spark平台的点云K邻域的搜索方法及装置
Zhang et al. Dart: A geographic information system on hadoop
Deng et al. Parallel processing of dynamic continuous queries over streaming data flows
Sarwat Interactive and scalable exploration of big spatial data--a data management perspective
Wang et al. Parallel trajectory search based on distributed index
CN105550332A (zh) 一种基于双层索引结构的起源图查询方法
García-García et al. Enhancing SpatialHadoop with closest pair queries
Kumar et al. M-Grid: a distributed framework for multidimensional indexing and querying of location based data
Tian et al. A survey of spatio-temporal big data indexing methods in distributed environment
CN102043857A (zh) 最近邻查询方法及系统
García-García et al. Voronoi-diagram based partitioning for distance join query processing in spatialhadoop
CN112699173A (zh) 一种基于Spark的分布式时空对象邻近查询方法
CN109446294B (zh) 一种并行的相互子空间Skyline查询方法
Li et al. An Effective Spatio-Temporal Query Framework for Massive Trajectory Data in Urban Computing
Zhu et al. Past, current and future positions index of moving objects in networks
Rslan et al. Spatial R-tree index based on grid division for query processing
CN107273464B (zh) 一种基于发布/订阅模式的分布式度量相似查询处理方法
Heiler et al. Comparing implementation variants of distributed spatial join on spark
Bhattu et al. Generalized communication cost efficient multi-way spatial join: revisiting the curse of the last reducer
Maguerra et al. A survey on solutions for big spatio-temporal data processing and analytics

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210423

RJ01 Rejection of invention patent application after publication