论文部分内容阅读
近年来,随着移动互联网的快速发展,基于位置服务的应用也在不断地推广。典型的相关应用包括地图导航应用、外卖点餐应用及社交应用等,这些应用产生了海量的空间文本数据(比如,每个用户发表的微博都有空间坐标数据和文本数据两部分;每个餐馆都有空间坐标数据和文本标签数据两部分)。同时,这些应用进一步衍生了多种基于空间文本数据的查询需求,常见的空间文本查询实例如下:(1)在餐饮推荐类应用中,基于用户的当前位置查找附近100米内包含“烧烤”文本标签的餐馆;(2)在社交应用中,为用户推荐与其兴趣标签相似且空间距离相近的10个陌生好友。可以发现,基于空间文本数据的查询分析在生活当中有着非常大的实际应用价值。但是,随着空间文本数据规模的迅速增长,传统的基于单机环境实现的分析技术难以为用户同时提供低延时和高吞吐量的服务。随着基于内存的分布式计算平台Spark的流行开来,有许多研究工作基于该平台探索了海量数据场景下的分布式解决方案。相对于基于Hadoop平台的解决方案,基于Spark平台的解决方案可以达到更低的延时和更高的吞吐量。因此,针对传统单机方案的性能问题,本文将基于Spark平台研究分布式环境下的空间文本大数据分析问题。简要来说,文章首先提出了一套基于Spark平台实现的空间文本数据分析框架。该框架通过扩展Spark SQL模块的查询接口、语法解析及执行引擎,以对多种空间文本查询进行支持;同时,该框架在执行引擎层结合了面向空间文本数据的两层索引框架(包括全局索引和局部索引)对查询进行优化,其中存储在主节点的全局索引可以高效地过滤出可能存在候选解的局部分区,对于过滤得到的各个局部分区,存储在对应的从节点上的局部索引将对查询进行进一步处理。随后,针对四种典型的空间文本查询(包括布尔范围查询、布尔k最近邻查询、近似范围查询及空间文本相似连接查询等),文章将分别提出多种索引结构(包括全局索引结构和局部索引结构)对查询进行优化。基于两层索引架构和所提出的索引结构,文章进一步探讨了四种查询对应的分布式查询算法,通过两阶段的过滤策略实现了较好的性能。最后,文章在真实的海量数据集上进行了充分的实验对比,通过实验分析进一步说明了文章提出的算法具有较好的性能优势。