CN110019084B - 面向HDFS的split层索引方法和装置 - Google Patents

面向HDFS的split层索引方法和装置 Download PDF

Info

Publication number
CN110019084B
CN110019084B CN201710946601.5A CN201710946601A CN110019084B CN 110019084 B CN110019084 B CN 110019084B CN 201710946601 A CN201710946601 A CN 201710946601A CN 110019084 B CN110019084 B CN 110019084B
Authority
CN
China
Prior art keywords
split
index attribute
attribute values
statistical information
information table
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
Application number
CN201710946601.5A
Other languages
English (en)
Other versions
CN110019084A (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.)
Aisino Corp
Original Assignee
Aisino Corp
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 Aisino Corp filed Critical Aisino Corp
Priority to CN201710946601.5A priority Critical patent/CN110019084B/zh
Publication of CN110019084A publication Critical patent/CN110019084A/zh
Application granted granted Critical
Publication of CN110019084B publication Critical patent/CN110019084B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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
    • 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/2462Approximate or statistical queries

Abstract

本发明涉及数据检索领域,公开了一种面向HDFS的split层索引方法和装置。该方法包括:接收查询请求;根据所述查询请求在预先建立的统计信息表中进行查询以确定相应的分块split;以及加载所确定的split以获取与所述查询请求对应的数据。本发明通过在预先建立的统计信息表中查询以确定相应的split,从而可以仅加载所确定的split以获取相应的数据,由此启动的Map数量就可以因仅加载所确定的split数量而大大减少,从而降低了I/O的时间开销,大大提高了查询速度。

Description

