1.本技术涉及大数据处理技术领域,具体而言,涉及一种压缩文件索引 增量更新方法、装置及电子设备。
背景技术:
2.在大数据处理过程中,常需要定期对获取到的数据进行压缩存储,以 节省存储空间。文件压缩之后形成数据块,为方便后续分布式计算的会建 立数据块索引。目前,待处理的数据更新,产生新的数据块后,通常会针 对所有数据块重新生成索引文件。在大数据场景中,文件量往往很大,重 新生成索引需要时间较长,会浪费大量计算资源和时间。
技术实现要素:
3.为了克服现有技术中的上述不足,本技术的目的在于提供一种压缩文 件索引增量更新方法,所述方法包括:
4.获取压缩索引文件,所述压缩索引文件用于指示压缩数据文件中各数 据块的位置;
5.根据所述压缩索引文件,将所述压缩数据文件中记录的已建立索引的 最后一个数据块的起始位置确定为目标数据块的起始位置;所述目标数据 块包括头文件和数据文件;
6.根据所述目标数据块的起始位置,读取所述目标数据块的头文件;
7.根据所述目标数据块的头文件中记录的信息确定所述目标数据块是否 被压缩过;
8.根据所述目标数据块是否被压缩过,确定整个所述目标数据块的长度;
9.根据整个所述目标数据块的长度及所述目标数据块的起始位置,确定 下一个数据块的起始位置并写入所述压缩索引文件;
10.将所述下一个数据块作为新的目标数据块,从所述根据所述目标数据 块的起始位置,读取所述目标数据块的头文件起重复执行,直至处理完所 有数据块。
11.可选地,所述头文件包括压缩前文件长度字段、压缩后文件长度字段 及校验码字段;
12.所述根据所述目标数据块的头文件中记录的信息确定所述目标数据块 是否被压缩过的步骤,包括:
13.获取所述目标数据块的压缩前文件长度和压缩后文件长度;
14.检测所述压缩前文件长度和压缩后文件长度是否相等;
15.若所述压缩前文件长度和压缩后文件长度相等,则确定所述目标数据 块被压缩过;
16.若所述压缩前文件长度和压缩后文件长度不相等,则确定所述目标数 据块未被压缩过:
17.所述根据所述目标数据块是否被压缩过,确定整个所述目标数据块的 长度的步骤,包括:
18.若所述目标数据块被压缩过,则确定所述校验码字段的长度为压缩前 数据的校验码的长度加压缩后数据的校验码的长度;
19.若所述目标数据块未被压缩过,则所述校验码字段的长度为压缩前数 据的校验码的长度;
20.根据所述压缩前文件长度字段的长度、所述压缩后文件长度字段的长 度、所述校验码字段的长度及所述压缩后文件长度确定整个所述目标数据 块的长度。
21.可选地,所述压缩数据文件为lzo文件;所述根据所述压缩索引文件, 将所述压缩数据文件中记录的已建立索引的最后一个数据块的起始位置确 定为目标数据块的起始位置的步骤,包括:
22.获取所述压缩索引文件最后8个字节的数据;
23.将获取到的数据转换为长整型的数据后作为所述已建立索引的最后一 个数据块的起始位置。
24.可选地,所述获取所述目标数据块的压缩前文件长度和压缩后文件长 度的步骤,包括:
25.从所述目标数据块的文件头起,读取4位长度的数据作为所述压缩前 文件长度,再次向后读取4位长度的数据作为所述压缩后文件长度。
26.可选地,所述方法还包括:
27.按照第一设定周期获取待处理数据,根据所述待处理数据生成数据块;
28.按照第二设定周期执行所述获取压缩索引文件的步骤及后续步骤;
29.其中,所述第二设定周期大于所述第一设定周期。
30.本技术还提供一种压缩文件索引增量更新装置,所述装置包括:
31.索引获取模块,用于获取压缩索引文件,所述压缩索引文件用于指示 压缩数据文件中各数据块的位置;
32.数据块确定模块,用于根据所述压缩索引文件,将所述压缩数据文件 中记录的已建立索引的最后一个数据块的起始位置确定为目标数据块的起 始位置;所述目标数据块包括头文件和数据文件;
33.数据块读取模块,用于根据所述目标数据块的起始位置,读取所述目 标数据块的头文件;
34.数据块检测模块,用于根据所述目标数据块的头文件中记录的信息确 定所述目标数据块是否被压缩过;根据所述目标数据块是否被压缩过,确 定整个所述目标数据块的长度;
35.索引更新模块,用于根据整个所述目标数据块的长度及所述目标数据 块的起始位置,确定下一个数据块的起始位置并写入所述压缩索引文件;
36.循环处理模块,用于将所述下一个数据块作为新的目标数据块,从所 述根据所述目标数据块的起始位置,读取所述目标数据块的头文件起重复 执行,直至处理完所有数据块。
37.可选地,所述头文件包括压缩前文件长度字段、压缩后文件长度字段 及校验码字
段;
38.所述数据块检测模块具体用于获取所述目标数据块的压缩前文件长度 和压缩后文件长度;检测所述压缩前文件长度和压缩后文件长度是否相等; 若所述压缩前文件长度和压缩后文件长度相等,则确定所述目标数据块被 压缩过;若所述压缩前文件长度和压缩后文件长度不相等,则确定所述目 标数据块未被压缩过;若所述目标数据块被压缩过,则确定所述校验码字 段的长度为压缩前数据校验码的长度加压缩后数据校验码的长度;若所述 目标数据块未被压缩过,则所述校验码字段的长度为压缩前数据校验码的 长度;根据所述压缩前文件长度字段的长度、所述压缩后文件长度字段的 长度及所述校验码字段的长度及所述压缩后文件长度确定整个所述目标数 据块的长度。
39.可选地,所述压缩文件为lzo文件;
40.所述数据块确定模块具体用于获取所述压缩索引文件最后8个字节的 数据;将获取到的数据转换为长整型的数据作为所述已建立索引的最后一 个数据块的起始位置;
41.所述数据块读取模块具体用于从所述目标数据块的文件头起,读取4 位长度的数据作为所述压缩前文件长度,再次向后读取4位长度的数据作 为所述压缩后文件长度。
42.本技术还提供一种电子设备,包括处理器及机器可读存储介质,所述 机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被所述 处理器执行时,实现本技术提供的所述压缩文件索引增量更新方法。
43.本技术还提供一种机器可读存储介质,所述机器可读存储介质存储有 机器可执行指令,所述机器可执行指令在被一个或多个处理器执行时,实 现本技术提供的所述压缩文件索引增量更新方法。
44.相对于现有技术而言,本技术具有以下有益效果:
45.本技术提供的压缩文件索引增量更新方法、装置及电子设备,通过在 压缩数据文件有增加后,将压缩索引文件中记录的已建立索引的最后一个 数据块的起始位置确定为目标数据块的起始位置,读取目标数据块的头文 件,进而根据该目标数据块是否更新确定下一个数据块的起始地址写入压 缩索引文件,如此循环,可以实现压缩索引文件的增量更新,从而避免了 每次都对整个压缩索引文件进行全量更新,节约了处理时间和计算资源。
附图说明
46.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需 要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些 实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
47.图1为本技术实施例提供的压缩文件索引增量更新方法的示意图;
48.图2为本技术实施例提供的电子设备的示意图;
49.图3为本技术实施例提供的压缩文件索引增量更新装置的功能模块示 意图。
具体实施方式
50.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本 申请实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描 述,显然,所描述的实施例是
本技术一部分实施例,而不是全部的实施例。 通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配 置来布置和设计。
51.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限 制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本 申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获 得的所有其他实施例,都属于本技术保护的范围。
52.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一 旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步 定义和解释。
53.在本技术的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅 用于区分描述,而不能理解为指示或暗示相对重要性。
54.在本技术的描述中,还需要说明的是,除非另有明确的规定和限定, 术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连 接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电 连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件 内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术 语在本技术中的具体含义。
55.请参照图1,图1为本实施例提供的一种压缩文件索引增量更新方法的 示意图,该方法可以包括以下步骤。
56.步骤s110,获取压缩索引文件,所述压缩索引文件用于指示压缩数据 文件中各数据块的位置。
57.在本实施例中,所述压缩索引文件中可以记录有各个数据块的起始地 址。可选地,所述压缩数据文件乐意为lzo文件,所述压缩索引文件可以 为lzo文件的索引。
58.步骤s120,根据所述压缩索引文件,将所述压缩数据文件中记录的已 建立索引的最后一个数据块的起始位置确定为目标数据块的起始位置。所 述目标数据块包括头文件和数据文件。
59.在本实施例中,所述压缩索引文件中记录的最后一个数据块的地址记 为所述目标数据库的起始地址,该目标数据库也就是最后一个已建立了索 引的数据块。
60.可选地,在本实施例中,当所述压缩数据文件为lzo文件时,所述根 据所述压缩索引文件,将所述压缩数据文件中记录的已建立索引的最后一 个数据块的起始位置确定为目标数据块的起始位置的动作可以包括:获取 所述压缩索引文件最后8个字节的数据;将获取到的数据转换为长整型的 数据后作为所述已建立索引的最后一个数据块的起始位置。
61.步骤s130,根据所述目标数据块的起始位置,读取所述目标数据块的 头文件。
62.在本实施例中,在确定所述目标数据块的起始位置后,即可从所述起 始位置起读取所述目标数据块的头文件。
63.步骤s140,根据所述目标数据块的头文件中记录的信息确定所述目标 数据块是否被压缩过。
64.具体地,在本实施例中,所述头文件包括压缩前文件长度字段、压缩 后文件长度字段及校验码字段。可选地,在本实施例中,当所述压缩数据 文件为lzo文件时,可以从所述目标数据块的文件头起,读取4位长度的 数据作为所述压缩前文件长度,再次向后读取4
位长度的数据作为所述压 缩后文件长度。
65.由于生成数据块时,若待处理数据过小,如果进行压缩可能导致压缩 后的数据反而比原来的数据大,因此有些数据块中的数据可能是未经过压 缩的。而经过压缩的数据块和未经压缩的数据块的头文件大小是不同的。 因此在本实施例中,需要根据数据块是否压缩过来确定所述目标数据库的 整体大小。
66.具体地,可以获取所述目标数据块的压缩前文件长度和压缩后文件长 度,然后检测所述压缩前文件长度和压缩后文件长度是否相等。
67.若所述压缩前文件长度和压缩后文件长度相等,则确定所述目标数据 块被压缩过;
68.若所述压缩前文件长度和压缩后文件长度不相等,则确定所述目标数 据块未被压缩过。
69.步骤s150,根据所述目标数据块是否被压缩过,确定整个所述目标数 据块的长度。
70.具体地,若所述目标数据块被压缩过,则确定所述校验码字段的长度 为压缩前数据的校验码的长度加压缩后数据的校验码的长度。即所述校验 码字段中除了压缩前数据的校验码,还有压缩后数据的校验码。
71.若所述目标数据块未被压缩过,则所述校验码字段的长度为压缩前数 据的校验码的长度。即所述校验码字段中没有压缩后数据的校验码,只有 压缩前数据的校验码。
72.根据所述压缩前文件长度字段的长度、所述压缩后文件长度字段的长 度、所述校验码字段的长度及所述压缩后文件长度确定整个所述目标数据 块的长度。在本实施例中,整个所述目标数据块的长度为所述压缩前文件 长度字段的长度、所述压缩后文件长度字段的长度、所述校验码字段的长 度及所述压缩后文件长度之和。
73.步骤s160,根据整个所述目标数据块的长度及所述目标数据块的起始 位置,确定下一个数据块的起始位置并写入所述压缩索引文件。
74.在本实施例中,可以在所述目标数据块的起始位置的基础上加上整个 所述目标数据块的长度,即可得到下一个数据块的起始位置,然后就可以 将下一个数据块的起始位置追加写入所述压缩索引文件。
75.步骤s170,将所述下一个数据块作为新的目标数据块,从所述根据所 述目标数据块的起始位置,读取所述目标数据块的头文件起重复执行,直 至处理完所有数据块。
76.换句话说,在确定出新的目标数据库的起始位置后,可以从步骤s130 起重复执行后续步骤,知道所有的数据块的索引都被写入所述压缩索引文 件。
77.另外在本实施例中,5.根据权利要求1所述的方法,其特征在于,所述 方法还包括:
78.按照第一设定周期获取待处理数据,根据所述待处理数据生成数据块。
79.按照第二设定周期执行所述获取压缩索引文件的步骤及后续步骤;
80.其中,所述第二设定周期大于所述第一设定周期。
81.例如,按每5分钟获取一次待处理数据,并根据获取的待处理数据的 大小选择是否压缩后生成数据块。然后每1个小时根据已生成的数据对压 缩索引文件进行一次增量更新。
82.请参照图2,图1是本技术实施例提供的电子设备100,所述电子设备 100可以是,但不限于,服务器、个人电脑等具有数字处理能力的电子设备。 所述电子设备100包括压缩文件索引增量更新装置110、机器可读存储介质 120、处理器130、通信单元140。
83.所述机器可读存储介质120、处理器130以及通信单元140各元件相互 之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件 相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述压缩文 件索引增量更新装置110包括至少一个可以软件或固件(firmware)的形式 存储于所述机器可读存储介质120中或固化在所述电子设备100的操作系 统(operating system,os)中的软件功能模块。所述处理器130用于执行 所述机器可读存储介质120中存储的可执行模块,例如所述压缩文件索引 增量更新装置110所包括的软件功能模块及计算机程序等。
84.其中,所述机器可读存储介质120可以是,但不限于,随机存取存储 器(random access memory,ram),只读存储器(read only memory, rom),可编程只读存储器(programmable read
‑
only memory,prom), 可擦除只读存储器(erasable programmable read
‑
only memory,eprom), 电可擦除只读存储器(electric erasable programmable read
‑
only memory, eeprom)等。其中,机器可读存储介质120用于存储程序,所述处理器130在接收到执行指令后,执行所述程序。
85.所述处理器130可能是一种集成电路芯片,具有信号的处理能力。上 述的处理器可以是通用处理器,包括中央处理器(central processing unit, 简称cpu)、网络处理器(network processor,简称np)等;还可以是数字 信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。 可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通 用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
86.请参照图3,本实施例还提供一种压缩文件索引增量更新装置110,压
87.索引获取模块111,用于获取压缩索引文件,所述压缩索引文件用于指 示压缩数据文件中各数据块的位置。
88.本实施例中,所述索引获取模块111可用于执行图1所示的步骤s110,关于所述索引获取模块 111的具体描述可参对所述步骤s110的描述。
89.数据块确定模块112,用于根据所述压缩索引文件,将所述压缩数据文 件中记录的已建立索引的最后一个数据块的起始位置确定为目标数据块的 起始位置。所述目标数据块包括头文件和数据文件。
90.本实施例中,所述数据块确定模块112可用于执行图1所示的步骤s120,关于所述数据块确定 模块112的具体描述可参对所述步骤s120的描述。
91.数据块读取模块113,用于根据所述目标数据块的起始位置,读取所述 目标数据块的头文件。
92.本实施例中,所述数据块读取模块113可用于执行图1所示的步骤s130,关于所述数据块读取 模块113的具体描述可参对所述步骤s130的描述。
93.数据块检测模块114,根据所述目标数据块的头文件中记录的信息确定 所述目标数据块是否被压缩过。根据所述目标数据块是否被压缩过,确定 整个所述目标数据块的长度。
可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注 的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框 实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所 涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框 图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基 于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
106.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个 独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集 成形成一个独立的部分。
107.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使 用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申 请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储 介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服 务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步 骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read
‑
onlymemory)、随机存取存储器(ram,random access memory)、磁碟或者光 盘等各种可以存储程序代码的介质。
108.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用 来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者 暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语
ꢀ“
包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包 括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包 括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者 设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定 的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在 另外的相同要素。
109.以上所述,仅为本技术的各种实施方式,但本技术的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可 轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术 的保护范围应所述以权利要求的保护范围为准。
再多了解一些
本文用于企业家、创业者技术爱好者查询,结果仅供参考。