CN107391554A - 高效分布式局部敏感哈希方法 - Google Patents

高效分布式局部敏感哈希方法 Download PDF

Info

Publication number
CN107391554A
CN107391554A CN201710422330.3A CN201710422330A CN107391554A CN 107391554 A CN107391554 A CN 107391554A CN 201710422330 A CN201710422330 A CN 201710422330A CN 107391554 A CN107391554 A CN 107391554A
Authority
CN
China
Prior art keywords
hash
data
key
hash table
distribution formula
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.)
Granted
Application number
CN201710422330.3A
Other languages
English (en)
Other versions
CN107391554B (zh
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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201710422330.3A priority Critical patent/CN107391554B/zh
Publication of CN107391554A publication Critical patent/CN107391554A/zh
Application granted granted Critical
Publication of CN107391554B publication Critical patent/CN107391554B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/2453Query optimisation
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • 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

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)
  • Software Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种分布式局部敏感哈希方法,包括:从分布式文件系统加载原始数据,读取原始数据向量集合,生成第一弹性分布式数据集;根据用户指定的哈希表数量L和哈希函数数量k,构造L个复合哈希函数;计算数据集中每项数据的L个哈希值,将每项数据分别映射到每个哈希表的各一个哈希桶中,将每项数据中的哈希表标识与复合哈希函数的值组成的键值对合并为字符串并映射为数字键值,数字键值与数据标识形成键值对,保存为第二弹性分布式数据集;根据第二数据集中每项数据的数字键值进行重分区,使得有具有相同数字键值的数据被保存在相同的分区中,完成哈希表的构建。该方法能减少构建哈希表过程产生的混洗量,提高构建索引效率,查询时能减少消息传递开销。

Description

