CN107506394B - 一种消除大数据规范关系连接冗余的优化方法 - Google Patents
一种消除大数据规范关系连接冗余的优化方法 Download PDFInfo
- Publication number
- CN107506394B CN107506394B CN201710638243.1A CN201710638243A CN107506394B CN 107506394 B CN107506394 B CN 107506394B CN 201710638243 A CN201710638243 A CN 201710638243A CN 107506394 B CN107506394 B CN 107506394B
- Authority
- CN
- China
- Prior art keywords
- value
- mkey
- key
- party
- svalue
- 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.)
- Active
Links
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (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
本发明通过对二次排序算法进行优化,重新定义Map阶段的分区过程、Shuffle阶段的排序及分组过程,使得Map阶段的输出为包含一方关系属性值和多方关系排序值的组合键及包含多方关系属性值的集合,Reduce阶段将组合键进行分解,提取一方关系的主码作为HBase表的行键,并将组合键中一方关系的各个属性值,多方关系属性值集合及排序后的连接结果分别写入HBase表中对应的列,从而既实现了连接的语义,又消除了冗余,由于以HBase表存储连接结果,从而可以利用HBase提供的各类方法进行数据检索,提高了对连接结果的查询效率。
Description
技术领域
本发明涉及数据优化技术领域,尤其涉及一种消除大数据规范关系连接冗余的优化方法。
背景技术
MapReduce是一种用于处理大数据的分布式计算框架,其数据处理的流程分为Map、Shuffle、Reduce即映射、洗牌、归约三个阶段。在Map阶段,原始数据源根据其数据特征被划分成若干数据块,每个数据块由集群中的节点进行Map逻辑处理,结果以Key/Value即键/值对的形式输出。Shuffle阶段负责对Key/Value对进行排序及分组,Map阶段的排序发生在将节点内存缓冲区的key/Value写入到本地磁盘spill文件,及将多个本地磁盘spill文件合并为一个spill文件时,排序的过程为:首先根据Key所属的Partition即分区排序,然后每个Partition再按Key进行排序。Map阶段完成后,每个Partition会被拷贝到对应的Reduce节点中,由于Reduce节点会接受来自多个Map节点的数据,故Shuffle在Reduce阶段的任务就是将来自不同Map节点的Partition按Key值进行归并排序后,将Key/Value根据Key值分组为[Key,List(Value1,Value2…Valuen)],Value即值,n为正整数,排序后的结果将作为Reduce阶段的任务输入。Reduce阶段负责对[Key,List<Value1,Value2…Valuen]按特定逻辑进行归约处理,并将结果输出。
Hadoop MapReduce是Google MapReduce框架的开源实现,通过对HadoopMapReduce进行扩展,可以将HBase与MapReduce进行集成,从而使得HBase数据表和外界数据源可以以MapReduce的方式进行双向交互,从而提高数据的处理速度和效率。HBase是建立在Hadoop之上,具有高可靠性、高性能、列存储、可伸缩、实时读写特点的数据库系统,能够为海量的数据提供高性能的数据维护及查询服务。现有的MapReduce在对规范的一对多关系进行连接操作时,一方关系的各个属性值均会被多次重复存储。现有技术中的数据连接方式具体为,一方关系M(mkey,matt1,matt2,...,mattn),多方关系为S(SKEY,mkey,SATT,SVALUE),其中mkey为多方关系S的外码,(mkey[m],matt1[m],matt2[m],...,mattn[m]),m∈[1,n]表示一方关系M的一个元组,多方关系S中的SATT属性的取值范围为{satt1,satt2,...,sattn},n为正整数,SVALUE的取值范围为{svalue1,svalue2,...,svaluen},n为正整数,且svalue1,svalue2,...,svaluen为按照1至n从小到大排序的整型值。现有技术中使用mkey对关系M和S进行连接操作,并根据SVALUE值进行连接及二次排序后的结果下所示,
例如其中的svalue1、svalue2、svalue3、svalue4在连接及排序的过程中,mkey[1]matt1[1]matt2[1]...mattn[1]等属性值被重复使用了4次,因此产生了在连接结果中产生了大量冗余,连接结果的查询效率较低。
发明内容
本发明提供了一种消除大数据规范关系连接冗余的优化方法,该方法可以有效消除一对多关系中的数据冗余,提高对连接结果的查询效率。
本发明所采用的技术方案是,一种消除大数据规范关系连接冗余的优化方法,其特征在于,包括以下步骤:
S1,自定义组合键的类型为{字符类型;数值类型;};设置{firstKey;secondKey;}为一组合键;设置M为一方关系,S为多方关系,所述的firstKey存储一方关系M的mkey及各个matt组成的字符串,所述的mkey为firstKey中的第一个子字符串,为一方关系M的主键,所述的matt为一方关系M的属性值,matt的取值范围为{matt1,matt2,…,mattn},n为正整数,表示属性值的个数;所述的secondKey存储多方关系S的SVALUE值,所述的SVALUE为多方关系S中需要排序的数值类型值;
将一方关系M的格式存储为M(mkey,matt1,matt2,...,mattn),多方关系S的格式存储为S(SKEY,mkey,SATT,SVALUE);其中mkey为一方关系M的主键的同时也是S的外键;将(mkey[m],matt1[m],matt 2[m],...,matt n[m])表示为一方关系M的一个元组,mkey[m]为Hbase表的行键,m∈[1,n],{matt1[m],matt2[m],...,mattn[m]}是与mkey[m]对应的属性值,SKEY为多方关系S的主键,SATT为多方关系S的属性值,SATT的取值范围为{satt1,satt2,...,sattn};SVALUE的取值范围为{SVALUE1,SVALUE2,...,SVALUEn},n为正整数,所述的SVALUE1,SVALUE2,...,SVALUEn为按序号1至n从小到大依次排序的数值类型值;
S2,实现Map端的连接,首先将一方关系M的存储文件M.dat复制到执行Map任务的各个节点的内存中,M.dat文件的存储格式在Map端的节点内存中以HashMap结构保存;其次扫描多方关系S中的每一条记录,同时在HashMap中查找是否有相同的mkey的记录,如果有,则进行连接后输出,输出结果的格式为<{组合键},{属性值}>,该组合键存储了一方关系M的主键和M的所有属性值及与其相对应的多方关系S的SVALUE值,该{属性值}存储了多方关系S的属性值和SVALUE值;
S3,重新定义分区函数、排序依据及分组函数;
首先,定义分区函数,取mkey的哈希值与最大的整数按位求与后,得到一个整数结果,将该整数结果与集群中Map结点的个数取余数,该余数的值为Reduce,就是mkey对应的分区;
其次,定义排序依据,在Map和Reduce阶段对处于同一个分区的连接结果排序时,首先按firstKey中的mkey进行主键排序,主键排序以mkey的字符串比较结果决定其大小,再按secondKey中的SVALUE值进行二次排序,SVALUE值比较以参与排序的两个svalue值的差值小于零、等于零、大于零来决定SVALUE值比较的大小并进行依次排序;
最后,定义分组函数,根据组合键中的firstKey的mkey值,按字符串比较规则,相等的mkey被分在同一个组,在Reduce阶段将具有相同组合键的连接结果分在同一组,形成<{组合键}、集合List{属性值}>;
S4,将S3中Reduce阶段的连接结果写入HBase表中;首先对组合键进行分解,取出firstKey中的mkey作为HBase表的行键;然后将firstKey中的其它属性值依次以M:MATT[m],m∈[1,n]列存储,MATT[m]为一方关系M中的MATT的属性名;将已经按SVALUE值排序好的集合List{属性值}以S:satt[k]列存储为对应的SVALUE值,sattr[k]为多方关系S中的SATT在连续结果中的值,k∈[1,n],n为正整数,将集合List{属性值}中的每一个属性值,以sattr[k]+“\t”+SVALUE值的字符串形式追加到字符串变量seq,字符串变量seq用于存储排序后的连接结果;最后增加M:seq列,存储seq字符串变量值,保存连接结果。
采用以上技术方案后,本发明与现有技术相比具有以下优点:
通过对二次排序算法进行优化,重新定义Map阶段的分区过程、Shuffle阶段的排序及分组过程,使得Map阶段的输出为包含一方关系属性值和多方关系排序值的组合键及包含多方关系属性值的集合,Reduce阶段将组合键进行分解,提取一方关系的主码作为HBase表的行键,并将组合键中一方关系的各个属性值,多方关系属性值集合及排序后的连接结果分别写入HBase表中对应的列,从而既实现了连接的语义,又消除了冗余,由于以HBase表存储连接结果,从而可以利用HBase提供的各类方法进行数据检索,提高了对连接结果的查询效率。
具体实施方式
一方关系M(mkey,matt1,matt2,...,mattn),多方关系为S(SKEY,mkey,SATT,SVALUE),其中mkey为多方关系S的外码,(mkey[m],matt1[m],matt2[m],...,mattn[m]),m∈[1,n]表示一方关系M的一个元组,多方关系S中的SATT属性的取值范围为{satt1,satt2,...,sattn},n为正整数,SVALUE的取值范围为{svalue1,svalue2,...,svaluen},n为正整数,且svalue1,svalue2,...,svaluen为按照1至n从小到大排序的整型值。本发明利用MapReduce将具有相同属性的文件进行连接操作,根据参与连接的文件大小可选择使用Reduce端连接、Map端连接、Semi(半)连接及Reduce端与Bloom Filter连接,连接的结果可以写入文本文件,也可以直接写入HBase数据表。由于HBase表是按列存储的,在定义表结构时只需要定义列族即Column Family,对属于列族的列的数量没有限制,以ColumnFamily:Qualifier的形式表示一个列名,Qualifier可以是任意的字节数组。因此可以以S:satt[k]列,k∈[1,n],S为多方关系名,satt[k]为S中的SATT在连接结果中的值,用来存储连接结果中的多方关系中SVALUE属性的值。对于连接结果中的一方关系M,提取mkey[m],m∈[1,n]为HBase表的行键,以M:MATT[m]列,m∈[1,n],M为一方关系名,MATT[m]为M中的MATT属性名,用来存储一方关系在连接结果中和mkey[m]对应的(matt1[m],matt2[m],…,mattn[m])属性值,从而使得一方关系的连接结果只存储了一次,既实现了连接的语义,又消除了冗余。HBase存储列值时默认按列名进行排序,增加M:Seq列存储排序后的SVALUE值及其与satt[k],k∈[1,n]的对应关系。经过二次排序后的连接结果在HBase表中的存储结构如下所示,
实验环境为包含有4个节点的Hadoop集群,1个主节点,4个数据节点,主节点也为数据节点。
下面以学生,学生选课关系模拟规范的一对多关系来具体说明本发明,选取的模拟数据如下所示,
任务在集群中运行后,将实验结果写入到HBase表中的结果下所示,
从实验结果看,每个学生的属性值即学号只存储了一次,每个学生所选课程存储了多次,如学号201012001的学生的连接结果为201012001column=std:CourseSeq,timestamp-14822333387867,value=Maths:98,Database:88;Networks:77;Arts:67,因此本发明中的方法既实现了连接的语义,又消除了冗余,二次排序的学生成绩可直接通过查询std:CourseSeq列得到,因此本发明消除了数据冗余,提高了对连接结果的查询效率。
Claims (1)
1.一种消除大数据规范关系连接冗余的优化方法,其特征在于,包括以下步骤:
S1,自定义组合键的类型为{字符类型;数值类型;};设置{firstKey;secondKey;}为一组合键;设置M为一方关系,S为多方关系,所述的firstKey存储一方关系M的mkey及各个matt组成的字符串,所述的mkey为firstKey中的第一个子字符串,为一方关系M的主键,所述的matt为一方关系M的属性值,matt的取值范围为{matt1,matt2,...,mattn},n为正整数,表示属性值的个数;所述的secondKey存储多方关系S的SVALUE值,所述的SVALUE为多方关系S中需要排序的数值类型值;
将一方关系M的格式存储为M(mkey,matt1,matt2,...,mattn),多方关系S的格式存储为S(SKEY,mkey,SATT,SVALUE);其中mkey为一方关系M的主键的同时也是S的外键;将(mkey[m],matt1[m],matt2[m],...,matt n[m])表示为一方关系M的一个元组,mkey[m]为Hbase表的行键,m∈[1,n],{matt1[m],matt2[m],...,mattn[m]}是与mkey[m]对应的属性值,SKEY为多方关系S的主键,SATT为多方关系S的属性值,SATT的取值范围为{satt1,satt2,...,sattn};SVALUE的取值范围为{SVALUE1,SVALUE2,...,SVALUEn},所述的SVALUE1,SVALUE2,...,SVALUEn为按序号1至n从小到大依次排序的数值类型值;
S2,实现Map端的连接,首先将一方关系M的存储文件M.dat复制到执行Map任务的各个节点的内存中,M.dat文件的存储格式在Map端的节点内存中以HashMap结构保存;其次扫描多方关系S中的每一条记录,同时在HashMap中查找是否有相同的mkey的记录,如果有,则进行连接后输出,输出结果的格式为<{组合键},{属性值}>,该组合键存储了一方关系M的主键和M的所有属性值及与其相对应的多方关系S的SVALUE值,该{属性值}存储了多方关系S的属性值和SVALUE值;
S3,重新定义分区函数、排序依据及分组函数;
首先,定义分区函数,取mkey的哈希值与最大的整数按位求与后,得到一个整数结果,将该整数结果与集群中Map结点的个数取余数,该余数的值为Reduce,就是mkey对应的分区;
其次,定义排序依据,在Map和Reduce阶段对处于同一个分区的连接结果排序时,首先按firstKey中的mkey进行主键排序,主键排序以mkey的字符串比较结果决定其大小,再按secondKey中的SVALUE值进行二次排序,SVALUE值比较以参与排序的两个svalue值的差值小于零、等于零、大于零来决定SVALUE值比较的大小并进行依次排序;
最后,定义分组函数,根据组合键中的firstKey的mkey值,按字符串比较规则,相等的mkey被分在同一个组,在Reduce阶段将具有相同组合键的连接结果分在同一组,形成<{组合键},List{属性值}>;
S4,将S3中Reduce阶段的连接结果写入HBase表中;首先对组合键进行分解,取出firstKey中的mkey作为HBase表的行键;然后将firstKey中的其它属性值依次以M:MATT[m],m∈[1,n]列存储,MATT[m]为一方关系M中的MATT的属性名;将已经按SVALUE值排序好的集合List{属性值}以S:satt[k]列存储为对应的SVALUE值,satt[k]为多方关系S中的SATT在连续结果中的值,k∈[1,n],n为正整数,将集合List{属性值}中的每一个属性值,以satt[k]+“\t”+SVALUE值的字符串形式追加到字符串变量seq,字符串变量seq用于存储排序后的连接结果;最后增加M:seq列,存储seq字符串变量值,保存连接结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710638243.1A CN107506394B (zh) | 2017-07-31 | 2017-07-31 | 一种消除大数据规范关系连接冗余的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710638243.1A CN107506394B (zh) | 2017-07-31 | 2017-07-31 | 一种消除大数据规范关系连接冗余的优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107506394A CN107506394A (zh) | 2017-12-22 |
CN107506394B true CN107506394B (zh) | 2020-05-29 |
Family
ID=60688818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710638243.1A Active CN107506394B (zh) | 2017-07-31 | 2017-07-31 | 一种消除大数据规范关系连接冗余的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107506394B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209656B (zh) * | 2019-04-26 | 2022-05-17 | 北京互金新融科技有限公司 | 数据处理方法及装置 |
CN110532251B (zh) * | 2019-08-28 | 2021-11-05 | 东北大学 | 基于布隆过滤器算法的地震台网大数据去重的方法 |
CN110728317A (zh) * | 2019-09-30 | 2020-01-24 | 腾讯科技(深圳)有限公司 | 决策树模型的训练方法、系统、存储介质及预测方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467570B (zh) * | 2010-11-17 | 2014-03-12 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN103810197A (zh) * | 2012-11-09 | 2014-05-21 | 北京亿赞普网络技术有限公司 | 一种基于Hadoop的数据处理方法及其系统 |
CN103440244A (zh) * | 2013-07-12 | 2013-12-11 | 广东电子工业研究院有限公司 | 一种大数据存储优化方法 |
US10990288B2 (en) * | 2014-08-01 | 2021-04-27 | Software Ag Usa, Inc. | Systems and/or methods for leveraging in-memory storage in connection with the shuffle phase of MapReduce |
CN106777133A (zh) * | 2016-12-16 | 2017-05-31 | 浙江大学 | 一种基于MapReduce的度量空间相似连接处理方法 |
-
2017
- 2017-07-31 CN CN201710638243.1A patent/CN107506394B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107506394A (zh) | 2017-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391554B (zh) | 高效分布式局部敏感哈希方法 | |
CN103246749B (zh) | 面向分布式计算的矩阵数据库系统及其查询方法 | |
EP3204846B1 (en) | Parallel merging | |
CN110674154B (zh) | 一种基于Spark的对Hive中数据进行插入、更新和删除的方法 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN107506394B (zh) | 一种消除大数据规范关系连接冗余的优化方法 | |
Xiao et al. | SWEclat: a frequent itemset mining algorithm over streaming data using Spark Streaming | |
US11782924B2 (en) | Distributed join index for shared-nothing and log-structured databases | |
Phan et al. | Toward intersection filter-based optimization for joins in mapreduce | |
CN112118010A (zh) | 一种字符串的压缩处理方法、装置和存储介质 | |
CN104268158A (zh) | 一种结构化数据分布式索引及检索方法 | |
CN113961580A (zh) | 数据查询方法、业务系统以及电子设备 | |
CN103761298B (zh) | 一种基于分布式架构的实体匹配方法 | |
Li et al. | Accurate counting bloom filters for large-scale data processing | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
CA2418093A1 (en) | Data compiling method | |
CN108319604A (zh) | 一种hive中大小表关联的优化方法 | |
CN108121807B (zh) | Hadoop环境下多维索引结构OBF-Index的实现方法 | |
CN108595588B (zh) | 一种科学数据存储关联方法 | |
CN110597929A (zh) | 一种基于MapReduce的并行数据立方构建方法 | |
Papadopoulos et al. | Efficient distributed range query processing in apache spark | |
Doulkeridis et al. | Parallel and distributed processing of spatial preference queries using keywords | |
CN112463904B (zh) | 一种分布式空间矢量数据与单点空间数据混合分析方法 | |
CN111984756A (zh) | 一种实现Hbase二级索引的方法 | |
Li et al. | A partition model and strategy based on the Stoer–Wagner algorithm for SaaS multi-tenant data |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220507 Address after: 430223 Wuhan Bohan science and technology optoelectronic information industry base 12 # 208, No. 18, huashiyuan North Road, Donghu New Technology Development Zone, Wuhan City, Hubei Province Patentee after: WUHAN TECHRATE TECHNOLOGY Co.,Ltd. Address before: No.206, Guanggu 1st Road, Donghu New Technology Development Zone, Wuhan City, Hubei Province 430205 Patentee before: WUHAN INSTITUTE OF TECHNOLOGY |