数据扫描方法和装置的制造方法

xiaoxiao2021-3-1  207

数据扫描方法和装置的制造方法
【技术领域】
[0001 ]本发明涉及计算机技术领域,尤其涉及一种数据扫描方法和装置。
【背景技术】
[0002]在相关技术中,可以通过Map-Reduce(映射-归约)等计算框架实现大规模的数据集并行分析,比如HBase(Hadoop Database)数据库也提供了通过Map-Reduce来分析其数据的库函数,使得用户可以通过输入List〈Scan>任务的方式,发起对数据库表的扫描分析。
[0003]然而,相关技术在对List〈Scan>任务的处理过程中,需要针对其中的每个Scan扫描指令分别启动相应的Map扫描进程来进行数据扫描,而通常List〈Scan>任务中往往会包含很多Scan扫描指令,甚至可能达到上百个Scan扫描指令,导致需要同时启动非常多的Map扫描进程,而每个Map扫描进程的调度与启动退出消耗的时间比较长,最终导致List〈Scan>任务需要耗费很长时间。

【发明内容】

[0004]有鉴于此,本发明提供一种数据扫描方法和装置,以解决相关技术中的上述技术问题。
[0005]本发明提供了如下技术方案:
[0006]根据本发明的第一方面,提出了一种数据扫描方法,包括:
[0007]获取当前任务对应的数据表的子集信息;
[0008]根据所述子集信息,判断所述当前任务中包含的各扫描指令在查询所述数据表时覆盖的子集;
[0009]与被覆盖的子集一一对应地启动相应的扫描进程,以进行数据扫描。
[0010]根据本发明的第二方面,提出了一种数据扫描装置,包括:
[0011 ]子集信息获取单元,用于获取当前任务对应的数据表的子集信息;
[0012]子集判定单元,用于根据所述子集信息,判断所述当前任务中包含的各扫描指令在查询所述数据表时覆盖的子集;
[0013]执行单元,用于与被覆盖的子集一一对应地启动相应的扫描进程,以进行数据扫。
[0014]由以上技术方案可见,本发明通过分析每个扫描指令在查询数据时所覆盖的子集,并以覆盖的子集的数量来启动相应数量的扫描进程,即启动与各子集一一对应的扫描进程,从而可以减少分析任务总体Map数量,从而减少任务调度方面的开销与延迟,提升任务整体分析性能。
【附图说明】
[0015]图1是本发明实施例中提供的一种数据扫描方法的流程图;
[0016]图2是本发明实施例中提供的另一种数据扫描方法的流程图;
[0017]图3是本发明实施例中提供的一种电子设备的结构示意图;
[0018]图4是本发明实施例中提供的一种数据扫描装置的结构示意图。
【具体实施方式】
[0019]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0020]请参考图1,图1是本发明实施例中提供的一种数据扫描方法的流程图,该方法应用于数据库中,可以包括以下步骤:
[0021 ]步骤102,获取当前任务对应的数据表的子集信息。
[0022]在本实施例中,本发明的技术方案可以应用于各种类型的数据库;举例而言,该数据库可以为HBas e数据库,但本发明并不对此进行限制。
[0023]为了便于描述,下文以HBase数据库为例进行说明。在HBase数据库中,随着每一数据表(或称,数据库表)中记录的数据增多,HBase会将数据按照Rowkey(行键)进行划分,形成多个行键区间(Reg1n),每个行键区间均作为相应数据表的子集,并且仅记录对应行键范围(由对应的起始Rowkey和终止Rowkey确定)的数据,即各个行键区间之间的Rowkey值不会重叠。因此,当确定需要查询的数据表之后,就可以知道相应的子集信息,即该数据表内的行键区间划分情况。
[0024]步骤104,根据所述子集信息,判断所述当前任务中包含的各扫描指令(Scan)在查询所述数据表时覆盖的子集。
[0025]在本实施例中,可以将每个扫描指令的扫描起止行键与各子集的起止行键进行比较;若任一扫描指令的扫描起止行键范围与任一子集的起止行键范围存在至少一部分重叠,则判定所述任一扫描指令覆盖所述任一子集。在该实施例中,通过对起止行键的比较可以准确判断每一扫描指令在数据表中对应覆盖的子集。
[0026]步骤106,与被覆盖的子集一一对应地启动相应的扫描进程,以进行数据扫描;其中,当应用于HBase数据库时,该扫描进程可以为Map-reduce计算框架启动的map扫描进程。
[0027]在本实施例中,通过为每个子集对应启动一个扫描进程,根据当前所覆盖的子集的数量来启动相同数量的扫描进程,而区别于相关技术中对应每个扫描指令启动一个扫描进程,可以有效减少所启动的扫描进程数量,从而避免扫描进程在启动和调用过程中消耗的时间,有助于提升数据扫描效率。
[0028]由上述实施例可知,本发明通过将属于同一子集的数据由同一个map进程进行分析,从而在针对同一个数据表的当前任务中包含诸多扫描指令时,尤其是当多个扫描指令均覆盖了同一子集时,可以有效减少启动的map进程,有助于减少任务调度方面的开销与延迟,提升任务整体分析性能。
[0029]进一步地,在上述实施例的基础上,在另一实施例中还可以包括:当任一被覆盖的子集中存在被多个扫描指令重复查询的数据片段时,合并对所述数据片段的重复查询操作。
[0030]换言之,如果两个扫描指令的扫描区间(行键区间)有至少一部分发生重叠,那么通过对重叠部分的合并处理,可以避免相同的数据被两个扫描指令分别重复扫描,可以避免数据的重复分析和资源浪费,有助于提升数据扫描的速度和效率。
[0031]图2是本发明实施例中提供的另一种数据扫描方法的流程图,如图2所示,该方法可以包括以下步骤:
[0032]步骤202,判断当前任务(如List〈Scan>)中包含的扫描指令(S卩List〈Scan>中包含的Scan指令)的个数是否小于或等于预设值,如果小于或等于该预设值,则进入步骤204,否则进入步骤206。
[0033]在本实施例中,由于本发明在最终执行数据扫描之前,添加了确定扫描指令覆盖的子集等步骤,这些步骤需要消耗相应的额外处理时长;因此,如果当前任务中包含的扫描指令的数量较少时,虽然最终执行数据扫描的时长可能会缩短,但由于存在上述的额外处理时长,所以可能反而造成更长的耗时。
[0034]因此,通过事先判断当前任务中包含的扫描指令的数量,可以对数量较少的情况进行基于相关技术的直接处理(即转入步骤204),而对数量较多的情况按照本发明的技术方案进行处理(即转入步骤206)。
[0035]步骤204A,分别为每一扫描指令启动对应的扫描进程(如Map-reduce计算框架启动的map进程),以分别执行每一扫描指令对应的查询操作。
[0036]步骤204B,对当前任务List〈Scan>进行按表分组。
[0037]在本实施例中,由于每条Scan指令可能同时覆盖多个数据表中的数据,因而可以将不同数据表进行分组,比如每个数据表为一组,从而分别对每组数据表进行扫描处理。
[0038]步骤206,分别确定各个Scan指令在每一数据表上覆盖的子集(Reg1n)。
[0039]在本实施例中,可以分别获取每一数据表的Reg1n信息,包含每个Reg1n的起始Rowkey与终止Rowkey,并结合每一数据表对应的每一 Scan指令的扫描起始Rowkey与扫描终止Rowkey,从而对两个起止范围进行对比得到各个Scan指令在每个Reg1n上的数据分段,即各个Scan指令对各个Reg1n的覆盖情况。
[0040]步骤208A,针对被覆盖的每个 子集,——生成对应的扫描进程。
[0041]在本实施例中,针对确定的被Scan指令覆盖到的所有Reg1n,——对应地启动相同数量的扫描进程(如Map-reduce计算框架启动的map进程),从而即便同一Reg1n被多个Scan指令覆盖到,仍然只需要启动一个map进程即可,可以有效减少启动的map进程数量,从而有助于提升系统响应速度。
[0042]步骤208B,合并各个扫描指令重复查询的数据片段。
[0043]在本实施例中,当多个Scan指令同时覆盖到同一Reg1n时,多个Scan指令在该Reg1n上覆盖的起止范围(由扫描起始Rowkey和扫描终止Rowkey划定)之间可能存在重复,则重复部分对应的数据片段范围可以被合并,从而使得重复部分对应的数据片段仅需要执行一次扫描处理即可,显然可以极大地提升扫描效率。
[0044]当然,步骤208B并非必须执行;可以仅经过步骤208A的处理后,直接转入步骤210。
[0045]步骤210,执行扫描处理。
[0046]通过上述处理方法,当同一张数据表上有很多Scan时,基于步骤208A的处理,可以使得所启动的map进程显著减少,通过让每个map进程多分析一些数据,而减少任务调度带来的开销来达到最终的性能优化;同时,基于步骤208B中对多个Scan指令重复查询的数据片段范围进行合并,可以减少每一 map进程在相应Reg1n内的查询数据量,以进一步加快扫描速度、提升系统处理效率。
[0047]图3示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图3,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据扫描装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0048]请参考图4,在软件实施方式中,该数据扫描装置可以包括子集信息获取单元、子集判定单元和执行单元。其中:
[0049]子集信息获取单元,用于获取当前任务对应的数据表的子集信息;
[0050]子集判定单元,用于根据所述子集信息,判断所述当前任务中包含的各扫描指令在查询所述数据表时覆盖的子集;
[0051]执行单元,用于与被覆盖的子集一一对应地启动相应的扫描进程,以进行数据扫描。
[0052]可选的,所述子集判定单元具体用于:
[0053]将每个扫描指令的扫描起止行键与各子集的起止行键进行比较;
[0054]在任一扫描指令的扫描起止行键范围与任一子集的起止行键范围存在至少一部分重叠时,判定所述任一扫描指令覆盖所述任一子集。
[0055]可选的,所述执行单元具体用于:
[0056]当任一被覆盖的子集中存在被多个扫描指令重复查询的数据片段时,合并对所述数据片段的重复查询操作。
[0057]可选的,所述执行单元具体用于:
[0058]当所述扫描指令的个数小于或等于预设值时,分别为每一扫描指令启动对应的扫描进程,以分别执行每一扫描指令对应的查询操作。
[0059]可选的,所述数据表为HBase数据库表,所述扫描进程为Map-reduce计算框架启动的map进程。
[0060]通过本发明,将多Scan所扫描覆盖的数据中属于同一子集的数据放在一个Map进程中分析,减少分析任务总体Map数量,从而减少任务调度方面的开销与延迟,提升任务整体分析性能。此外,通过分析一个子集上的多Scan数据的重复数据,并过滤掉该重复数据,能够进一步提升分析性能和降低磁盘输入输出。经过验证,对于700个卡口 Scan的一个研判业务,通过此种分析可以使研判分析效率优化到优化前的1/6。
[0061]对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0062]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1.一种数据扫描方法,其特征在于,包括: 获取当前任务对应的数据表的子集信息; 根据所述子集信息,判断所述当前任务中包含的各扫描指令在查询所述数据表时覆盖的子集; 与被覆盖的子集一一对应地启动相应的扫描进程,以进行数据扫描。2.根据权利要求1所述的数据扫描方法,其特征在于,根据所述子集信息,判断所述当前任务中包含的各扫描指令在查询所述数据表时覆盖的子集的过程,包括: 将每个扫描指令的扫描起止行键与各子集的起止行键进行比较; 若任一扫描指令的扫描起止行键范围与任一子集的起止行键范围存在至少一部分重叠,则判定所述任一扫描指令覆盖所述任一子集。3.根据权利要求1所述的数据扫描方法,其特征在于,在进行数据扫描时,包括: 当任一被覆盖的子集中存在被多个扫描指令重复查询的数据片段时,合并对所述数据片段的重复查询操作。4.根据权利要求1所述的数据扫描方法,其特征在于,还包括: 当所述扫描指令的个数小于或等于预设值时,分别为每一扫描指令启动对应的扫描进程,以分别执行每一扫描指令对应的查询操作。5.根据权利要求1至4中任一项所述的数据扫描方法,其特征在于,所述数据表为HBase数据库表,所述扫描进程为Map-reduce计算框架启动的扫描进程。6.一种数据扫描装置,其特征在于,包括: 子集信息获取单元,用于获取当前任务对应的数据表的子集信息; 子集判定单元,用于根据所述子集信息,判断所述当前任务中包含的各扫描指令在查询所述数据表时覆盖的子集; 执行单元,用于与被覆盖的子集一一对应地启动相应的扫描进程,以进行数据扫描。7.根据权利要求6所述的数据扫描装置,其特征在于,所述子集判定单元具体用于: 将每个扫描指令的扫描起止行键与各子集的起止行键进行比较; 在任一扫描指令的扫描起止行键范围与任一子集的起止行键范围存在至少一部分重叠时,判定所述任一扫描指令覆盖所述任一子集。8.根据权利要求6所述的数据扫描装置,其特征在于,所述执行单元具体用于: 当任一被覆盖的子集中存在被多个扫描指令重复查询的数据片段时,合并对所述数据片段的重复查询操作。9.根据权利要求6所述的数据扫描装置,其特征在于,所述执行单元具体用于: 当所述扫描指令的个数小于或等于预设值时,分别为每一扫描指令启动对应的扫描进程,以分别执行每一扫描指令对应的查询操作。10.根据权利要求6至9中任一项所述的数据扫描装置,其特征在于,所述数据表为HBase数据库表,所述扫描进程为Map-reduce计算框架启动的map进程。
【专利摘要】本发明提供一种数据扫描方法和装置,该方法可以包括:获取当前任务对应的数据表的子集信息;根据子集信息,判断当前任务中包含的各扫描指令在查询数据表时覆盖的子集;与被覆盖的子集一一对应地启动相应的扫描进程,以进行数据扫描。通过本发明可以减少分析任务总体Map数量,从而减少任务调度方面的开销与延迟,提升任务整体分析性能。
【IPC分类】G06F9/48
【公开号】CN105487925
【申请号】CN201510898272
【发明人】周后取
【申请人】浙江宇视科技有限公司
【公开日】2016年4月13日
【申请日】2015年12月8日

最新回复(0)