高效分布式局部敏感哈希方法
技术领域
本发明属于互联网技术中的大数据数据挖掘领域,特别是涉及局部敏感哈希方法的分布式实现,加速海量高维数据的相似性搜索。
背景技术
相似性搜索是多媒体信息检索领域中的一个重要问题,是指根据用户输入的查询对象,基于某种相似度(或距离)度量方式,在已有的数据集合中查找与之相似度最高(或距离最小)的对象。为了提升相似性搜索的效率,已有KD-tree、R-tree、SR-tree等索引方法被相继被提出,并在低维空间中有良好的效果。但随着数据维度的增加,这些方法的性能则呈现急剧下降的趋势,该问题被称之为“维度灾难”。为了克服“维度灾难”,许多近似搜索的方法被提出,其中最著名的方法之一就是局部敏感哈希(LocalitySensitiveHashing,LSH)。LSH方法通过使用一组具有局部敏感性质的哈希函数,会以很高的概率将原始数据空间中距离相近的对象散列到相同的哈希桶之中,查询时则只需计算查询对象所在哈希桶中的数据对象与查询对象之间的距离即可找出近似点。
在搜索过程中,对于给定的一个特征,重要的是如何快速地从海量的特征中找到和这个特征相似的一些特征。局部敏感哈希就是:如果原来的数据相似,那么hash以后的数据也保持一定的相似性。数据的维数在某种程度上能反映其信息量,一般来说维数越多,其反映的信息量就越大。如果我们知道的信息越多,就能越准确地判定两个东西的相似性。但因为高维空间上计算复杂度太高,所以通常是通过哈希函数把高维数据映射到低维空间上,降维就在某种程度上造成的信息的丢失,在降维后的低维空间中就很难100%保持原始数据空间中的相似性,所以是说“保持一定的相似性”。局部敏感哈希的基本思想是,用hash的方法把数据从原空间哈希到一个新的空间中,使得在原始空间的相似的数据,在新的空间中也相似的概率很大,而在原始空间中不相似的数据,在新的空间中相似的概率很小。这种方法以牺牲一部分精度为代价,大大降低了计算的复杂度,提高了高维空间中相似性搜索的效率。
尽管LSH已经成为近似相似性搜索领域中最重要的索引技术之一,但是该方法的常见形式都局限于单机计算环境,难以处理大规模数据,需要将该方法扩展到分布式环境下以处理海量数据。分布式环境下,一种直观的方法是基于一系列通用分布式计算框架实现局部敏感哈希方法。ApacheSpark是目前最常用的分布式计算框架之一,相比于Hadoop等框架有着明显的性能优势。Spark的核心是弹性分布式数据集(RDD),它是一种对分布式存储的数据的抽象,本质是一组数据分片(partition),每个分片包含一个或者多个数据项,不同分片上的数据项可被并行操作。在RDD之上,Spark提供了丰富的算子,如map,filter等,可以对RDD中的数据进行转换和抽取。Spark的采用的是一种类HadoopMapReduce的计算模式。在MapReduce模式中计算过程分为map和reduce两个阶段,map阶段将输入的元素列表中的每一个独立元素进行制定的操作,得到一组中间数据组成的列表;reduce阶段则是对中间数据列表中的元素进行适当的合并和计算。而map阶段与reduce阶段之间传递中间结果的过程称作混洗(shuffle)。混洗过程中map阶段的中间结果会先写入到本地磁盘,然后reduce阶段不同节点跨网络读取中间结果数据。因此混洗通常是MapReduce类任务中最耗时的过程。
基于Spark实现分布式的LSH,基本思路如下:1)将数据对象加载进来用RDD进行分布式存储。2)构建索引,合并数据RDD不同分区中哈希值相同的数据对象,构成哈希表RDD;3)执行查询操作,首选计算查询点的一组哈希值,然后需要将这些哈希值广播到哈希表RDD中的每一个数据分片来进行检索,得到一组候选对象。4)计算候选对象与查询对象之间的相似度,根据结果进行排序或过滤,得到真正的相似对象。
然而,这种简单实现方式存在一系列的问题:1)缺省情况下,数据的分布可能很不规则,构建索引数据RDD中的数据需要跨分区合并,导致产生大量的混洗开销,而大量的混洗会产生频繁的磁盘读写操作和网络传输,从而最终导致整体性能的下降。2)数据对象的存储位置对查询对象是不可知的,因此计算出查询对象的哈希值后会广播到数据对象所有可能的存储位置进行检索,消息传递开销大,查询效率低。
发明内容
本发明针对解决海量高维数据相似搜索问题,基于Spark平台实现了高效分布式局部敏感哈希方法。为了解决前面提到实现分布式局部敏感哈希方法面临的技术问题,本发明在简单实现的基础上设计并实现了一系列优化方案。本发明请求保护一种分布式局部敏感哈希方法,包含以下步骤:
步骤1,从分布式文件系统加载原始数据,读取原始数据向量集合,为每条数据增加数据标识,生成第一弹性分布式数据集。其中第一弹性分布式数据集中每条数据记录的格式为由数据标识与数据向量组成的键值对。
步骤2,根据用户指定的哈希表数量L和哈希函数数量k,构造L个复合哈希函数。
步骤3,根据步骤2中生成的L个复合哈希函数gi,其中1≤i≤L,计算第一弹性分布式数据集中每项数据的L个哈希值,将每项数据分别映射到每个哈希表的各一个哈希桶中,所述哈希桶表示为<<i,gi(x)>,idx>,其中i为哈希表标识,表示该项数据的哈希桶所在的哈希表,每项数据会被映射到L个哈希桶当中;将每项数据中的哈希表标识与复合哈希函数的值组成的键值对<i,gi(x)>合并为字符串,根据字符哈希方法将所述字符串映射为数字键值key,所述数字键值与数据标识形成<keyx,idx>键值对,将映射后得到的全体数据的集合保存为第二弹性分布式数据集。
步骤4,根据第二弹性分布式数据集中每项数据的数字键值key对第二弹性分布式数据集进行重分区,使得有具有相同数字键值key的数据被保存在相同的分区中,将同一分区中的数据进行合并,得到形式如<key,(id1,id2,…,idn)>的哈希桶,n则为具有相同key的数据的数目,将这些哈希桶数据保存在哈希表弹性分布式数据集中,完成哈希表的构建。
进一步地,步骤2中复合哈希函数的构造方法为:设p-稳态局部敏感哈希函数族H,h∈H是该函数族中的一个局部敏感哈希函数,根据用户指定的哈希表个数L和哈希函数个数k,构造L个复合哈希函数g,对于某项维度为d的数据x,有gi(x)=(h1(x),h2(x),…,hk(x)),其中1≤i≤L,gi(x)为针对数据x构造的用于构建一个哈希表的第i个复合哈希函数,其中p-稳态局部敏感哈希函数族的定义为:
其中,a是一个d维的向量,向量的每一维是一个从标准高斯分布中随机选取的浮点数;b是一个从[0,w]中均匀选取的浮点数,w表示哈希桶的桶宽。
进一步地,步骤4中所述对第二弹性分布式数据集进行重分区的方法是,计算数字键值key的哈希码值,与分区个数进行非负取模计算,得到新的分区号,然后将数据根据新的分区号保存到相应的分区中。
进一步地,所述方法包括在完成哈希表的构建后执行查询处理过程,所述查询处理过程包括:
步骤(1),使用与构建哈希表过程相同的L个复合哈希函数gi,计算查询对象q的L个哈希值gi(q)1≤i≤L,并与哈希表号组成键值对<i,gi(q)>,其中i为哈希表号;
步骤(2),针对查询对象q的L个键值对<i,gi(q)>,将i和gi(q)拼接成一个字符串s,然后使用字符哈希方法将s映射成Long型的数字,作为数字键值key;
步骤(3),根据查询对象q的L个数字键值key计算对应的弹性分布式数据集的一个或多个分区,确定查询对象映射到的哈希桶,取出哈希桶中的数据作为查询对象的候选近邻点;
步骤(4),将分散在各工作节点的分区中的候选点回收到客户端,在客户端计算候选近邻点集合中每个点与查询对象之间的距离,距离度量方式为欧式空间的2范数距离;根据用户设定的距离阈值进行过滤,从候选近邻点集合中查找筛选出与查询对象的距离小于阈值的点作为查询对象的真正近邻点,得到查询对象的近邻点集合,其中所述欧式空间的2范数距离的计算方法为:其中x和y分别表示候选近邻点集合中每个点及查询对象的d维向量;
进一步地,步骤(3)中确定弹性分布式数据集的一个或多个分区的过程进一步包括,计算查询对象的L个数字键值key的哈希码值,与分区数进行非负取模操作,计算出相应哈希表弹性分布式数据集的一个或多个分区号。
本发明与现有技术相比,具有以下效果:
本发明将传统的单机局部敏感哈希方法扩展为了分布式方法,使之能够处理现有方法难以应对的海量高维数据相似性搜索问题。该方法在构建哈希表过程中通过在加载数据过程中的重分区之前进行哈希值的计算,减少了构建哈希表过程产生的混洗量,提高了构建索引的效率;基于这种构建哈希表的方法,该方法可以将查询点发送到指定的RDD分区中进行查询,减少了消息传递开销,提升了查询性能。
附图说明
图1为本发明的分布式架构图;
图2为本发明构建哈希表的数据流程图;
图3为本发明执行查询的数据流程图;
图4为本发明哈希表RDD中的分区与哈希表的哈希桶对应关系图。
具体实施方式
为了使本申请中的技术方案被更好地理解,下面将结合本申请实施例中的附图和具体实施方式,对本申请进行清楚、详细的描述:
如图1所示,本发明公开了一种高效分布式局部敏感哈希方法,并基于分布式计算框架Spark进行设计与实现,包含以下部分:
客户端是定义了具体任务的应用程序,其中定义的任务可以是构建哈希表或者执行查询。客户端将任务提交给主节点进行调度后发送到各个计算节点并行执行,并等待接收计算结果。
主节点与客户端和工作节点进行通信,接收客户端提交的作业,将作业划分成一组任务集合,根据集群状态对任务进行调度,分发到各个节点进行执行。
工作节点负责数据存储和任务计算。每个工作节点存储数据的一部分,即RDD中某个范围的分区集合。
如图2所示,构建哈希表的流程如下:
步骤1,从分布式文件系统加载原始数据,读取原始数据向量集合,为每条数据增加数据标识,生成第一弹性分布式数据集。其中第一弹性分布式数据集中每条数据记录的格式为由数据标识与数据向量组成的键值对。
具体地,从分布式文件系统HDFS加载原始数据,读取原始数据向量集合,并为每条数据加一个Long型的数据标识id,得到数据RDD:dataRDD1。数据RDD中的每条记录的格式为Long类型的id和Vector类型的data组成的键值对<id,data>。
步骤2,根据用户指定的哈希表数量L和哈希函数数量k,构造L个复合哈希函数。
具体地,设p-稳态局部敏感哈希函数族H,h∈H是该函数族中的一个局部敏感哈希函数。根据用户指定的哈希表个数L和哈希函数个数k,构造L个复合哈希函数g,对于某项维度为d的数据x,有gi(x)=(h1(x),h2(x),…,hk(x)),1≤i≤L,gi(x)为针对数据x构造的用于构建一个哈希表的第i个复合哈希函数,其中p-稳态局部敏感哈希函数族的定义为:
其中,a是一个d维的向量,向量的每一维是一个从标准高斯分布中随机选取的浮点数;b是一个从[0,w]中均匀选取的浮点数,w表示哈希桶的桶宽。a、b和w的取值需要根据局部敏感哈希LSH对查询结果质量的要求动态确定,具体的选择方式不在本专利的研究范围之内。
已有方法在构建复合哈希函数gi(x)=(h1(x),h2(x),…,hk(x))的过程中,通常是在哈希函数族中随机选取k个相互独立的h函数进行组合。为提高构造复合哈希函数的效率,步骤2可使用哈希函数复用的方式优化处理。对于一个维度为d的数据点q,计算h(q)的时间复杂度是O(d),计算g1(q),…,gL(q)的时间复杂度是O(dkL)。
具体地,用户指定的哈希表数量L和哈希函数数量k,其中k是偶数,根据计算得到一参数m的值,定义函数ui=(h1(i),...,hk/2(i)),其中1≤i≤L。定义复用哈希函数gi=(ua1,ub1),1≤a1<b1≤m。此时我们可以构建个复用哈希函数及对应的哈希表。使用这种方法,在同样条件下我们构建L个哈希表的时间复杂度就降低到了O(dkm)=O(dk√L)。
步骤3,根据步骤2中生成的L个复合哈希函数gi,其中1≤i≤L,计算第一弹性分布式数据集中每项数据的L个哈希值,将每项数据分别映射到每个哈希表的各一个哈希桶中,所述哈希桶表示为<<i,gi(x)>,idx>,其中i为哈希表标识,表示该项数据的哈希桶所在的哈希表,每项数据会被映射到L个哈希桶当中;将每项数据中的哈希表标识与复合哈希函数的值组成的键值对<i,gi(x)>合并为字符串,根据字符哈希方法将所述字符串映射为数字键值key,所述数字键值与数据标识形成<keyx,idx>键值对,将映射后得到的全体数据的集合保存为第二弹性分布式数据集。
具体地,使用步骤2中产生的L个哈希函数gi,1≤i≤L计算出数据RDD中每项数据的L个哈希值,将每项数据分别映射到L个哈希表中各一个形式如<<i,gi(x)>,idx>的哈希桶中,其中i为哈希表标识,表示该项数据的哈希桶所在的哈希表,即每项数据会被映射到L个哈希桶当中。
此处的哈希桶,实际就是包含一组具有相同哈希值的数据的集合,哈希表就是包含所有这些哈希桶的集合,所以这个映射过程就是哈希表和哈希桶的构建过程。哈希表初始创建为空,在开始计算每条数据哈希值的时候,并不知道最终总共会产生多少种不同的哈希值,也就确定不了哈希桶的个数,只能在映射过程中确定。
例如对于dataRDD1中的一项数据(idx,x)经过步骤3则会得到L个<<i,gi(x)>,idx>形式的哈希桶,其中1≤i≤L。然后将每项数据中的<i,gi(x)>合并成一个字符串s,利用字符哈希算法(bkdr算法)将s映射成一个Long型的数字作为key,得到<keyx,idx>,映射后得到的全体数据的集合保存为dataRDD2。
步骤4,根据第二弹性分布式数据集中每项数据的数字键值key对第二弹性分布式数据集进行重分区,使得有具有相同数字键值key的数据被保存在相同的分区中,将同一分区中的数据进行合并,得到形式如<key,(id1,id2,…,idn)>的哈希桶,n则为具有相同key的数据的数目,将这些哈希桶数据保存在哈希表弹性分布式数据集中,完成哈希表的构建。
其中,所述对第二弹性分布式数据集进行重分区的方法是,计算数字键值key的哈希码值,与分区个数进行非负取模计算,得到新的分区号,然后将数据根据新的分区号保存到相应的分区中。
具体地,根据dataRDD2中每项数据的key对dataRDD2进行重分区,重分区的方式是计算key的hashcode然后与分区个数做非负取模计算,得到新的分区号,然后数据根据新的分区号保存到相应的分区中。这样只有具有相同key的数据会被保存在相同的RDD分区中,然后将同一分区中的数据进行合并,得到形式如<key,(id1,id2,…,idn)>的哈希桶,n则为具有相同key的数据的数目。这些哈希桶数据保存在哈希表RDD:hashTablesRDD中。这样,进行相同哈希桶中数据的合并时只需在每个分区中完成,而无需执行跨分区计算,消除了这一步的混洗,降低了整体的混洗量。至此,哈希表构建过程完毕。
如图3所示,执行查询的过程如下:
步骤1,使用与构建哈希表过程相同的L个复合哈希函数计算查询对象q的L个哈希值;
使用与构建哈希表过程相同的L个复合哈希函数gi,计算查询对象q的L个哈希值gi(q),1≤i≤L,并与哈希表号组成键值对<i,gi(q)>,其中i为哈希表号。
步骤2,针对查询对象q的L个键值对<i,gi(q)>,将i和gi(q)拼接成一个字符串s,然后使用字符哈希算法(bkdr算法)将s映射成Long型的数字,作为数字键值key。
步骤3,根据查询对象q的L个数字键值key计算对应的弹性分布式数据集的一个或多个分区,确定查询对象映射到的哈希桶,取出哈希桶中的数据作为查询对象的候选近邻点。
其中所述查找弹性分布式数据集的一个或多个分区的过程进一步包括,计算查询对象的L个数字键值key的哈希码值,与分区数进行非负取模操作,计算出相应哈希表弹性分布式数据集的一个或多个分区号。
由于构建哈希表过程中数据是根据数字键值key进行分区的,任一哈希桶中的数据都只分布在一个分区中,而不会出现同一哈希桶中的数据分散在多个不同分区的情况。
如附图4所描述,哈希表RDD中的分区与哈希表的哈希桶是一对多的关系。因此本步骤计算q的L个key的hashcode然后与分区数进行非负取模操作,计算出相应哈希表RDD的一个或者多个分区号,就找到了查询对象q所映射到的哈希桶所在的分区,在这个分区内针对这个分区内的所有数据做查找操作,取出这些分区(哈希桶)中的数据则为q的候选近邻点。基于这种查询方法,查询数据不必被广播到所有RDD分区进行查询,减少了消息传递开销,加快了查询速度。
步骤4,将分散在各工作节点的分区中的候选点回收到客户端,在客户端计算候选近邻点集合中每个点与查询对象之间的距离,距离度量方式为欧式空间的2范数距离;根据用户设定的距离阈值进行过滤,从候选近邻点集合中查找筛选出与查询对象的距离小于阈值的点作为查询对象的真正近邻点,得到查询对象的近邻点集合,其中所述欧式空间的2范数距离的计算方法为:
其中x和y分别表示候选近邻点集合中每个点及查询对象的d维向量。
具体地,设步骤3中得到的候选近邻点的集合为S,计算候选近邻点集合S中每个点与查询点q之间的距离,距离度量方式为欧式空间的2范数距离,对于两个d维向量x和y,它们之间的距离计算方法如下所示:
然后按照用户输入的距离阈值r进行过滤,只有与q的距离小于r的点会被保留下来成为q的真正近邻点,这样最后就得到了q的近邻点集合。
步骤4中可以将过滤操作前移来优化本步骤的处理方式。
具体地,设各分区得到候选点集合为Si,1≤i≤n,n为包含候选点的分区的数量。直接在每个分区中计算该分区中候选点与查询点q的距离,即针对每个分区Si,计算Si中每个点与q的距离,距离小于r的点保留下来作为该分区中q的真正近邻点。最后将各分区中的真正近邻点回收到客户端,就得到了q的近邻点集合。这种优化方式并行地查找真正近邻点,且最后回收到客户端的数据量更小,使整体查询效率提高。至此,查询过程完毕。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (5)

