【技术实现步骤摘要】
基于Spark的高维序列数据相似性查询方法及系统
本专利技术涉及一种基于Spark集群的高维序列数据相似性查询方法,属于分布式集群计算及大数据处理
技术介绍
高维序列数据的相似性查询是一种从一个给定的海量高维序列数据集中找出与之最相似的一组高维序列数据子集的方法,其在金融、气象、医疗等多个领域中都有着广泛的应用。而高维序列数据存在数据量大的特性,使得在单机环境中进行相似性查询操作时,效率变得低下。同时高维数据由于数据维度高的特性,易引起维度灾难,并且随着数据维度的增加,数据与数据之间的对比性也逐渐下降,使得相似性查询算法的性能也急剧下降。现有的一些数据库系统和查询技术主要是基于外存,随着数据量的增大,其系统的I/O性能将迅速降低,在进行相似性查询分析时,并不能及时做出结果反馈,故不满足处理海量数据下的客户需求。近年来,集群计算成为大数据领域内最流行的一种大数据解决方案,在众多集群计算系统中,ApacheSpark的性能尤为优异。ApacheSpark是专为大规模数据处理而设计的快速通用的内存并行计算 ...
【技术保护点】
1.一种基于Spark的高维序列数据相似性查询方法,其特征在于,包括以下步骤:/n步骤(1),将高维序列数据读入到Spark集群单元中进行数据预处理;/n步骤(2),对预处理后的数据进行索引构建:/n步骤(2.1),选取局部敏感哈希LSH哈希函数族,用于构建复合哈希函数g
【技术特征摘要】
1.一种基于Spark的高维序列数据相似性查询方法,其特征在于,包括以下步骤:
步骤(1),将高维序列数据读入到Spark集群单元中进行数据预处理;
步骤(2),对预处理后的数据进行索引构建:
步骤(2.1),选取局部敏感哈希LSH哈希函数族,用于构建复合哈希函数gi,其步骤如下:
步骤(2.1.1),选取基于p-stable分布的LSH哈希函数族H,其哈希函数形式为其中,v是一个原始数据,a是一个与v同维度的随机向量集合,它的元素从p-stable分布中独立选取,w是窗口长度参数,b是从[0,w]中随机选取的实数,并且选择AND-OR组合进行复合哈希函数的构建;
步骤(2.1.2),构建L个复合哈希函数同时一个复合哈希函数对应一个哈希表HashTable,故生成L个哈希表;
步骤(2.1.3),其中每个复合哈希函数是由k个LSH函数族H中的哈希函数h进行AND操作所组成,h∈H;
步骤(2.1.4),而L个复合哈希函数之间采用OR操作构成;
步骤(2.2),Spark集群单元中的Driver进程使用预先设定的参数,来初始化复合哈希函数gi;
步骤(2.3),Spark集群单元中的每个Worker节点并行的构建哈希表RDD的子集,每个Worker节点中使用相同的参数构建哈希函数,生成L个哈希表;
步骤(2.4),通过复合哈希函数gi计算数据RDD中的每条记录的哈希值,该值作为该条记录落入哈希表i中的哈希桶的桶号,1≤i≤L;
步骤(2.5),将哈希表i的表号,记为tablei,每条记录在哈希表i中的哈希桶的桶号,记为bucket,把tablei和bucket进行组合,作为MapReduce过程的键值对中的key值,而该条记录的标识符id值作为键值对中的value值,最终的键值对的形式为((tablei,bucket),id),1≤i≤L;
步骤(2.6),将每条记录的哈希表的表号tablei和相应哈希桶的桶号bucket作为输入值,通过使用BKDRHash函数计算得到一个哈希值,该哈希值被使用来计算该条记录落入的哈希桶的分区索引值,即得出该哈希桶将位于哪个分区;
步骤(3),查询处理,具体包括以下子步骤:
步骤(3.1),Driver进程加载使用索引构造阶段中使用的所有参数和哈希函数,构建出相同的哈希表;
步骤(3.2),Driver进程按照与步骤(2.3)-(2.4)相同的操作,使用同样的参数和哈希函数,计算所要查询的高维序列数据对象q的哈希表的表号tablei和相应哈希桶的桶号bucket,1≤i≤L;
步骤(3.3),将所要查询的高维序列数据对象q的哈希表的表号tablei和相应哈希桶的桶号bucket作为q的键值对的key值,同时键值对的value值为高维序列数据对象q本身,键值对的最终形式为((tablei,bucket),q),1≤i≤L;
步骤(3.4),将所要查询的高维序列数据对象q的键值对中key值即(tablei,bucket),作为输入值,执行与步骤(2.6)相同的操作,使用BKDRHash函数计算得到一个哈希值,该哈希值用来计算高维序列数据对象q的落入的哈希桶所处的分区的索引值;
步骤(3.5),Driver进程利用步骤(2.6)得到的原始数据的分区索引值,将q发送给含有由步骤(3.4)所计算出的分区索引值的分区的Worker节点;
步骤(3.6),在步骤(3.5)中求得的Worker节点中,将所要查询的高维序列q与Worker节点分区中含有的原始记录的id进行碰撞冲突组合;
步骤(3.7),聚合具有相同key值的数据集并统计次数,生成((q,id),count)键值对,其中,count为所要查询的高维序列数据对象q与每一条记录的碰撞冲突总次数;
步骤(3.8),将键值对((q,id),count)按照count值进行降序排序处理;
步骤(3.9),对于所要查询的高维序列数据对象q的KNN查...
【专利技术属性】
技术研发人员:郑啸,张震,陈启航,黄俊,
申请(专利权)人:安徽工业大学,马鞍山市卫生健康信息中心,
类型:发明
国别省市:安徽;34
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。