CN110738020A - 一种基于spark的批量方法 - Google Patents
一种基于spark的批量方法 Download PDFInfo
- Publication number
- CN110738020A CN110738020A CN201911025624.8A CN201911025624A CN110738020A CN 110738020 A CN110738020 A CN 110738020A CN 201911025624 A CN201911025624 A CN 201911025624A CN 110738020 A CN110738020 A CN 110738020A
- Authority
- CN
- China
- Prior art keywords
- spark
- hash value
- text
- hash
- batch method
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000004140 cleaning Methods 0.000 claims abstract description 5
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于spark的批量方法,所述方法如下:清洗文本,去掉无意义的空白字符和网页标签;用清洗之后的文本计算出局部敏感散列值;将清洗后的文本与散列值组成一一对应关系,做成表格形式;将局部敏感散列值相对平均切分为N段,利用spark的join算子计算汉明距离相似性,进而实现海量数据去重;本发明的有益效果是:使用了一种新颖方法计算出新获取的散列值与已有的散列值之间的相似性,可用于大批量数据去重,甚至海量数据去重;并且资源消耗很小,速度很快。
Description
技术领域
本发明属于spark技术领域,具体涉及一种基于spark的批量方法。
背景技术
文本去重,通常不是指文本完全一样,而是指文本在内容上有一定比例的重复。目前常用的去重算法,主要是先用局部敏感的散列算法(如simhash算法)计算出局部敏感散列(hash)值,然后再计算新获取的散列值与已有的散列值逐一比较,计算相似性(计算相似性,主要的算法是汉明距离(hamming距离)、余弦距离、欧式几何距离)。常用的方式有:1)使用smlar插件,将已有的散列值存入PostgreSQL数据库,用新获取的散列值检索数据库;2)用spark逐一计算新获取的散列值与将已有的散列值之间的相似性。但这些方法普遍存在的问题有:
1)无法大批量计算出哪些新获取的散列值与已有的相同,也就无法大批量去重。比如第2)种方法,如果新获取的散列值有M(1百万)个,已有的散列值有N(5千万)个,那么需要计算的相似性的复杂度为M*N(1百万乘以5千万,超过十万亿级别),数据量急剧增加,需要的内存和算力也急剧增加,在实际生产中难以接受;
2)效率低。比如上面第1)种方法,当新获取的散列值有1百万以上时需要查询数据库1百万次,查询一次需要30ms左右,1百万次需要8个多小时,这个在实际生产中是难以接受的。
申请号为201611207408.1的一种数据去重方法,该专利直接在内存查询中的无重复数据集散列值,该方法命中率极低,效率极低,而且难以使用在海量数据的场景下。
申请号为201811531642.9的一种基于内容感知的数据去重方法与装置,此专利主要是通过机算汉明距离来判断是否有重复,但是在海量数据中,非常难以直接计算出新获取的散列值与已有的散列值之间的相似性。
发明内容
本发明的目的在于提供一种基于spark的批量方法,以解决上述背景技术中提出的无法大批量计算出哪些新获取的散列值与已有的相同,也就无法大批量去重;效率低,难以使用在海量数据的场景下问题。
为实现上述目的,本发明提供如下技术方案:一种基于spark的批量方法,所述方法如下:
步骤一:清洗文本,去掉无意义的空白字符和网页标签;
步骤二:用清洗之后的文本计算出局部敏感散列值;
步骤三:将清洗后的文本与散列值组成一一对应关系,做成表格形式;
步骤四:将局部敏感散列值相对平均切分为N段,利用spark的join算子计算汉明距离相似性,进而实现海量数据去重;
步骤五:将去重之后的数据与旧数据合并,得到下一次去重的旧数据。
作为本发明的一种优选的技术方案,所述步骤二中,散列值为64位2进制。
作为本发明的一种优选的技术方案,所述表格内包含的字段:ID、文本、文本的散列值。
作为本发明的一种优选的技术方案,所述文本的散列值为该行文本的某局部敏感散列算法求出的散列值。
作为本发明的一种优选的技术方案,还包括匹配模块,该匹配模块用于将清洗后的文本与散列值组成一一对应。
作为本发明的一种优选的技术方案,所述步骤四中,将局部敏感散列值相对平均切分为N段,该N=α+1,其中,α为3。
作为本发明的一种优选的技术方案,还包括spark去重模块,该去重模块用于将需要去重的表与历史表join起来,找到重复的数据;join的字段为两张表的局部敏感散列值分N段的字段,join两表N段字段之间为或逻辑(OR)。
与现有技术相比,本发明的有益效果是:
(1)使用了一种新颖方法计算出新获取的散列值与已有的散列值之间的相似性,可用于大批量数据去重,甚至海量数据去重;
(2)去重消耗资源很少,速度很快。
附图说明
图1为本发明的整体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:一种基于spark的批量方法,方法如下:
步骤一:清洗文本,去掉无意义的空白字符和网页标签;
步骤二:用清洗之后的文本计算出局部敏感散列值;
步骤三:将清洗后的文本与散列值组成一一对应关系,做成表格形式;
步骤四:将局部敏感散列值相对平均切分为N段,利用spark的join算子计算汉明距离相似性,进而实现海量数据去重;
步骤五:将去重之后的数据与旧数据合并,得到下一次去重的旧数据。
具体如下:
1.清洗文本,去掉无意义的空白字符和网页标签,用清洗之后的文本计算出局部敏感散列值,假设散列值为L位2进制(通常为64位2进制),将清洗后的文本与散列值组成一一对应关系,做成表格形式。
假设有两个表—A表、B表,其中A表包含的字段有:ID、文本、文本的散列值,其中B表包含的字段有:ID、文本的散列值,且A表中有需要去重的,而B表没有需要去重的,所以先要去掉A表内部的重复,然后再用A表与B表相比较,去掉A表中的重复,这里表中的ID为唯一ID,用于标记一行文本数据本身的唯一性,可以为UUID;这里表中的文本的散列值为该行文本的某局部敏感散列算法求出的散列值,如果是冷启动,第一次去重,没有B表,那么只需要A表自身去重即可。
2.利用spark的join算子计算汉明距离相似性。
新获取文本的散列值与将已有文本的散列值之间汉明距离小于等于给定阈值α(α为整数,通常为3),那么新获取文本与已有文本相似,应该去掉已有文本。
1)将A表中的散列值和B表中的散列值相对平均切分为N段(N=α+1),假设散列值长度为L,需要将其切分为N段,相对切分算法的过程:
输入:整数L,整数N
输出:Array数组,数组长度为N,数组元素之和为L;
①初始化长度为N的数组Array,Array的每个元素的值为0;
②循环迭代Array,从前往后循环,每Array循环一次元素,将Array的每个元素元素加1,循环到Array最后一个元素时,从第一个元素开始再循环一轮,直到总循环次数为L次;
③总循环为L次时,结束循环,返回Array数组。
相对切分算法的伪代码:
2)利用spark的join实现去重,在汉明距离计算相似性时,假设相似性阈值α,小于等于α判定为相似,大于α判定为不相似,两个散列值都切分N段(N=α+1);如果两个散列值相似,那么一定有α位二进制相同,那么这α位最多可以分布在α段中,那么意味着至少有一段相同,也即两个这散列值切分的某一段必定相同;对于求某一段散列值相等来说,在spark中非常方便处理、高效、快捷;算法实现过程:
输入:A表(字段:id、text、hash、hash_1、hash_2……hash_N),B表(字段:id、hash、hash_1、hash_2……hash_N),有多少段,hash_N就为多少。
输出:去重之后的A表,新的B表。
①A表自身去重。
步骤1:找到A表中相似的行得到duplicate_A表,SQL语句形式如下:
SELECT t1.*,min(t1.hash,t2.hash)as to_left_hash
FROM A t1
INNER JOIN A t2
ON(t1.id!=t2.id)AND(t1.hash_1=t2.hash_1OR t1.hash_2=t2.hash_2OR...OR t1.hash_N=t2.hash_N)
步骤2:去掉A表中相似的行得到hamming_not_duplicate_A,SQL语句形式如下:
SELECT t31.*
FROM A t31
LEFT JOIN duplicate_A t41
ON t31.id=t41.id AND t41.id IS NULL
UNION
SELECT t32.*
FROM A t32
INNER JOIN duplicate_A t42
ON t32.id=t42.id AND t32.hash=t42.hash
②A表与B表相比去重。
步骤一:找到hamming_not_duplicate_A表与B表相似的行得到duplicate_AB表,SQL语句形式如下:
SELECT t5.*
FROM hamming_not_duplicate_A t5
INNER JOIN B t6
ON t5.hash_1=t6.hash_1OR t5.hash_2=t6.hash_2OR...ORt5.hash_N=t6.hash_N
步骤二:去掉duplicate_AB表与B表相似的行得到hamming_not_duplicate_AB表,hamming_not_duplicate_AB表就是A表根据汉明距离求相似性去重之后得到的最后结果表,SQL语句形式如下:
SELECT t7.*
FROM duplicate_AB t7
INNER JOIN A t8
ON t7.id=t8.id AND t8.id IS NULL
③将hamming_not_duplicate_AB与B表合并在一起,得到新的B表,供下一次使用,SQL语句形式如下:
SELECT t9.id,t9.hash
FROM hamming_not_duplicate_AB t9
UNION
SELECT t10.id,t10.hash
FROM B t10
本实施例中,优选的,还包括匹配模块,该匹配模块用于将清洗后的文本与散列值组成一一对应。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (7)
1.一种基于spark的批量方法,其特征在于:所述方法如下:
步骤一:清洗文本,去掉无意义的空白字符和网页标签;
步骤二:用清洗之后的文本计算出局部敏感散列值;
步骤三:将清洗后的文本与散列值组成一一对应关系,做成表格形式;
步骤四:将局部敏感散列值相对平均切分为N段,利用spark的join算子计算汉明距离相似性,进而实现海量数据去重;
步骤五:将去重之后的数据与旧数据合并,得到下一次去重的旧数据。
2.根据权利要求1所述的一种基于spark的批量方法,其特征在于:所述步骤二中,散列值为64位2进制。
3.根据权利要求1所述的一种基于spark的批量方法,其特征在于:所述表格内包含的字段:ID、文本、文本的散列值。
4.根据权利要求1所述的一种基于spark的批量方法,其特征在于:所述文本的散列值为该行文本的某局部敏感散列算法求出的散列值。
5.根据权利要求1所述的一种基于spark的批量方法,其特征在于:还包括匹配模块,该匹配模块用于将清洗后的文本与散列值组成一一对应。
6.根据权利要求1所述的一种基于spark的批量方法,其特征在于:所述步骤四中,将局部敏感散列值相对平均切分为N段,该N=α+1,其中,α为3。
7.根据权利要求1所述的一种基于spark的批量方法,其特征在于:还包括spark去重模块,该去重模块用于将需要去重的表与历史表join起来,找到重复的数据;join的字段为两张表的局部敏感散列值分N段的字段,join两表N段字段之间为或逻辑(OR)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911025624.8A CN110738020B (zh) | 2019-10-25 | 2019-10-25 | 一种基于spark的批量方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911025624.8A CN110738020B (zh) | 2019-10-25 | 2019-10-25 | 一种基于spark的批量方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110738020A true CN110738020A (zh) | 2020-01-31 |
CN110738020B CN110738020B (zh) | 2023-05-30 |
Family
ID=69271492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911025624.8A Active CN110738020B (zh) | 2019-10-25 | 2019-10-25 | 一种基于spark的批量方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110738020B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012234397A (ja) * | 2011-05-02 | 2012-11-29 | Photonic System Solutions Inc | ハミング空間検索装置、ハミング空間検索方法、ハミング空間検索プログラムおよび記録媒体 |
US20130031059A1 (en) * | 2011-07-25 | 2013-01-31 | Yahoo! Inc. | Method and system for fast similarity computation in high dimensional space |
CN105677661A (zh) * | 2014-09-30 | 2016-06-15 | 华东师范大学 | 一种检测社交媒体重复数据的方法 |
CN105930466A (zh) * | 2016-04-21 | 2016-09-07 | 成都数联铭品科技有限公司 | 一种海量数据处理方法 |
CN107066612A (zh) * | 2017-05-05 | 2017-08-18 | 郑州云海信息技术有限公司 | 一种基于SparkJoin操作的自适应数据倾斜调整方法 |
CN107315809A (zh) * | 2017-06-27 | 2017-11-03 | 山东浪潮通软信息科技有限公司 | 一种基于Spark平台的集团新闻数据预处理方法 |
CN107391554A (zh) * | 2017-06-07 | 2017-11-24 | 中国人民解放军国防科学技术大学 | 高效分布式局部敏感哈希方法 |
CN109271487A (zh) * | 2018-09-29 | 2019-01-25 | 浪潮软件股份有限公司 | 一种相似文本分析方法 |
CN110008994A (zh) * | 2019-03-04 | 2019-07-12 | 华南理工大学 | 基于Spark平台运行的P-CFSFDP密度聚类方法 |
CN110321466A (zh) * | 2019-06-14 | 2019-10-11 | 广发证券股份有限公司 | 一种基于语义分析的证券资讯查重方法及系统 |
-
2019
- 2019-10-25 CN CN201911025624.8A patent/CN110738020B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012234397A (ja) * | 2011-05-02 | 2012-11-29 | Photonic System Solutions Inc | ハミング空間検索装置、ハミング空間検索方法、ハミング空間検索プログラムおよび記録媒体 |
US20130031059A1 (en) * | 2011-07-25 | 2013-01-31 | Yahoo! Inc. | Method and system for fast similarity computation in high dimensional space |
CN105677661A (zh) * | 2014-09-30 | 2016-06-15 | 华东师范大学 | 一种检测社交媒体重复数据的方法 |
CN105930466A (zh) * | 2016-04-21 | 2016-09-07 | 成都数联铭品科技有限公司 | 一种海量数据处理方法 |
CN107066612A (zh) * | 2017-05-05 | 2017-08-18 | 郑州云海信息技术有限公司 | 一种基于SparkJoin操作的自适应数据倾斜调整方法 |
CN107391554A (zh) * | 2017-06-07 | 2017-11-24 | 中国人民解放军国防科学技术大学 | 高效分布式局部敏感哈希方法 |
CN107315809A (zh) * | 2017-06-27 | 2017-11-03 | 山东浪潮通软信息科技有限公司 | 一种基于Spark平台的集团新闻数据预处理方法 |
CN109271487A (zh) * | 2018-09-29 | 2019-01-25 | 浪潮软件股份有限公司 | 一种相似文本分析方法 |
CN110008994A (zh) * | 2019-03-04 | 2019-07-12 | 华南理工大学 | 基于Spark平台运行的P-CFSFDP密度聚类方法 |
CN110321466A (zh) * | 2019-06-14 | 2019-10-11 | 广发证券股份有限公司 | 一种基于语义分析的证券资讯查重方法及系统 |
Non-Patent Citations (10)
Title |
---|
SANDEEP SINGH SENGAR: "Moving Object Tracking using Laplacian-DCT based Perceptual Hash", 《THIS FULL-TEXT PAPER WAS PEER-REVIEWED AND ACCEPTED TO BE PRESENTED AT THE IEEE WISPNET 2016 CONFERENCE》 * |
SANDEEP SINGH SENGAR: "Moving Object Tracking using Laplacian-DCT based Perceptual Hash", 《THIS FULL-TEXT PAPER WAS PEER-REVIEWED AND ACCEPTED TO BE PRESENTED AT THE IEEE WISPNET 2016 CONFERENCE》, 15 September 2016 (2016-09-15), pages 2345 - 2349 * |
刘德彬: "大数据在企业金融的生态应用", 《软件和集成电路》 * |
刘德彬: "大数据在企业金融的生态应用", 《软件和集成电路》, no. 08, 15 August 2018 (2018-08-15), pages 62 - 63 * |
寿震宇: "基于机器学习模型的哈希方法研究进展", 《无线通信技术》 * |
寿震宇: "基于机器学习模型的哈希方法研究进展", 《无线通信技术》, vol. 27, no. 3, 15 September 2018 (2018-09-15), pages 36 - 41 * |
胡伟: "基于在线学习型哈希的最近邻查找算法研究进展", 《数据通信》 * |
胡伟: "基于在线学习型哈希的最近邻查找算法研究进展", 《数据通信》, no. 01, 28 February 2018 (2018-02-28), pages 22 - 27 * |
马友忠: "大数据相似性连接查询技术研究进展", 《计算机应用》 * |
马友忠: "大数据相似性连接查询技术研究进展", 《计算机应用》, vol. 38, no. 4, 10 April 2018 (2018-04-10), pages 978 - 986 * |
Also Published As
Publication number | Publication date |
---|---|
CN110738020B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105022840A (zh) | 一种新闻信息处理方法、新闻推荐方法和相关装置 | |
CN104618361B (zh) | 一种网络流数据重排序方法 | |
CN109829066B (zh) | 基于分层结构的局部敏感哈希图像索引方法 | |
US20180143979A1 (en) | Method for segmenting and indexing features from multidimensional data | |
CN103345496A (zh) | 多媒体信息检索方法和系统 | |
CN109271487A (zh) | 一种相似文本分析方法 | |
CN106570166B (zh) | 一种基于多个局部敏感哈希表的视频检索方法及装置 | |
CN105589908A (zh) | 用于事务集合的关联规则计算方法 | |
Gulzar et al. | A framework for evaluating skyline queries over incomplete data | |
CN104572872A (zh) | 一种基于极值的数据去重分块方法 | |
CN114268323A (zh) | 支持行存的数据压缩编码方法、装置及时序数据库 | |
Tirthapura et al. | Rectangle-efficient aggregation in spatial data streams | |
CN110738020A (zh) | 一种基于spark的批量方法 | |
CN105740428A (zh) | 一种基于b+树的高维磁盘索引结构和图像检索方法 | |
Qi et al. | Streaming algorithms for estimating high set similarities in loglog space | |
Goel et al. | Efficient indexing techniques for record matching and deduplication | |
CN110046180B (zh) | 一种用于定位相似实例的方法、装置和电子设备 | |
CN113946345A (zh) | 一种基于字符级局部敏感哈希法进行同源性检测的方法 | |
CN112883704A (zh) | 一种大数据相似文本去重预处理方法、装置及终端设备 | |
CN102184165B (zh) | 一种节省内存的lcs算法 | |
CN106027369A (zh) | 一种面向邮件地址特征的邮件地址匹配方法 | |
CN104881395A (zh) | 一种获取矩阵中向量相似度的方法和系统 | |
EP3324303A1 (en) | Method for segmenting and indexing features from multidimensional data | |
CN106776616B (zh) | 合并对称实体组的方法及装置 | |
CN108829649B (zh) | 基于hbase键值索引的复杂类型编码序列化算法的实现方法 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 401121 Floor 9, Block C, Qilin Tower, No. 53-2, Middle Section of Mount Huangshan Avenue, Yubei District, Chongqing Patentee after: Chongqing Yucun Technology Co.,Ltd. Country or region after: China Address before: 401121 Floor 9, Block C, Qilin Tower, No. 53-2, Middle Section of Mount Huangshan Avenue, Yubei District, Chongqing Patentee before: CHONGQING SOCIALCREDITS BIG DATA TECHNOLOGY CO.,LTD. Country or region before: China |