1.一种分布式局部敏感哈希方法,包含以下步骤:
步骤1,从分布式文件系统加载原始数据,读取原始数据向量集合,为每条数据增加数据标识,生成第一弹性分布式数据集。其中第一弹性分布式数据集中每条数据记录的格式为由数据标识与数据向量组成的键值对;
步骤2,根据用户指定的哈希表数量L和哈希函数数量k,构造L个复合哈希函数;
步骤3,根据步骤2中生成的L个复合哈希函数gi,其中1≤i≤L,计算第一弹性分布式数据集中每项数据的L个哈希值,将每项数据分别映射到每个哈希表的各一个哈希桶中,所述哈希桶表示为<<i,gi(x)>,idx>,其中i为哈希表标识,表示该项数据的哈希桶所在的哈希表,每项数据会被映射到L个哈希桶当中。将每项数据中的哈希表标识与复合哈希函数的值组成的键值对<i,gi(x)>合并为字符串,根据字符哈希方法将所述字符串映射为数字键值key,所述数字键值与数据标识形成<keyx,idx>键值对,将映射后得到的全体数据的集合保存为第二弹性分布式数据集;
步骤4,根据第二弹性分布式数据集中每项数据的数字键值key对第二弹性分布式数据集进行重分区,使得有具有相同数字键值key的数据被保存在相同的分区中,将同一分区中的数据进行合并,得到形式如<key,(id1,id2,…,idn)>的哈希桶,n则为具有相同key的数据的数目,将这些哈希桶数据保存在哈希表弹性分布式数据集中,完成哈希表的构建。
2.如权利要求1所述的方法,步骤2中复合哈希函数的构造方法为:设p-稳态局部敏感哈希函数族H,h∈H是该函数族中的一个局部敏感哈希函数,根据用户指定的哈希表个数L和哈希函数个数k,构造L个复合哈希函数g,对于某项维度为d的数据x,有gi(x)=(h1(x),h2(x),…,hk(x)),其中1≤i≤L,gi(x)为针对数据x构造的用于构建一个哈希表的第i个复合哈希函数,其中p-稳态局部敏感哈希函数族的定义为:
其中,a是一个d维的向量,向量的每一维是一个从标准高斯分布中随机选取的浮点数;b是一个从[0,w]中均匀选取的浮点数,w表示哈希桶的桶宽。
3.如权利要求1所述的方法,步骤4中所述对第二弹性分布式数据集进行重分区的方法是,计算数字键值key的哈希码值,与分区个数进行非负取模计算,得到新的分区号,然后将数据根据新的分区号保存到相应的分区中。
4.如权利要求1-3之一所述的方法,所述方法包括在完成哈希表的构建后执行查询处理过程,所述查询处理过程包括:
步骤(1),使用与构建哈希表过程相同的L个复合哈希函数gi,计算查询对象q的L个哈希值gi(q)1≤i≤L,并与哈希表号组成键值对<i,gi(q)>,其中i为哈希表号;
步骤(2),针对查询对象q的L个键值对<i,gi(q)>,将i和gi(q)拼接成一个字符串s,然后使用字符哈希方法将s映射成Long型的数字,作为数字键值key;
步骤(3),根据查询对象q的L个数字键值key计算对应的弹性分布式数据集的一个或多个分区,确定查询对象映射到的哈希桶,取出哈希桶中的数据作为查询对象的候选近邻点;
步骤(4),将分散在各工作节点的分区中的候选点回收到客户端,在客户端计算候选近邻点集合中每个点与查询对象之间的距离,距离度量方式为欧式空间的2范数距离;根据用户设定的距离阈值进行过滤,从候选近邻点集合中查找筛选出与查询对象的距离小于阈值的点作为查询对象的真正近邻点,得到查询对象的近邻点集合,其中所述欧式空间的2范数距离的计算方法为:其中x和y分别表示候选近邻点集合中每个点及查询对象的d维向量。
5.如权利要求4所述的方法,步骤(3)中确定弹性分布式数据集的一个或多个分区的过程进一步包括,计算查询对象的L个数字键值key的哈希码值,与分区数进行非负取模操作,计算出相应哈希表弹性分布式数据集的一个或多个分区号。
CN201710422330.3A 2017-06-07 2017-06-07 高效分布式局部敏感哈希方法 Active CN107391554B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710422330.3A CN107391554B (zh) 2017-06-07 2017-06-07 高效分布式局部敏感哈希方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710422330.3A CN107391554B (zh) 2017-06-07 2017-06-07 高效分布式局部敏感哈希方法

