小文件处理方法、设备、装置及存储介质与流程

未命名 09-22 阅读:109 评论:0


1.本技术涉及大数据流式计算技术领域,具体涉及一种小文件处理方法、设备、装置及存储介质。


背景技术:

2.flink框架在计算输出流式计算结果时,会产生大量的小文件,一般来说,flink将流式计算结果写入下游文件系统时所采用的并行度越高,亦即采用的子任务数量越多,产生的小文件数量就越多,并且flink产生的小文件大小与数据流量大小和数据写入时长也有关系,而数量过多的小文件又会导致检索速度变慢,进而导致读写小文件内数据的速度变慢。
3.针对由于小文件数量和大小导致的运行负担加重的问题,现有技术中一般通过“处理过程中优化”和“文件落盘后优化”两种思路进行解决,处理过程中优化通过增大滚动策略、检查点和缩小flink并行度,从而实现减少整个分区目录的文件数,对于文件落盘后优化通过自动合并策略,是将一批小文件一次性合并成一个或少数几个大文件,也可以实现降低小文件数量,然而现有的两种解决思路由于操作的增加,都会造成延长分区目录文件对下游系统可见的时间,同时还会带来数据一致性问题。
4.因此现有技术在按时间分区业务场景下,对由于处理小文件的数量和大小,造成的分区目录文件对下游系统可见时间延长,和数据一致性方面仍有所欠缺。


技术实现要素:

5.本技术提供一种小文件处理方法、设备、装置及存储介质,用以解决现有技术中由于处理小文件的数量和大小,造成的分区目录文件对下游系统可见时间延长,和数据一致性方面仍有所欠缺的问题。
6.第一方面,本技术提供一种小文件处理方法,包括:
7.获取所述flink运行过程中的待处理事件数据和任务数量,并根据所述待处理事件数据获取事件时间字段,所述事件时间字段包含事件发生时间,所述任务数量为所述flink框架下用于处理事件数据的子任务数量;
8.根据所述事件发生时间和当前物理时间获取时间差值;
9.若所述时间差值大于迟到时间差阈值,则确认当前待处理事件数据为迟到数据,根据所述事件时间字段和所述任务数量,获取任务索引值;
10.根据所述任务索引值,获取目标子任务,通过所述目标子任务处理所述待处理事件数据,并将处理后的数据存储至所述目标子任务对应的目录文件中。
11.在一种可能的设计中,所述根据所述事件时间字段和所述任务数量,获取任务索引值,包括:提取所述事件时间字段中的事件天数和事件小时数,根据所述事件天数和所述事件小时数,获取实际小时数,根据所述实际小时数对所述任务数量取余,得到任务索引值。
12.在一种可能的设计中,所述方法还包括:若所述时间差值不大于迟到时间差阈值,确认当前待处理事件数据为正常数据,提取所述事件时间字段中的事件分钟数,根据所述事件分钟数所属的时间范围,确定目标分钟数,根据所述目标分钟数和所述任务数量,获取理想并行度,所述理想并行度用于指示在所述目标分钟数的情况下,处理所述待处理事件数据的所述目标子任务的最大编号,根据所述理想并行度,确定任务索引值。
13.在一种可能的设计中,所述根据所述目标分钟数和所述任务数量,获取理想并行度,包括:获取目标分钟数与预设分钟数的第一比值,并根据所述第一比值与任务数量的乘积,确定第一并行度,所述预设分钟数是根据时间分区边界确定的,获取所述第一并行度和所述任务数量的和值,获取预设分钟数与所述目标分钟数的差值与所述预设分钟数的第二比值,并根据所述第二比值与所述和值的一半的乘积,确定第二并行度,根据所述第一并行度和所述第二并行度的和值,得到所述理想并行度。
14.在一种可能的设计中,所述根据所述理想并行度,确定任务索引值,包括:根据所述理想并行度生成随机数,根据所述随机数,确定任务索引值。
15.在一种可能的设计中,若所述时间范围为前半个小时,则所述目标分钟数为所述事件分钟数,若所述时间范围为后半个小时,则所述目标分钟数为小时分钟数与所述事件分钟数的差值。
16.在一种可能的设计中,若所述时间范围为后半个小时,所述根据所述随机数,确定任务索引值,包括:根据所述任务数量和标定值的差值,得到所述目标子任务对应的候选索引,获取所述候选索引和所述随机数的差值,得到所述任务索引值。
17.在一种可能的设计中,所述根据所述理想并行度,确定任务索引值,包括:将所述理想并行度之前的多个数值作为索引集合,其中,所述索引集合中的n-1数值为第n个任务索引值,在检测到新的待处理数据仍为正常数据时,根据所述第n个任务索引值与标定值的和值对所述理想并行度取余,获取第n+1个任务索引值,直至未检测到新的待处理数据或者新的待处理数据非正常数据。
18.在一种可能的设计中,所述据所述待处理事件数据获取事件时间字段,包括:通过keyselector算子中设置的关键字抓取策略,在所述待处理事件数据中抓取事件时间字段。
19.第二方面,本技术提供一种小文件处理装置,包括:
20.获取模块,用于获取所述flink运行过程中的待处理事件数据和任务数量,并根据所述待处理事件数据获取事件时间字段,所述事件时间字段包含事件发生时间,所述任务数量为所述flink框架下用于处理事件数据的子任务数量;
21.第一处理模块,用于根据所述事件发生时间和当前物理时间获取时间差值;
22.第二处理模块,用于若所述时间差值大于迟到时间差阈值,则确认当前待处理事件数据为迟到数据,根据所述事件时间字段和所述任务数量,获取任务索引值;
23.执行模块,用于根据所述任务索引值,获取目标子任务,通过所述目标子任务处理所述待处理事件数据,并将处理后的数据存储至所述目标子任务对应的目录文件中。
24.第三方面,本技术提供一种小文件处理设备,包括:处理器,以及与所述处理器通信连接的存储器;
25.所述存储器存储计算机执行指令;
26.所述处理器执行所述存储器存储的计算机执行指令,以实现小文件处理方法。
27.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现小文件处理方法。
28.本技术提供的小文件处理方法、设备、装置及存储介质,通过获取flink框架运行过程中的待处理事件数据和任务数量,并基于待处理事件数据获取事件发生时间,根据事件发生时间和当前物理时间判断数据类型如正常数据或者迟到数据,并根据待处理事件数据中的事件时间字段和任务数量,获取相应的任务索引值,根据任务索引值获取目标子任务,即实现了根据不同的数据类型采用相应的目标子任务处理待处理数据,通过目标子任务处理待处理事件数据,并将处理后的数据存储至目标子任务对应的目录文件中,亦即通过采用合适数量的子任务对数据进行处理,避免了由于任务反压,造成延长分区目录文件对下游系统可见时间的情况出现,得益于flink的算子链机制,分配后的待处理数据会在同一个子任务中进行文件写入操作,而不用担心数据会在sink算子中被再次分区,造成数据不一致的问题,提升了用户的使用体验。
附图说明
29.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1为本技术实施例提供的小文件处理方法流程示意图一;
31.图2为本技术实施例提供的小文件处理方法流程示意图二;
32.图3为本技术实施例提供的小文件处理装置的结构示意图;
33.图4为本技术实施例提供的小文件处理设备的结构示意图。
具体实施方式
34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.首先对本技术所涉及的相关概念或名词进行解释:
36.apache flink:是一种开源流处理框架,其核心是一个计算框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算,flink以数据并行和流水线方式执行任意流数据程序,flink的流水线运行时系统可以执行批处理和流处理程序。
37.流式计算(stream computing):是一种高频、增量、实时的数据处理模式,主要适用于内存占用小、单次处理快、系统延迟低等性能要求较高的场景,以及需要在任务中持续计算的场景,而flink是常见的流式计算任务实现框架。
38.flink框架在计算输出流式计算结果时,会产生大量的小文件,其中,小文件的数量与flink采用的并行度有关,即采用的并行度越大,产生的小文件数量就越多,同时flink
产生的小文件大小与数据流量大小和数据写入时长也有关系,而数量过多的小文件又会导致索引占用资源过多和检索速度变慢,导致读写小文件内数据的速度变慢。
39.现有技术一般通过“处理过程中优化”和“文件落盘后优化”两种思路控制产生的小文件的数量和大小,其中处理过程中优化的思路是基于增大滚动策略和检查点频率,缩小flink将文件写入下游文件系统的并行度,从而实现减少整个分区目录的文件数,文件落盘后优化是通过文件合并程序,实现对小文件数量的减少控制,然而这两种方法在数据流量的高峰时段会造成任务反压,从而延长分区目录文件对下游系统可见的时间,因此需要一种能够针对不同数据流量的场景下,通过采用合适数量的子任务对数据进行处理,避免出现由于任务反压,造成延长分区目录文件对下游系统可见时间的情况出现,提升用户的使用体验。
40.本技术提供了一种小文件处理方法,获取flink框架运行过程中的待处理事件数据和任务数量,并基于待处理事件数据获取事件发生时间,根据事件发生时间和当前物理时间判断数据类型如正常数据或者迟到数据,根据待处理事件数据中的事件时间字段和任务数量,获取相应的任务索引值,并通过任务索引值获取目标子任务,即实现了根据不同的数据类型采用相应的目标子任务处理待处理数据,通过目标子任务处理待处理事件数据,并将处理后的数据存储至目标子任务对应的目录文件中,亦即通过采用合适数量的子任务对数据进行处理,避免了由于任务反压,造成延长分区目录文件对下游系统可见时间的情况出现,提升了用户的使用体验。
41.下面采用具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
42.实施例一
43.图1为本技术实施例提供的小文件处理方法流程示意图一。如图1所示,该方法包括:
44.s101、获取所述flink运行过程中的待处理事件数据和任务数量,并根据所述待处理事件数据获取事件时间字段,所述事件时间字段包含事件发生时间,所述任务数量为所述flink框架下用于处理事件数据的子任务数量;
45.具体来说,对通过flink框架输入的待处理事件数据进行检测,并基于输入的待处理事件数据,从中获取与待处理事件数据相关的事件时间字段,其中,通过自定义的关键字获取策略,可以从相关的事件时间字段中抽取发生事件时间字段的值作为关键值字段,并基于关键值字段获取事件发生时间。
46.s102、根据所述事件发生时间和当前物理时间获取时间差值;
47.具体来说,在通过自定义的关键字获取策略,获取事件发生时间后,获取事件发生时间与当前物理时间的差值,即时间差值,将获取的时间差值与预设的时间差阈值进行比较,并根据与时间差阈值的比较结果判断待处理数据的类型如迟到数据或者正常数据。
48.s103、若所述时间差值大于迟到时间差阈值,则确认当前待处理事件数据为迟到数据,根据所述事件时间字段和所述任务数量,获取任务索引值;
49.具体来说,在获取事件发生时间与当前物理时间的时间差值后,将时间差值与预设的时间差阈值进行比较,当获取的时间差值小于迟到时间差阈值时,确认当前的待处理
数据的数据类型为正常数据,当获取的时间差值大于迟到时间差阈值时,确认当前的待处理数据的数据类型为迟到数据,并通过提取的事件时间字段和获取的任务数量获取与迟到数据相适应的任务索引值。
50.s104、根据所述任务索引值,获取目标子任务,通过所述目标子任务处理所述待处理事件数据,并将处理后的数据存储至所述目标子任务对应的目录文件中;
51.具体来说,当时间差值与预设的时间差阈值进行比较,确认当前的待处理数据的数据类型,并基于数据类型获取相匹配的任务索引值后,根据任务索引值索引对应的目标子任务编号,并通过对应的目标子任务编号确认需要处理待处理事件数据的目标子任务,并将目标子任务处理完成后的数据存储至目录文件中,其中目录文件与子任务相对应。
52.本技术提供了一种小文件处理方法,获取flink框架运行过程中的待处理事件数据和任务数量,并基于待处理事件数据获取事件发生时间,根据事件发生时间和当前物理时间判断数据类型如正常数据或者迟到数据,根据待处理事件数据中的事件时间字段和任务数量,获取相应的任务索引值,并通过任务索引值获取目标子任务,即实现了根据不同的数据类型采用相应的目标子任务处理待处理数据,通过目标子任务处理待处理事件数据,并将处理后的数据存储至目标子任务对应的目录文件中,亦即通过采用合适数量的子任务对数据进行处理,避免了由于任务反压,造成延长分区目录文件对下游系统可见时间的情况出现,提升了用户的使用体验。
53.下面采用一个具体的实施例,对本技术的小文件处理方法进行详细说明。
54.实施例二
55.图2为本技术实施例提供的小文件处理方法流程示意图二。如图2所示,所述方法包括:
56.s201、获取所述flink运行过程中的待处理事件数据和任务数量,并根据所述待处理事件数据获取事件时间字段,所述事件时间字段包含事件发生时间;
57.其中,基于flink框架的keyselector算子中设置的关键字抓取策略,在待处理事件数据中抓取事件时间字段;
58.具体来说,对通过flink框架输入的待处理事件数据进行检测,并基于输入的待处理事件数据,通过实现keyselector算子中设置的关键字抓取策略,从待处理事件数据中抽取记录事件发生时间相关的事件时间字段,其中,将发生事件时间字段的值作为关键值字段,并基于抽取的事件时间字段获取具体的事件发生时间。
59.s202、根据所述事件发生时间和当前物理时间获取时间差值;
60.具体来说,在通过实现keyselector算子中设置的关键字抓取策略后,根据获取的事件发生时间与当前物理时间计算时间差值,将获取的时间差值与预设的时间差阈值进行比较,判断当前的待处理数据为迟到数据或者正常数据。
61.s203、若所述时间差值大于迟到时间差阈值,则确认当前待处理事件数据为迟到数据;
62.其中,迟到时间差阈值为标定经验值,可根据业务的实际情况进行调整标定;
63.具体来说,将获取的时间差值与预设的时间差阈值进行比较,当获取的时间差值大于迟到时间差阈值时,说明待处理数据的事件发生时间与当前的物理时间的间隔过远,则确认当前的待处理数据的数据类型为迟到数据,迟到数据的流量相比与同一时间分区的
其他正常数据的流量较小,因此不需要较多数量的子任务对迟到数据进行处理。
64.s204、根据所述事件时间字段和所述任务数量,获取任务索引值;
65.其中,提取事件时间字段中的事件天数和事件小时数,根据事件天数和所述事件小时数,获取实际小时数,根据实际小时数对所述任务数量取余,得到任务索引值;
66.具体来说,当获取的时间差值大于迟到时间差阈值,确认当前的待处理数据的数据类型为迟到数据后,基于事件时间字段提取事件天数和事件小时数,进一步的,根据计算调整,使得提取的事件天数不小于一,事件小时数不小于零,并根据事件天数和事件小时数,获取实际小时数,根据实际小时数对获取的任务数量进行取余,得到适用于迟到数据的任务索引值,使得所属小时分区相同的迟到数据会计算得出相同的任务索引值,通过下列公式表示:
67.n=((dayofyear-1)*24+hourofday)%numpartitions;
68.其中,dayofyear为事件天数,hourofday为事件小时数,numpartitions为任务数量,n为适用于迟到数据的任务索引值。
69.s205、若所述时间差值不大于迟到时间差阈值,确认当前待处理事件数据为正常数据,提取所述事件时间字段中的事件分钟数,根据所述事件分钟数所属的时间范围,确定目标分钟数;
70.具体来说,将获取的时间差值与预设的时间差阈值进行比较,当获取的时间差值不大于迟到时间差阈值时,说明待处理数据的事件发生时间与当前的物理时间的间隔较小,则确认当前的待处理数据的数据类型为正常数据;
71.进一步的,由于待处理数据在flink框架流式计算中的触发时间点位在时间轴上接近均匀分布,靠近小时分区边界时间点位的数据流量相较于靠近小时分区中心时间点位的数据流量更少,使得靠近小时分区边界时间点位的数据相较于靠近小时分区中心时间点位的数据,需要处理数据的子任务的数量也较少,因此进一步的将正常数据根据时间范围分为前半个小时数据和后半个小时数据。
72.s206、若所述时间范围为前半个小时,则所述目标分钟数为所述事件分钟数;
73.具体来说,当获取的时间差值不大于迟到时间差阈值,并且确认当前为正常数据的时间范围为前半个小时后,基于提取的事件时间字段,获取当前待处理数据与发生事件相关的事件分钟数,并将获取的事件分钟数作为目标分钟数。
74.s207、根据所述目标分钟数和所述任务数量,获取理想并行度;
75.其中,获取目标分钟数与预设分钟数的第一比值,其中预设分钟数为三十,并根据第一比值与任务数量的乘积,确定第一并行度,预设分钟数是根据时间分区边界确定的,获取第一并行度和任务数量的和值,获取预设分钟数与目标分钟数的差值与预设分钟数的第二比值,并根据第二比值与和值的一半的乘积,确定第二并行度,根据第一并行度和第二并行度的和值,得到理想并行度;
76.具体来说,在确认当前的待处理数据为处于前半个小时的正常数据后,根据获取的目标分钟数和任务数量,获取理想并行度,理想并行度用于指示在目标分钟数的情况下,处理待处理事件数据的目标子任务的最大编号,亦即说明了选取的目标子任务的编号范围,进一步的,理想并行度通过下列公式表示:
77.m=minofhour/30.0*numpartitions+(30-minofhour)/30.0*(minofhour/
78.30.0*numpartitions+numpartitions)/2;
79.其中,minofhour为目标分钟数,numpartitions为任务数量,m为理想并行度。
80.s208、根据所述理想并行度生成随机数,根据所述随机数,确定任务索引值;
81.具体来说,在根据目标分钟数和任务数量获取理想并行度后,在零至获取的理想并行度之间选择随机整数,即根据理想并行度生成随机数,并将选取的随机整数作为任务索引值,亦即确定任务索引值。
82.s209、若所述时间范围为后半个小时,则所述目标分钟数为小时分钟数与所述事件分钟数的差值;
83.具体来说,在确认当前的待处理数据为处于后半个小时的正常数据后,基于提取的事件时间字段,获取当前待处理数据与发生事件相关的事件分钟数和小时分钟数,其中小时分钟数为六十,根据获取的目标分钟数和任务数量,获取理想并行度,亦即根据前述s207获取理想并行度的公式计算,其中将目标分钟数更新为小时分钟数与事件分钟数的差值,并在获取理想并行度后,选择零至获取的理想并行度之间的随机整数作为随机数。
84.s210、根据所述任务数量和标定值的差值,得到所述目标子任务对应的候选索引,获取所述候选索引和所述随机数的差值,得到所述任务索引值;
85.具体来说,在获取随机数后,为了平衡下游子任务处理待处理数据的流量,防止编号较小的子任务堆积过多的待处理数据,根据随机数和任务数量获取适合于后半个小时的正常数据的任务索引值,通过下列公式表示:
86.z=numpartitions-1-rand_index;
87.其中,numpartitions为任务数量,rand_index为随机数,z为适用于后半个小时正常数据的任务索引值。
88.s211、根据所述任务索引值,获取目标子任务,通过所述目标子任务处理所述待处理事件数据,并将处理后的数据存储至所述目标子任务对应的目录文件中;
89.具体来说,当基于数据类型如迟到数据或者正常数据获取相匹配的任务索引值后,基于任务索引值索引对应的目标子任务编号,并通过sink算子内对应的目标子任务编号确认需要处理待处理事件数据的目标子任务,根据不同流量的待处理数据分配相适应的子任务,并将目标子任务处理完成后的数据存储至与子任务相对应目录文件中,亦即通过对子任务数量的控制实现对生成文件大小的控制。
90.在另一实施例中,当获取的时间差值不大于迟到时间差阈值,确认当前待处理事件数据为正常数据,并根据获取的目标分钟数和任务数量,获取理想并行度后,将理想并行度之前的多个数值作为索引集合,其中,索引集合中的n-1数值为第n个任务索引值,在检测到新的待处理数据仍为正常数据时,根据第n个任务索引值与标定值的和值对所述理想并行度取余,获取第n+1个任务索引值,直至未检测到新的待处理数据或者新的待处理数据非正常数据;
91.具体来说,在确认当前待处理事件数据为正常数据,并根据获取的目标分钟数和任务数量,获取理想并行度后,采用轮询方法顺序获取零到理想并行度之间的整数值作为任务索引值,即将理想并行度之前的多个数值作为索引集合,此时由于理想并行度计算方法固定,在不同时间点位计算出的理想并行度也因此固定,为每个时间点位记录上次任务索引值,在检测到新的待处理数据到来时,使用上次任务索引值即第n个任务索引值加一后
除以理想并行度取余的值作为新的任务索引值即第n+1个任务索引值,并根据新的任务索引值控制当前的待处理数据流向的子任务编号。
92.本技术提供了一种小文件处理方法,获取flink框架运行过程中的待处理事件数据和任务数量,并基于待处理事件数据获取事件发生时间,根据事件发生时间和当前物理时间判断数据类型如正常数据或者迟到数据,根据待处理事件数据中的事件时间字段和任务数量,获取相应的任务索引值,并通过任务索引值获取目标子任务,即实现了根据不同的数据类型采用相应的目标子任务处理待处理数据,通过目标子任务处理待处理事件数据,并将处理后的数据存储至目标子任务对应的目录文件中,亦即通过采用合适数量的子任务对数据进行处理,避免了由于任务反压,造成延长分区目录文件对下游系统可见时间的情况出现,提升了用户的使用体验。
93.本发明实施例可以根据上述方法示例对电子设备或主控设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
94.图3为本技术实施例提供的小文件处理装置的结构示意图。如图3所示,该装置300包括:
95.获取模块301,用于获取所述flink运行过程中的待处理事件数据和任务数量,并根据所述待处理事件数据获取事件时间字段,所述事件时间字段包含事件发生时间,所述任务数量为所述flink框架下用于处理事件数据的子任务数量;
96.第一处理模块302,用于根据所述事件发生时间和当前物理时间获取时间差值;
97.第二处理模块303,用于若所述时间差值大于迟到时间差阈值,则确认当前待处理事件数据为迟到数据,根据所述事件时间字段和所述任务数量,获取任务索引值;
98.执行模块304,用于根据所述任务索引值,获取目标子任务,通过所述目标子任务处理所述待处理事件数据,并将处理后的数据存储至所述目标子任务对应的目录文件中。
99.进一步的,第二处理模块303,具体用于提取事件时间字段中的事件天数和事件小时数,根据事件天数和事件小时数,获取实际小时数,根据实际小时数对任务数量取余,得到任务索引值。
100.进一步的,第二处理模块303,具体用于若时间差值不大于迟到时间差阈值,确认当前待处理事件数据为正常数据,提取事件时间字段中的事件分钟数,根据事件分钟数所属的时间范围,确定目标分钟数,根据目标分钟数和任务数量,获取理想并行度,理想并行度用于指示在目标分钟数的情况下,处理待处理事件数据的目标子任务的最大编号,根据理想并行度,确定任务索引值。
101.进一步的,第二处理模块303,具体用于获取目标分钟数与预设分钟数的第一比值,并根据第一比值与任务数量的乘积,确定第一并行度,预设分钟数是根据时间分区边界确定的,获取第一并行度和任务数量的和值,获取预设分钟数与目标分钟数的差值与预设分钟数的第二比值,并根据第二比值与和值的一半的乘积,确定第二并行度,根据第一并行度和第二并行度的和值,得到理想并行度。
102.进一步的,第二处理模块303,具体用于根据理想并行度生成随机数,根据随机数,
确定任务索引值。
103.进一步的,第二处理模块303,还用于若所述时间范围为前半个小时,则目标分钟数为事件分钟数,若时间范围为后半个小时,则目标分钟数为小时分钟数与事件分钟数的差值。
104.进一步的,第二处理模块303,具体用于根据任务数量和标定值的差值,得到目标子任务对应的候选索引,获取所述候选索引和所述随机数的差值,得到所述任务索引值。
105.进一步的,第二处理模块303,具体用于将理想并行度之前的多个数值作为索引集合,其中,索引集合中的n-1数值为第n个任务索引值,在检测到新的待处理数据仍为正常数据时,根据第n个任务索引值与标定值的和值对理想并行度取余,获取第n+1个任务索引值,直至未检测到新的待处理数据或者新的待处理数据非正常数据。
106.进一步的,第一处理模块302,具体用于通过keyselector算子中设置的关键字抓取策略,在待处理事件数据中抓取事件时间字段。
107.图4为本技术实施例提供的电子设备的结构示意图。如图4所示,该电子设备400包括:至少一个处理器401和存储器402。该电子设备400还包括通信部件403。其中,处理器401、存储器402以及通信部件403通过总线404连接。
108.在具体实现过程中,至少一个处理器401执行所述存储器402存储的计算机执行指令,使得至少一个处理器401执行如上电子设备侧所执行的小文件处理方法。
109.处理器401的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
110.在上述实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
111.存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器。
112.总线可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
113.上述针对电子设备以及主控设备所实现的功能,对本发明实施例提供的方案进行了介绍。可以理解的是,电子设备或主控设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,本发明实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的技术方案的范围。
114.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算
机执行指令,当处理器执行所述计算机执行指令时,实现如上小文件处理方法。
115.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
116.一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于电子设备或主控设备中。
117.本技术还提供了一种计算机程序产品,计算机程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
118.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
119.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