面向HDFS的split层索引方法和装置
技术领域
本发明涉及数据检索领域,具体地涉及面向HDFS的split层索引方法和装置。
背景技术
HDFS(Hadoop分布式文件系统)作为Hadoop生态圈的底层基础,通常被用来存储离线数据,并结合Map/Reduce来处理分析性查询,但对于对响应时间要求严格的选择性和交互式查询,则存在性能上的缺陷。
在传统的数据库管理技术中,提高查询处理速度最常用的方法是索引。通过索引来快速过滤掉不符合查询要求的数据,从而可以极大地降低I/O、缩小搜索范围、降低响应时间。然而,传统的索引技术并不能直接应用到HDFS的查询中。现有技术中对HDFS的查询需要启动Map来实现,而在Map Task处理阶段,Map Task初始化和RecordReader读取数据产生的磁盘I/O的时间开销占了很大比重。
发明内容
本发明提供了面向HDFS的split层索引方法和装置,用于解决I/O开销大的问题。
为了实现上述目的,本发明一方面提供了一种面向HDFS的split层索引方法,该方法包括:接收查询请求;根据所述查询请求在预先建立的统计信息表中进行查询以确定相应的分块split;以及加载所确定的split以获取与所述查询请求对应的数据。
优选地,所述统计信息表包括所有split中的每一个split的标识ID splitID和所有split中的每一个split所对应的索引属性的多个索引属性值;其中,一个splitID对应一个索引属性。
优选地,所述统计信息表中的每一个索引属性的多个索引属性值用多个数据区间来表示。
优选地,所述统计信息表的建立过程如下:对每一个splitID对应的索引属性的多个索引属性值按升序排序;计算升序排序后的多个索引属性值的相邻两个索引属性值之间的距离gap;以及将gap的值最大的k-1个gap所对应的2k-2个索引属性值以及所述多个索引属性值中的最小值和最大值这2k个value组合成k个数据区间;其中,所述k个数据区间相互不重叠,k为大于1的整数。
优选地,该方法还包括:将所述查询请求所对应的数据请求区间与所述统计信息表中的每一个split对应的所述k个数据区间进行比较,判断是否有交集;将存在交集的数据区间所对应的split进行加载;以及将不存在交集的数据区间所对应的split丢弃。
本发明第二方面提供了一种面向HDFS的split层索引装置,该装置包括:接收模块,用于接收查询请求;查询模块,用于根据所述查询请求在预先建立的统计信息表中进行查询以确定相应的分块split;以及加载模块,用于加载所确定的split以获取与所述查询请求对应的数据。
优选地,所述统计信息表包括所有split中的每一个split的标识ID splitID和所有split中的每一个split所对应的索引属性的多个索引属性值;其中,一个splitID对应一个索引属性。
优选地,所述统计信息表中的每一个索引属性的多个索引属性值用多个数据区间来表示。
优选地,该装置还包括:信息处理模块,用于建立所述统计信息表;其中,所述统计信息表的建立过程如下:对每一个splitID对应的索引属性的多个索引属性值按升序排序;计算升序排序后的多个索引属性值的相邻两个索引属性值之间的距离gap;以及将gap的值最大的k-1个gap所对应的2k-2个索引属性值以及所述多个索引属性值中的最小值和最大值这2k个value组合成k个数据区间;其中,所述k个数据区间相互不重叠,k为大于1的整数。
优选地,所述查询模块还用于:将所述查询请求所对应的数据请求区间与所述统计信息表中的每一个split对应的所述k个数据区间进行比较,判断是否有交集;将存在交集的数据区间所对应的split进行加载;以及将不存在交集的数据区间所对应的split丢弃。
通过上述技术方案,本发明通过在预先建立的统计信息表中查询以确定相应的split,从而可以仅加载所确定的split以获取相应的数据,由此启动的Map数量就可以因仅加载所确定的split数量而大大减少,从而降低了I/O的时间开销,大大提高了查询速度。
附图说明
图1是本发明提供的面向HDFS的split层索引方法的流程图;
图2是本发明提供的建立统计信息表的流程图;
图3是本发明提供的统计信息表的构成图;
图4是本发明提供的统计信息表的流程图;以及
图5是本发明提供的面向HDFS的split层索引装置的框图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1是本发明提供的面向HDFS的split层索引方法的流程图,如图1所示,该方法包括:
步骤101,接收查询请求。
步骤102,根据查询请求在预先建立的统计信息表中进行查询以确定相应的分块split。
步骤103,加载所确定的split以获取与查询请求对应的数据。
其中统计信息表是预先建立好的,具体建立的过程将在下文中进行详细描述,在查询到相应的split之后,系统仅需要加载所确定的split以获取对应的数据。本领域技术人员应当理解,在查询HDFS时,启动的Map数量与split数量相对应,也就是说,查询的split数量越少,则启动的Map数量就越少,所以,在以上技术特征中,系统仅需要加载所确定的split以获取对应的数据就大大减少了所要查询的split的数量,由此启动的Map数量也就大大减少了,从而大大减少了I/O开销。
其中可以对每一个数据文件建立一张统计信息表,统计信息表包括所有split中的每一个split的标识ID splitID和所有split中的每一个split所对应的索引属性的多个索引属性值;其中,一个splitID对应一个索引属性。具体来说,统计信息表中有多条记录,每一条记录包括一个split,也就是说,每一条记录包括一个splitID和该splitID对应的索引属性的多个索引属性值。每一个索引属性的多个索引属性值用多个数据区间来表示。综上,统计信息表由多个split,每一个split用一条记录对其进行描述,一条记录就是统计信息表中的一行,统计信息表的每一行有一个splitID和与该splitID对应的多个数据区间,例如,第一列为splitID,第二列为多个数据区间。
图2是本发明提供的建立统计信息表的流程图,如图2所示,统计信息表的建立过程如下:
步骤201,对每一个splitID对应的索引属性的多个索引属性值按升序排序,其中可以对多个属性值中进行去重操作;
步骤202,计算升序排序后的多个索引属性值的相邻两个索引属性值之间的距离gap;以及
步骤203,将gap的值最大的k-1个gap所对应的2k-2个索引属性值以及多个索引属性值中的最小值和最大值这2k个value组合成k个数据区间;
其中,k个数据区间相互不重叠,k为大于1的整数。建立统计信息表的核心工作是划分split索引属性的数据区间。理论上讲,split索引属性的数据区间越多,越能精确描述索引属性值的分布,也就越能精确地实现过滤。但是,统计信息表是加载到内存中的,因此不能占用太多的空间。在这里用一个常量k来限制一个split的索引属性的划分区间数,k的大小由应用决定,比如服务器的内存大小、split数量、split数据的分布等。
下面结合图3对图2中所描述的建立统计信息表的流程进行进一步的阐述。图3是本发明提供的统计信息表的构成图,如图3所示,每一个split对应一个唯一ID,即splitID,每一个split都有一个索引属性,索引属性的索引属性值用value表示。
根据图2中的步骤201,对每一个splitID所对应的索引属性的多个索引属性值按升序排序,得到升序排序后的多个索引属性值,然后进行去重,将去重后的且升序排序的多个索引属性值用values表示。
根据图2中的步骤202,计算values中相邻两个索引属性值之间的gap,这里采用的方式式对values进行遍历来得到相邻两个value之间的gap。
根据图2中的步骤203,在步骤202中所计算得到的所有gap中,选择最大的k-1个gap,从而得到这最大的k-1个gap所对应的value,即得到2k-2个value,将这2k-2个value与values中的最小值(用valuemin表示)和最大值(用valuemax表示)组合成k个数据区间。其中,2k-2个value与valuemin和valuemax一起共有2k个value,这2k个value从小到大为valuemin,value1,value2,……,value2k-2,valuemin,组合成的k个数据区间为[valuemin,value1],[value2,value3],……,[value2k-2,valuemax]。
图3中,gap1,gap2,……,gapk-1为相邻两个value之间距离最大的k-1个gap值,value1,value2,……,value2k-2为与最大的k-1个gap值对应的2k-2个value值,valuemin为values中的最小值,valuemax为values中的最大值,splitID为split的唯一标识ID。
图4是本发明提供的查询统计信息表的流程图,如图4所示,该流程包括:
步骤401,将查询请求所对应的数据请求区间与统计信息表中的每一个split对应的所述k个数据区间进行比较。
步骤402,根据比较结果判断是否有交集,也就是数据请求区间与统计信息表中的数据区间中的任意数据区间是否有交集,如果有交集,则执行步骤403,如果没有交集,则执行步骤404。
步骤403,加载split,即,将存在交集的数据区间所对应的split进行加载,以进行后续处理。
步骤404,丢弃split,即,将不存在交集的数据区间所对应的split丢弃。
图5是本发明提供的面向HDFS的split层索引装置的框图,如图5所示,该装置包括接收模块501、查询模块502和加载模块503。其中接收模块501用于接收查询请求;查询模块502用于根据查询请求在预先建立的统计信息表中进行查询以确定相应的分块split;加载模块503用于加载所确定的split以获取与查询请求对应的数据。此外,本发明提供的面向HDFS的split层索引装置还包括信息处理模块(图中未示出),该信息处理模块用于建立统计信息表。
应当说明的是,本发明提供的面向HDFS的split层索引装置的具体细节及益处与本发明提供的面向HDFS的split层索引方法类似,于此不予赘述。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
本发明提供的技术方案是在split层对HDFS查询速度进行优化,通过以上技术方案过滤掉无关的split,从而减少了启动的Map数量和磁盘I/O的开销,大大提高的HDFS的查询速度。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