Publications (2)

Publication Number Publication Date
CN107391554A true CN107391554A (zh) 2017-11-24
CN107391554B CN107391554B (zh) 2021-10-01

Family

ID=60333173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710422330.3A Active CN107391554B (zh) 2017-06-07 2017-06-07 高效分布式局部敏感哈希方法

Country Status (1)

Country Link
CN (1) CN107391554B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109299190A (zh) * 2018-09-10 2019-02-01 华为技术有限公司 分布式存储系统中处理对象的元数据的方法及装置
CN109471635A (zh) * 2018-09-03 2019-03-15 中新网络信息安全股份有限公司 一种基于Java Set集合实现的算法优化方法
CN109829066A (zh) * 2019-01-14 2019-05-31 南京邮电大学 基于分层结构的局部敏感哈希图像索引方法
CN110008448A (zh) * 2019-04-02 2019-07-12 中国工商银行股份有限公司 将SQL代码自动转换为Java代码的方法和装置
CN110210883A (zh) * 2018-05-09 2019-09-06 腾讯科技(深圳)有限公司 群控账号识别方法、装置、服务器及存储介质
CN110309963A (zh) * 2019-06-24 2019-10-08 心怡科技股份有限公司 一种基于动态分区的分布式库位优化算法
CN110532425A (zh) * 2019-08-19 2019-12-03 深圳市网心科技有限公司 视频数据分布式存储方法、装置、计算机设备及存储介质
CN110738020A (zh) * 2019-10-25 2020-01-31 重庆誉存大数据科技有限公司 一种基于spark的批量方法
CN110795469A (zh) * 2019-10-11 2020-02-14 安徽工业大学 基于Spark的高维序列数据相似性查询方法及系统
CN111259060A (zh) * 2020-02-18 2020-06-09 北京百度网讯科技有限公司 数据查询的方法及装置
CN111801665A (zh) * 2018-03-01 2020-10-20 华为技术加拿大有限公司 用于大数据应用的分层局部敏感哈希(lsh)分区索引
CN111966649A (zh) * 2020-10-21 2020-11-20 中国人民解放军国防科技大学 一种高效去重的轻量级在线文件存储方法及装置
CN112699676A (zh) * 2020-12-31 2021-04-23 中国农业银行股份有限公司 一种地址相似关系生成方法及装置
CN113420141A (zh) * 2021-06-24 2021-09-21 中国人民解放军陆军工程大学 基于哈希聚类和上下文信息的敏感数据搜索方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110131223A1 (en) * 2004-07-26 2011-06-02 Google Inc. Detecting spam documents in a phrase based information retrieval system
US20140297996A1 (en) * 2013-04-01 2014-10-02 Advanced Micro Devices, Inc. Multiple hash table indexing
US20150213375A1 (en) * 2014-01-24 2015-07-30 Facebook, Inc. Neighbor determination and estimation
CN105760469A (zh) * 2016-02-05 2016-07-13 大连大学 云计算环境下基于倒排lsh的高维近似图象检索方法
CN106570025A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种数据过滤的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110131223A1 (en) * 2004-07-26 2011-06-02 Google Inc. Detecting spam documents in a phrase based information retrieval system
US20140297996A1 (en) * 2013-04-01 2014-10-02 Advanced Micro Devices, Inc. Multiple hash table indexing
US20150213375A1 (en) * 2014-01-24 2015-07-30 Facebook, Inc. Neighbor determination and estimation
CN106570025A (zh) * 2015-10-10 2017-04-19 北京国双科技有限公司 一种数据过滤的方法及装置
CN105760469A (zh) * 2016-02-05 2016-07-13 大连大学 云计算环境下基于倒排lsh的高维近似图象检索方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WANXIN ZHANG 等: "Shuffle-Efficient Distributed Locality Sensitive Hashing on Spark", 《COMPUTER COMMUNICATIONS WORKSHOPS (INFOCOM WKSHPS), 2016》 *
王勇 等: "基于随机函数的哈希函数", 《计算机工程与设计》 *

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111801665A (zh) * 2018-03-01 2020-10-20 华为技术加拿大有限公司 用于大数据应用的分层局部敏感哈希(lsh)分区索引
CN110210883A (zh) * 2018-05-09 2019-09-06 腾讯科技(深圳)有限公司 群控账号识别方法、装置、服务器及存储介质
CN110210883B (zh) * 2018-05-09 2023-08-22 腾讯科技(深圳)有限公司 群控账号识别方法、装置、服务器及存储介质
CN109471635B (zh) * 2018-09-03 2021-09-17 中新网络信息安全股份有限公司 一种基于Java Set集合实现的算法优化方法
CN109471635A (zh) * 2018-09-03 2019-03-15 中新网络信息安全股份有限公司 一种基于Java Set集合实现的算法优化方法
WO2020052379A1 (zh) * 2018-09-10 2020-03-19 华为技术有限公司 分布式存储系统中处理对象的元数据的方法及装置
CN109299190A (zh) * 2018-09-10 2019-02-01 华为技术有限公司 分布式存储系统中处理对象的元数据的方法及装置
CN109829066A (zh) * 2019-01-14 2019-05-31 南京邮电大学 基于分层结构的局部敏感哈希图像索引方法
CN109829066B (zh) * 2019-01-14 2023-03-21 南京邮电大学 基于分层结构的局部敏感哈希图像索引方法
CN110008448A (zh) * 2019-04-02 2019-07-12 中国工商银行股份有限公司 将SQL代码自动转换为Java代码的方法和装置
CN110008448B (zh) * 2019-04-02 2023-10-17 中国工商银行股份有限公司 将SQL代码自动转换为Java代码的方法和装置
CN110309963A (zh) * 2019-06-24 2019-10-08 心怡科技股份有限公司 一种基于动态分区的分布式库位优化算法
CN110532425B (zh) * 2019-08-19 2022-04-01 深圳市网心科技有限公司 视频数据分布式存储方法、装置、计算机设备及存储介质
CN110532425A (zh) * 2019-08-19 2019-12-03 深圳市网心科技有限公司 视频数据分布式存储方法、装置、计算机设备及存储介质
CN110795469B (zh) * 2019-10-11 2022-02-22 安徽工业大学 基于Spark的高维序列数据相似性查询方法及系统
CN110795469A (zh) * 2019-10-11 2020-02-14 安徽工业大学 基于Spark的高维序列数据相似性查询方法及系统
CN110738020A (zh) * 2019-10-25 2020-01-31 重庆誉存大数据科技有限公司 一种基于spark的批量方法
CN111259060A (zh) * 2020-02-18 2020-06-09 北京百度网讯科技有限公司 数据查询的方法及装置
CN111259060B (zh) * 2020-02-18 2023-08-15 北京百度网讯科技有限公司 数据查询的方法及装置
CN111966649B (zh) * 2020-10-21 2021-01-01 中国人民解放军国防科技大学 一种高效去重的轻量级在线文件存储方法及装置
CN111966649A (zh) * 2020-10-21 2020-11-20 中国人民解放军国防科技大学 一种高效去重的轻量级在线文件存储方法及装置
CN112699676A (zh) * 2020-12-31 2021-04-23 中国农业银行股份有限公司 一种地址相似关系生成方法及装置
CN112699676B (zh) * 2020-12-31 2024-04-12 中国农业银行股份有限公司 一种地址相似关系生成方法及装置
CN113420141A (zh) * 2021-06-24 2021-09-21 中国人民解放军陆军工程大学 基于哈希聚类和上下文信息的敏感数据搜索方法
CN113420141B (zh) * 2021-06-24 2022-10-04 中国人民解放军陆军工程大学 基于哈希聚类和上下文信息的敏感数据搜索方法