技术特征:
1.一种小文件处理方法,应用于flink框架,其特征在于,所述方法包括:获取所述flink运行过程中的待处理事件数据和任务数量,并根据所述待处理事件数据获取事件时间字段,所述事件时间字段包含事件发生时间,所述任务数量为所述flink框架下用于处理事件数据的子任务数量;根据所述事件发生时间和当前物理时间获取时间差值;若所述时间差值大于迟到时间差阈值,则确认当前待处理事件数据为迟到数据,根据所述事件时间字段和所述任务数量,获取任务索引值;根据所述任务索引值,获取目标子任务,通过所述目标子任务处理所述待处理事件数据,并将处理后的数据存储至所述目标子任务对应的目录文件中。2.根据权利要求1所述的方法,其特征在于,所述根据所述事件时间字段和所述任务数量,获取任务索引值,包括:提取所述事件时间字段中的事件天数和事件小时数;根据所述事件天数和所述事件小时数,获取实际小时数;根据所述实际小时数对所述任务数量取余,得到任务索引值。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述时间差值不大于迟到时间差阈值,确认当前待处理事件数据为正常数据;提取所述事件时间字段中的事件分钟数;根据所述事件分钟数所属的时间范围,确定目标分钟数;根据所述目标分钟数和所述任务数量,获取理想并行度,所述理想并行度用于指示在所述目标分钟数的情况下,处理所述待处理事件数据的所述目标子任务的最大编号;根据所述理想并行度,确定任务索引值。4.根据权利要求3所述的方法,其特征在于,所述根据所述目标分钟数和所述任务数量,获取理想并行度,包括:获取目标分钟数与预设分钟数的第一比值,并根据所述第一比值与任务数量的乘积,确定第一并行度,所述预设分钟数是根据时间分区边界确定的;获取所述第一并行度和所述任务数量的和值;获取预设分钟数与所述目标分钟数的差值与所述预设分钟数的第二比值,并根据所述第二比值与所述和值的一半的乘积,确定第二并行度;根据所述第一并行度和所述第二并行度的和值,得到所述理想并行度。5.根据权利要求3所述的方法,其特征在于,所述根据所述理想并行度,确定任务索引值,包括:根据所述理想并行度生成随机数;根据所述随机数,确定任务索引值。6.根据权利要求5所述的方法,其特征在于,若所述时间范围为前半个小时,则所述目标分钟数为所述事件分钟数;若所述时间范围为后半个小时,则所述目标分钟数为小时分钟数与所述事件分钟数的差值。7.根据权利要求6所述的方法,其特征在于,若所述时间范围为后半个小时,所述根据所述随机数,确定任务索引值,包括:
根据所述任务数量和标定值的差值,得到所述目标子任务对应的候选索引;获取所述候选索引和所述随机数的差值,得到所述任务索引值。8.根据权利要求3所述的方法,其特征在于,所述根据所述理想并行度,确定任务索引值,包括:将所述理想并行度之前的多个数值作为索引集合,其中,所述索引集合中的n-1数值为第n个任务索引值;在检测到新的待处理数据仍为正常数据时,根据所述第n个任务索引值与标定值的和值对所述理想并行度取余,获取第n+1个任务索引值,直至未检测到新的待处理数据或者新的待处理数据非正常数据。9.根据权利要求1所述的方法,其特征在于,所述根据所述待处理事件数据获取事件时间字段,包括:通过keyselector算子中设置的关键字抓取策略,在所述待处理事件数据中抓取事件时间字段。10.一种小文件处理装置,其特征在于,包括:获取模块,用于获取所述flink运行过程中的待处理事件数据和任务数量,并根据所述待处理事件数据获取事件时间字段,所述事件时间字段包含事件发生时间,所述任务数量为所述flink框架下用于处理事件数据的子任务数量;第一处理模块,用于根据所述事件发生时间和当前物理时间获取时间差值;第二处理模块,用于若所述时间差值大于迟到时间差阈值,则确认当前待处理事件数据为迟到数据,根据所述事件时间字段和所述任务数量,获取任务索引值;执行模块,用于根据所述任务索引值,获取目标子任务,通过所述目标子任务处理所述待处理事件数据,并将处理后的数据存储至所述目标子任务对应的目录文件中。11.一种小文件处理设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至9中任一项所述的方法。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至9任一项所述的方法。

技术总结
本申请提供一种小文件处理方法、设备、装置及存储介质,涉及大数据流式计算技术领域。该方法通过获取Flink框架运行过程中的待处理事件数据和任务数量,并基于待处理事件数据获取事件发生时间,根据事件发生时间判断数据类型为正常数据或者迟到数据,并根据数据类型获取相应的任务索引值,根据任务索引值获取目标子任务处理待处理数据,并将处理后的数据存储至目标子任务对应的目录文件中,亦即通过采用合适数量的子任务对数据进行处理,避免了由于任务反压,造成延长分区目录文件对下游系统可见时间的情况出现,以及数据不一致的问题,提升了用户的使用体验。升了用户的使用体验。升了用户的使用体验。


技术研发人员:秦晓东 张磊 葛迪 薛莹莹 周扬
受保护的技术使用者:中国联合网络通信集团有限公司
技术研发日:2023.06.21
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