Claims (7)

1.一种面向HDFS的split层索引方法,其特征在于,该方法包括:
接收查询请求;
根据所述查询请求在预先建立的统计信息表中进行查询以确定相应的分块split;以及
加载所确定的split以获取与所述查询请求对应的数据;
其中,所述统计信息表包括所有split中的每一个split的标识ID splitID和所有split中的每一个split所对应的索引属性的多个索引属性值,一个splitID对应一个索引属性;
所述统计信息表中的每一个索引属性的多个索引属性值用多个数据区间来表示;
所述统计信息表的建立过程如下:对每一个splitID对应的索引属性的多个索引属性值按升序排序;计算升序排序后的多个索引属性值的相邻两个索引属性值之间的距离gap;以及将gap的值最大的k-1个gap所对应的2k-2个索引属性值以及所述多个索引属性值中的最小值和最大值这2k个value组合成k个数据区间,所述k个数据区间相互不重叠,k为大于1的整数。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
将所述查询请求所对应的数据请求区间与所述统计信息表中的每一个split对应的所述k个数据区间进行比较,判断是否有交集;
将存在交集的数据区间所对应的split进行加载;以及
将不存在交集的数据区间所对应的split丢弃。
3.一种面向HDFS的split层索引装置,其特征在于,该装置包括:
接收模块,用于接收查询请求;
查询模块,用于根据所述查询请求在预先建立的统计信息表中进行查询以确定相应的分块split;以及
加载模块,用于加载所确定的split以获取与所述查询请求对应的数据;
其中,所述统计信息表包括所有split中的每一个split的标识ID splitID和所有split中的每一个split所对应的索引属性的多个索引属性值,一个splitID对应一个索引属性;
所述统计信息表中的每一个索引属性的多个索引属性值用多个数据区间来表示;
所述统计信息表的建立过程如下:对每一个splitID对应的索引属性的多个索引属性值按升序排序;计算升序排序后的多个索引属性值的相邻两个索引属性值之间的距离gap;以及将gap的值最大的k-1个gap所对应的2k-2个索引属性值以及所述多个索引属性值中的最小值和最大值这2k个value组合成k个数据区间,所述k个数据区间相互不重叠,k为大于1的整数。
4.根据权利要求3所述的装置,其特征在于,所述统计信息表包括所有split中的每一个split的标识ID splitID和所有split中的每一个split所对应的索引属性的多个索引属性值;
其中,一个splitID对应一个索引属性。
5.根据权利要求4所述的装置,其特征在于,所述统计信息表中的每一个索引属性的多个索引属性值用多个数据区间来表示。
6.根据权利要求4或5所述的装置,其特征在于,该装置还包括:
信息处理模块,用于建立所述统计信息表;
其中,所述统计信息表的建立过程如下:
对每一个splitID对应的索引属性的多个索引属性值按升序排序;
计算升序排序后的多个索引属性值的相邻两个索引属性值之间的距离gap;以及
将gap的值最大的k-1个gap所对应的2k-2个索引属性值以及所述多个索引属性值中的最小值和最大值这2k个value组合成k个数据区间;
其中,所述k个数据区间相互不重叠,k为大于1的整数。
7.根据权利要求6所述的装置,其特征在于,
所述查询模块还用于:将所述查询请求所对应的数据请求区间与所述统计信息表中的每一个split对应的所述k个数据区间进行比较,判断是否有交集;以及
所述加载模块还用于:将存在交集的数据区间所对应的split进行加载;及将不存在交集的数据区间所对应的split丢弃。
CN201710946601.5A 2017-10-12 2017-10-12 面向HDFS的split层索引方法和装置 Active CN110019084B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710946601.5A CN110019084B (zh) 2017-10-12 2017-10-12 面向HDFS的split层索引方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710946601.5A CN110019084B (zh) 2017-10-12 2017-10-12 面向HDFS的split层索引方法和装置