Also Published As

Publication number Publication date
CN107391554B (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
CN107391554A (zh) 高效分布式局部敏感哈希方法
EP2924594B1 (en) Data encoding and corresponding data structure in a column-store database
US7558802B2 (en) Information retrieving system
CN111190904B (zh) 一种图-关系数据库混合存储的方法和装置
JP2010186391A (ja) データベース処理システム、計算機及びデータベース処理方法
CN110147377B (zh) 大规模空间数据环境下基于二级索引的通用查询方法
CN107330094A (zh) 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法
CN102521364B (zh) 一种图上两点间最短路径查询方法
CN107209768A (zh) 用于数据集的可扩展排序的方法和设备
CN109033340A (zh) 一种基于Spark平台的点云K邻域的搜索方法及装置
CN103765381A (zh) 对b+树的并行操作
CN106599190A (zh) 基于云计算的动态Skyline查询方法
CN108549696B (zh) 一种基于内存计算的时间序列数据相似性查询方法
CN105574076B (zh) 一种基于Bloom Filter的键值对存储结构及方法
JP4491480B2 (ja) インデクス構築方法、文書検索装置及びインデクス構築プログラム
CN108628969B (zh) 一种空间关键字索引方法及平台、存储介质
JP2002163272A (ja) 特徴ベクトル空間のインデクシング方法及び検索方法
CN105069084B (zh) 一种面向海量数据高效取差集的方法
Balaji et al. Distributed graph path queries using spark
CN102456073A (zh) 一种部分最值查询方法
CN116049180A (zh) 面向Paas平台的租户数据处理方法及装置
CN106202303B (zh) 一种Chord路由表压缩方法及优化文件查找方法
CN108376054A (zh) 一种对标识数据进行索引的处理方法及装置
CN112100446B (zh) 搜索方法、可读存储介质和电子设备
CN103425787A (zh) 一种渐进最优的三角网格重复顶点快速去除方法

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
GR01 Patent grant
GR01 Patent grant