Publications (2)

Publication Number Publication Date
CN110019084A CN110019084A (zh) 2019-07-16
CN110019084B true CN110019084B (zh) 2022-01-14

Family

ID=67186609

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710946601.5A Active CN110019084B (zh) 2017-10-12 2017-10-12 面向HDFS的split层索引方法和装置

Country Status (1)

Country Link
CN (1) CN110019084B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158965A (zh) * 2007-10-25 2008-04-09 中国科学院计算技术研究所 一种分布式文件系统的文件读系统和方法
CN101178708A (zh) * 2006-11-07 2008-05-14 北京酷讯科技有限公司 针对结构化网页的自动模板信息定位方法
CN101193127A (zh) * 2007-11-28 2008-06-04 中兴通讯股份有限公司 一种间接获取数据包输入接口信息的方法及装置
CN101719155A (zh) * 2009-12-29 2010-06-02 北京航空航天大学 一种支持分布式多集群计算环境的多维属性范围查询的方法
CN102073726A (zh) * 2011-01-11 2011-05-25 百度在线网络技术(北京)有限公司 搜索引擎系统及该搜索引擎系统的结构化数据引入方法
CN102201007A (zh) * 2011-06-14 2011-09-28 悠易互通(北京)广告有限公司 一种大规模数据搜索系统
CN105718521A (zh) * 2016-01-15 2016-06-29 湖南大学 一个基于Wavelet Tree的网络数据包索引系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643639B2 (en) * 2001-02-07 2003-11-04 International Business Machines Corporation Customer self service subsystem for adaptive indexing of resource solutions and resource lookup
US20070005631A1 (en) * 2005-06-30 2007-01-04 International Business Machines Corporation Apparatus and method for dynamically determining index split options from monitored database activity

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178708A (zh) * 2006-11-07 2008-05-14 北京酷讯科技有限公司 针对结构化网页的自动模板信息定位方法
CN101158965A (zh) * 2007-10-25 2008-04-09 中国科学院计算技术研究所 一种分布式文件系统的文件读系统和方法
CN101193127A (zh) * 2007-11-28 2008-06-04 中兴通讯股份有限公司 一种间接获取数据包输入接口信息的方法及装置
CN101719155A (zh) * 2009-12-29 2010-06-02 北京航空航天大学 一种支持分布式多集群计算环境的多维属性范围查询的方法
CN102073726A (zh) * 2011-01-11 2011-05-25 百度在线网络技术(北京)有限公司 搜索引擎系统及该搜索引擎系统的结构化数据引入方法
CN102201007A (zh) * 2011-06-14 2011-09-28 悠易互通(北京)广告有限公司 一种大规模数据搜索系统
CN105718521A (zh) * 2016-01-15 2016-06-29 湖南大学 一个基于Wavelet Tree的网络数据包索引系统

Also Published As

Publication number Publication date
CN110019084A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
CN107807982B (zh) 一种异构数据库的一致性校验方法及装置
CN106528787B (zh) 一种基于海量数据多维分析的查询方法及装置
CN103703467A (zh) 存储数据的方法和装置
CN104112008A (zh) 一种多表数据关联查询优化方法和装置
CN102200972A (zh) 一种数据库维护方法和设备
US11288287B2 (en) Methods and apparatus to partition a database
EP3217296A1 (en) Data query method and apparatus
WO2020077027A1 (en) Method and system for executing queries on indexed views
CN103440301A (zh) 一种数据多副本混合存储方法及系统
CN103678583A (zh) 结构化数据比较的方法及系统
CN112199935B (zh) 数据的比对方法、装置、电子设备及计算机可读存储介质
US10990573B2 (en) Fast index creation system for cloud big data database
CN104268298A (zh) 一种创建数据库索引及其查询的方法
CN105302869B (zh) 一种HBase二级索引查询和存储系统及其查询方法
CN104881475A (zh) 一种用于大数据随机抽样的方法和系统
CN104408084A (zh) 一种大数据筛选方法及装置
US11250001B2 (en) Accurate partition sizing for memory efficient reduction operations
CN107391749B (zh) 一种查询分表数据实现瀑布流的方法
CN110019084B (zh) 面向HDFS的split层索引方法和装置
US11250002B2 (en) Result set output criteria
CN109542912B (zh) 区间数据存储方法、装置、服务器及存储介质
CN115658680A (zh) 数据存储方法、数据查询方法和相关装置
CN111221814A (zh) 二级索引的构建方法、装置及设备
CN114564501A (zh) 一种数据库数据存储、查询方法、装置、设备及介质
JP6613706B2 (ja) テーブル設計支援装置、テーブル設計支援方法及び制御プログラム

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