本申请涉及数据处理的技术领域,尤其涉及一种数据采样方法、装置以及计算机可读存储介质。
背景技术:
随着计算机网络的不断发展,计算机网络中所产生的数据的数据量与日俱增,当需要对计算机网络中的全量数据进行大数据统计分析时,首先,需要对该全量数据进行采样统计,进而可以通过采样统计所得到的数据来表征全量数据,例如,可以将采样统计所得到的数据的数据特征作为全量数据的数据特征。
现有技术中,当需要对某个时间段内所产生的数据进行数据采样时,通常需要预先将该时间段内的所有数据全部读取下来,然后采用一个设定的采样率再对所读取得到的该时间段内的数据进行采样。由于现有技术中,需要将该时间段内的所有数据都预先读取下来,因此,当该时间段内数据的数据量过大时,会对系统容量有较高的要求。
技术实现要素:
本申请提供了一种数据采样方法、装置以及计算机可读存储介质,可在对数据进行采样时,节省系统容量。
本申请一方面提供了一种数据采样方法,包括:
在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据;
对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,其中,合并采样数据的第三采样率是根据第一采样率和历史采样数据的第二采样率所确定的,历史采样数据为在得到目标采样数据之前对目标类型的数据采样获取到的目标类型的采样数据,第二采样率是历史采样数据相对于目标类型的数据的采样率,第三采样率是合并采样数据相对于目标类型的数据的采样率;
当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,采样数量阈值与目标类型的数据相关,自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内;
将采样数据库中的历史采样数据替换为更新历史采样数据。
其中,方法还包括:
根据自适应采样参数和第三采样率,确定第四采样率,以便于在第二时间窗口将第四采样率作为第一采样率对目标类型的数据进行采样,其中第四采样率是更新历史采样数据相对于目标类型的数据的采样率,第二时间窗口是第一时间窗口的下一个时间窗口。
其中,对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,包括:
当第一采样率大于第二采样率时,将第二采样率与第一采样率之间的比值确定为第一比值采样率;
根据第一比值采样率,对目标采样数据进行采样,得到采样后的目标采样数据;
将采样后的目标采样数据和历史采样数据,确定为合并采样数据。
其中,对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,包括:
当第一采样率小于第二采样率时,将第一采样率与第二采样率之间的比值确定为第二比值采样率;
根据第二比值采样率,对历史采样数据进行采样,得到采样后的历史采样数据;
将采样后的历史采样数据和目标采样数据,确定为合并采样数据;
当第一采样率等于第二采样率时,将目标采样数据和历史采样数据确定为合并采样数据。
其中,在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据,包括:
将历史采样数据的第二采样率确定为第一采样率;
在第一时间窗口内,采用第一采样率对目标类型的数据进行采样,得到目标采样数据;
则,对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,包括:
将目标采样数据和历史采样数据,确定为合并采样数据。
其中,当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,包括:
当合并采样数据的数量大于采样数量阈值时,获取合并采样数据对应的数据标识字符串;
将数据标识字符串映射到均匀采样空间中,得到数据标识字符串对应的哈希值;
根据第三采样率、自适应采样参数以及哈希值,对合并采样数据进行采样,得到更新历史采样数据。
其中,根据第三采样率、自适应采样参数以及哈希值,对合并采样数据进行采样,得到更新历史采样数据,包括:
根据第三采样率和自适应采样参数,得到第四采样率;
基于第四采样率和哈希值,对合并采样数据进行采样,得到更新历史采样数据;第四采样率是更新历史采样数据相对于目标类型的数据的采样率。
其中,还包括:
当合并采样数据的数量小于或者等于采样数量阈值时,将采样数据库中的历史采样数据替换为合并采样数据。
其中,第一时间窗口的上一个时间窗口为第三时间窗口;第一时间窗口和第三时间窗口具备交集时间窗口;历史采样数据为在第三时间窗口的交集时间窗口内对目标类型的数据进行采样所得到的采样数据;
在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据,包括:
在第一时间窗口的除交集时间窗口之外的时间窗口内,以第一采样率对目标类型的数据进行采样,得到目标采样数据;
则,对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,包括:
当历史采样数据的数量小于合并数量阈值,且第一采样率与第二采样率之间的比值小于比值阈值时,删除历史采样数据,将目标采样数据确定为合并采样数据。
其中,在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据,包括:
在第一时间窗口从数据流中读取目标类型的数据,对读取到的目标类型的数据进行字段解析,得到初始解析数据;
基于过滤机制对初始解析数据中的多个字段信息进行过滤,得到过滤解析数据;
基于词表关联机制在过滤解析数据中添加关联字段信息,得到采样业务数据;
以第一采样率对采样业务数据进行采样,得到目标采样数据。
其中,在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据,包括:
在第一时间窗口,通过第一线程以第一采样率对目标类型的数据进行采样,得到目标采样数据;
则,对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,包括:
通过第二线程对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据。
本申请一方面提供了一种数据采样装置,包括:
采样模块,用于在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据;
合并模块,用于对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,其中,合并采样数据的第三采样率是根据第一采样率和历史采样数据的第二采样率所确定的,历史采样数据为在得到目标采样数据之前对目标类型的数据采样获取到的目标类型的采样数据,第二采样率是历史采样数据相对于目标类型的数据的采样率,第三采样率是合并采样数据相对于目标类型的数据的采样率;
自适应采样模块,用于当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,采样数量阈值与目标类型的数据相关,自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内;
替换模块,用于将采样数据库中的历史采样数据替换为更新历史采样数据。
其中,数据采样装置,还用于:
根据自适应采样参数和第三采样率,确定第四采样率,以便于在第二时间窗口将第四采样率作为第一采样率对目标类型的数据进行采样,其中第四采样率是更新历史采样数据相对于目标类型的数据的采样率,第二时间窗口是第一时间窗口的下一个时间窗口。
其中,合并模块,包括:
第一比值确定单元,用于当第一采样率大于第二采样率时,将第二采样率与第一采样率之间的比值确定为第一比值采样率;
第一比值采样单元,用于根据第一比值采样率,对目标采样数据进行采样,得到采样后的目标采样数据;
第一合并单元,用于将采样后的目标采样数据和历史采样数据,确定为合并采样数据。
其中,合并模块,包括:
第二比值确定单元,用于当第一采样率小于第二采样率时,将第一采样率与第二采样率之间的比值确定为第二比值采样率;
第二比值采样单元,用于根据第二比值采样率,对历史采样数据进行采样,得到采样后的历史采样数据;
第二合并单元,用于将采样后的历史采样数据和目标采样数据,确定为合并采样数据;
第三合并单元,用于当第一采样率等于第二采样率时,将目标采样数据和历史采样数据确定为合并采样数据。
其中,采样模块,包括:
采样率确定单元,用于将历史采样数据的第二采样率确定为第一采样率;
窗口采样单元,用于在第一时间窗口内,采用第一采样率对目标类型的数据进行采样,得到目标采样数据;
则,合并模块,具体还用于:
将目标采样数据和历史采样数据,确定为合并采样数据。
其中,自适应采样模块,包括:
字符串获取单元,用于当合并采样数据的数量大于采样数量阈值时,获取合并采样数据对应的数据标识字符串;
映射单元,用于将数据标识字符串映射到均匀采样空间中,得到数据标识字符串对应的哈希值;
合并采样单元,用于根据第三采样率、自适应采样参数以及哈希值,对合并采样数据进行采样,得到更新历史采样数据。
其中,合并采样单元,包括:
自适应采样率子单元,用于根据第三采样率和自适应采样参数,得到第四采样率;
合并采样子单元,用于基于第四采样率和哈希值,对合并采样数据进行采样,得到更新历史采样数据;第四采样率是更新历史采样数据相对于目标类型的数据的采样率。
其中,数据采样装置,具体还用于:
当合并采样数据的数量小于或者等于采样数量阈值时,将采样数据库中的历史采样数据替换为合并采样数据。
其中,第一时间窗口的上一个时间窗口为第三时间窗口;第一时间窗口和第三时间窗口具备交集时间窗口;历史采样数据为在第三时间窗口的交集时间窗口内对目标类型的数据进行采样所得到的采样数据;
采样模块,具体还用于:
在第一时间窗口的除交集时间窗口之外的时间窗口内,以第一采样率对目标类型的数据进行采样,得到目标采样数据。
则,合并模块,具体还用于:
当历史采样数据的数量小于合并数量阈值,且第一采样率与第二采样率之间的比值小于比值阈值时,删除历史采样数据,将目标采样数据确定为合并采样数据。
其中,采样模块,包括:
数据读取单元,用于在第一时间窗口从数据流中读取目标类型的数据,对读取到的目标类型的数据进行字段解析,得到初始解析数据;
过滤单元,用于基于过滤机制对初始解析数据中的多个字段信息进行过滤,得到过滤解析数据;
关联单元,用于基于词表关联机制在过滤解析数据中添加关联字段信息,得到采样业务数据;
目标采样单元,用于以第一采样率对采样业务数据进行采样,得到目标采样数据。
其中,采样模块,具体还用于:
在第一时间窗口,通过第一线程以第一采样率对目标类型的数据进行采样,得到目标采样数据;
则,合并模块,具体还用于:
通过第二线程对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行如本申请中一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述一方面中的方法。
本申请可以在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据;对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,其中,合并采样数据的第三采样率是根据第一采样率和历史采样数据的第二采样率所确定的,历史采样数据为在得到目标采样数据之前对目标类型的数据采样获取到的目标类型的采样数据;当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,采样数量阈值与目标类型的数据相关,自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内;将采样数据库中的历史采样数据替换为更新历史采样数据。由此可见,本申请提出的方法可在合并采样数据的数量大于采样数量阈值时,对采样数据进行进一步的采样,通过此种方式,使得在采样期间或者采样完成之后,可以始终将采样数据库中所存储的采样数据的数量控制在采样数量阈值范围之内,从而节省了系统容量,并且实现了采样率的自适应调整。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种系统架构示意图;
图2a是本申请提供的一种数据采样的场景示意图;
图2b是本申请提供的一种线程采样的场景示意图;
图3是本申请提供的一种数据采样方法的流程示意图;
图4是本申请提供的一种时间窗口的场景示意图;
图5是本申请提供的一种获取合并采样数据的场景示意图;
图6是本申请提供的一种获取更新历史采样数据的流程示意图;
图7是本申请提供的另一种获取更新历史采样数据的流程示意图;
图8是本申请提供的另一种数据采样的场景示意图;
图9是本申请提供的一种数据采样装置的结构示意图;
图10是本申请提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本申请提供的一种系统架构示意图。如图1所示,该系统架构图包括设备集群400a、服务器100以及设备集群400b。其中,设备集群400a中可以包括多个终端设备,具体包括终端设备200a、终端设备200b和终端设备200c。其中,终端设备可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobileinternetdevice,mid)、可穿戴设备(例如智能手表、智能手环等)。设备集群400b中可以包括多个采样设备,该采样设备可以是服务器,因此,该多个采样设备具体包括服务器300a、服务器300b和服务器300c。其中,通过上述设备集群400a中的终端设备可以生成用于采样的数据,通过服务器100可以存储通过设备集群400a中的终端设备所生成的用于采样的数据。设备集群400b中的采样设备可以向服务器100获取到需要采样的数据,并对获取到的数据进行采样。
请一并参见图2a,是本申请提供的一种数据采样的场景示意图。如图2a所示,设备集群106a中包括多个终端设备(设备集群106a等同于上述图1中的设备集群400a),该多个终端设备均可以用于响应用户的操作指令,并生成相应的数据。例如,终端设备可以响应用户针对某个商品的下单购买的操作指令,并生成相应的订单信息,该订单信息即是终端设备根据用户的操作指令生成的相应的数据。终端设备生成的数据不仅仅可以是某一类数据(例如订单类型的数据),还可以包括多种类型的数据,例如,还可以包括某个商品被用户点击的点击记录等类型的数据。因此,可以理解的是,通过上述设备集群106a中的多个终端设备,可以获取到大量的数据,该大量的数据可以包括多种类型的数据。上述终端设备集群106a生成的数据可以是数据集合100a中的数据,数据集合100a中包括多条数据,具体包括n条数据,n的数值根据实际应用场景决定,对此不作限制,例如,n可以是1万或者1亿等。其中,数据集合100a中的1条数据可以指上述生成的1条订单信息,或者可以指某个商品被用户点击的点击记录等。可以在上述图1中的服务器100中存储数据集合100a。
本申请主要提供了一种数据采样的方法,其中,被采样的数据可以是通过上述设备集群106a中的多个终端设备所生成的数据,换句话说,此处以对数据集合100a中的n条数据进行采样为例进行本申请所提供的方法的说明。可以使用多个线程同时读取数据集合100a中的n条数据,并对数据集合100a中的n条数据进行采样。可以理解的是,该多个线程可以是在采样设备中的线程,可以提供多个采样设备来对数据集合100a中的数据进行读取和采样。其中,采样设备可以是服务器,一个采样设备中也可以包括多个线程,因此,最后需要对所有采样设备中的多个线程所得到的采样结果进行合并。具体为,首先,对于一个采样设备而言,需要对自己的多个线程所得到的采样结果进行合并,从而得到该采样设备所对应的采样结果。接着,需要对每个采样设备所对应的采样结果进行合并(可以将每个采样设备理解为是更高一层级的线程),最终得到对数据集合100a中的所有数据对应的采样结果。此处,以采用3个线程(如图2a所示,分别为线程s1、线程s2和线程s3)对数据集合100a中的数据进行读取和采样为例进行说明,该3个线程可以是同一个采样设备中的3个不同的线程,也可以是处于不同采样设备中的线程。例如,该3个线程可以是图1中设备集群400b中的采样设备中的线程。实际上,可以采用更多的线程(可以是多个采样设备中的)对数据集合100a中的数据进行读取和采样,线程数量以及采样设备数量根据实际应用场景决定,对此不作限制。
其中,线程s1、线程s2和线程s3中的每个线程中均包括多个数据池,不同数据池用于存储线程所采样得到的不同类型的数据。具体的,线程s1中包括数据池a1、数据池b1和数据池c1;线程s2中包括数据池a2、数据池b2和数据池c2;线程s3中包括数据池a3、数据池b3和数据池c3。需要进行说明的是,数据池a1、数据池a2和数据池a3用于存储从数据集合100a中采样得到的同一类型的数据。数据池b1、数据池b2和数据池b3用于存储数据集合100a中采样得到的同一类型的数据。数据池c1、数据池c2和数据池c3用于存储数据集合100a中采样得到的同一类型的数据。假设上述数据池a1、数据池a2和数据池a3用于存储第一类型的数据,数据池b1、数据池b2和数据池b3用于存储第二类型的数据,数据池c1、数据池c2和数据池c3用于存储第三类型的数据。线程s1、线程s2和线程s3均可以同时读取数据集合100a中的数据,在读取数据的过程同时对所读取到的数据进行抽样,即边读取边采样。
需要进行说明的是,上述数据集合100a中的数据可以是数据流,即在线程1、线程2和线程3读取数据集合100a中的数据,并对所读取到的数据进行采样的过程中,数据集合100a中可以不断增加通过设备集群106a所生成的数据,即本申请所提供的采样方式可以是实时的采样,换句话说,本申请中被采样的数据可以是实时生成并被多个线程实时读取并进行采样的数据。其中,数据集合100a中的每条数据均可以包括多个字段信息,每个线程(包括线程s1、线程s2和线程s3)均可以通过每条数据对应的多个字段信息对所读取到的数据进行识别分类。例如,每个线程可以将所读取到的数据分为收入类型数据、年龄类型数据点击类型数据或者订单类型数据等。此处,假设一共存在三种类型数据,即上述第一类型的数据(例如收入类型数据)、第二类型的数据(例如年龄类型数据)和第三类型的数据(例如订单类型数据)。线程1可以对读取得到的第一类型的数据进行采样,采样结果即是数据池a1中最终存留的第一类型的数据,假设为采样结果a1。线程1可以对读取得到的第二类型的数据进行采样,采样结果即是数据池b1中最终存留的第二类型的数据,假设为采样结果b1。线程1可以对读取得到的第三类型的数据进行采样,采样结果即是数据池c1中最终存留的第三类型的数据,假设为采样结果c1。线程2可以对读取得到的第一类型的数据进行采样,采样结果即是数据池a2中最终存留的第一类型的数据,假设为采样结果a2。线程2可以对读取得到的第二类型的数据进行采样,采样结果即是数据池b2中最终存留的第二类型的数据,假设为采样结果b2。线程2可以对读取得到的第三类型的数据进行采样,采样结果即是数据池c2中最终存留的第三类型的数据,假设为采样结果c2。线程3可以对读取得到的第一类型的数据进行采样,采样结果即是数据池a3中最终存留的第一类型的数据,假设为采样结果a3。线程3可以对读取得到的第二类型的数据进行采样,采样结果即是数据池b3中最终存留的第二类型的数据,假设为采样结果b3。线程3可以对读取得到的第三类型的数据进行采样,采样结果即是数据池c3中最终存留的第三类型的数据,假设为采样结果c3。因此,可以理解的是,每一类型的数据分别对应于一个采样结果,不同类型的数据之间的采样过程是相互独立的。对于上述第一类型的数据的采样结果即是对上述采样结果a1、采样结果a2和采样结果a3进行合并所得到的结果,如图2a中的采样结果101a;对于上述第二类型的数据的采样结果即是对上述采样结果b1、采样结果b2和采样结果b3进行合并所得到的结果,如图2a中的采样结果102a;对于上述第三类型的数据的采样结果即是对上述采样结果c1、采样结果c2和采样结果c3进行合并所得到的结果,如图2a中的采样结果103a。上述第一类型的数据对应的采样结果101a、第二类型的数据的采样结果102a和上述第三类型的数据的采样结果103a,可以统称为对上述数据集合100a中的数据进行采样所得到的采样结果104a。
其中,采样结果104a中包括上述采样结果101a、采样结果102a和上述采样结果103a。如图2a所示,在采样结果104a中,采样结果101a具体为采样得到了3条第一类型的数据(分别为第一类型数据1、第一类型数据2和第一类型数据3),并且该3条第一类型的数据是以1/24(即每条数据被采样留下的概率为1/24)采样率所采样得到的。采样结果102a具体为采样得到了4条第二类型的数据(分别为第二类型数据1、第二类型数据2、第二类型数据3和第二类型数据4),并且该4条第二类型的数据是以1/8(即每条数据被采样留下的概率为1/8)采样率所采样得到的。采样结果103a具体为采样得到了5条第三类型的数据(分别为第三类型数据1、第三类型数据2、第三类型数据3、第三类型数据4和第三类型数据5),并且该5条第三类型的数据是以1/4(即每条数据被采样留下的概率为1/4)采样率所采样得到的。其中,每一类型的数据所对应的采样率在采样过程中会根据对应的采样数量阈值自适应地进行调整和改变,采样率的调整过程可以参见下述图2b对应的实施例中的描述。需要进行说明的是,在实际应用场景中,上述采样结果101a、采样结果102a和采样结果103a中可以包括采样得到的更多的数据(例如10万条数据、100万条数据等),此处仅以3条、4条和5条为例进行说明。通过上述得到的采样结果101a中所包含的3条第一类型的数据的数据特征可以用于表征数据集合100a中所有第一类型的数据的数据特征;通过上述得到的采样结果102a中所包含的4条第二类型的数据的数据特征可以用于表征数据集合100a中所有第二类型的数据的数据特征;通过上述得到的采样结果103a中所包含的5条第三类型的数据的数据特征可以用于表征数据集合100a中所有第三类型的数据的数据特征。
举个例子,假设上述第一类型的数据是针对每个公民的收入情况的数据,当需要统计每个地区(此处假设包括地区1、地区2和地区3)中的公民的人均收入情况时,则可以对上述采样结果101a中的第一类型的数据进行统计计算(即计算每个地区中的公民的人均收入情况),得到地区1对应的人均收入为3000元,地区2对应的人均收入为6000元,地区3对应的人均收入为8000元。其中,对采样结果101a中的第一类型的数据进行统计计算的过程可以是单独另外一个专门用于作统计计算的设备所执行的,也可以是上述线程s1、线程s2和线程s3中任意一个线程所在的采样设备所执行的,执行统计计算的设备根据实际应用场景决定,对此不作限制。当对采样结果101a中的第一类型的数据进行统计计算,得到计算结果(即地区1对应的人均收入为3000元,地区2对应的人均收入为6000元,地区3对应的人均收入为8000元)之后,计算得到该计算结果的设备可以将该计算结果发送至用户终端105a,用户终端105a可以在终端页面中显示该计算结果,用户终端105a可以是管理员所持有的终端或者包含管理员账户的终端。其中,管理员可以是被认证过的具备数据管理权限的用户,例如,管理员可以是可以获取到公民收入状况的政府机构的高层管理人员。如图2a所示,在用户终端105a中显示的计算结果即为“收入分布的统计分析结果:地区1:人均收入3000元地区2:人均收入6000元地区3:人均收入8000元”。
由于在实际应用场景中,通常采集到的每一类型的数据的数据总量会异常庞大,因此,可以通过上述方式对每一类型的数据先进行抽样,当后续,需要对数据集合100a中的每一类型的数据所包含的数据特征进行统计计算时,可以直接计算采样得到的每一类型的数据所包含的数据特征。通过此种方式,由于减少了参与计算的数据的数量,因此可以减少对每一类型的数据的数据特征进行计算的计算量,同时降低对每一类型的数据的数据特征进行计算的计算复杂度。并且,由于对于每一类型的数据的采样过程中,保证了每条数据被采样的等概率性,因此,被采样出来的数据的数据特征可以用于表征所有数据的数据特征。
本申请所提供的方法,可以对每一类采样数据分别设定一个采样数量阈值,可以将该采样数量阈值理解为是每一个数据池的容量,因此,上述每个数据池均可以根据所对应的采样数量阈值,对所读取得到的数据进行采样,使得每个数据池中最终所采样得到的数据的数量不大于对应的采样数量阈值。具体的,对于一类采样数据所对应的多个线程中的不同数据池对应的采样数量阈值均相同。例如,设定上述第一类型的数据对应的采样数量阈值为50条,表明最终需要采样得到的第一类型的数据的数量小于或者等于50,则上述数据池a1、数据池a2和数据池a3对应的采样数量阈值均为50。之后,当对数据池a1对应的采样结果a1、数据池a2对应的采样结果a2和数据池a3对应的采样结果a3进行合并之后,最终所得到的第一类型的数据的总数量也要小于或者等于50。再例如,设定上述第二类型的数据对应的采样数量阈值为100条,表明,最终需要采样得到的第二类型的数据的数量小于或者等于100,则上述数据池b1、数据池b2和数据池b3对应的采样数量阈值均为100。之后,当对数据池b1对应的采样结果b1、数据池b2对应的采样结果b2和数据池b3对应的采样结果b3进行合并之后,最终所得到的第二类型的数据的总数量也要小于或者等于100。还例如,设定上述第三类型的数据对应的采样数量阈值为150条,表明,最终需要采样得到的第三类型的数据的数量小于或者等于150,则上述数据池c1、数据池c2和数据池c3对应的采样数量阈值均为150。之后,当对数据池c1对应的采样结果c1、数据池c2对应的采样结果c2和数据池c3对应的采样结果c3进行合并之后,最终所得到的第三类型的数据的总数量也要小于或者等于150。对于上述线程如何对每一类数据进行采样,以及不同线程之间对于同一类型的数据的采样结果之间的合并过程可以参见下述图2b对应的实施例中的描述。
请参见图2b,是本申请提供的一种线程采样的场景示意图。图2b所描述的实施例是针对一个线程如何对所读取的某一类数据进行采样的过程,换句话说,图2b所描述的实施例是针对一个线程中的一个数据池(对应于某一类数据的采样)对应的采样原理的具体说明。可以理解的是,每个数据池(不同的线程中用于存储不同类型的数据池)对应的采样原理均相同且独立。如图2b所示,数据池100g假设为某个用于对数据进行采样的采样设备中的某个线程中的任意一个数据池(例如数据池100g可以是图2a中的数据池a1、数据池a2、数据池a3、数据池b1、数据池b2、数据池b3、数据池c1、数据池c2和数据池c3中的任意一个数据池),此处假设数据池100g为上述线程s3中的数据池b3。数据池100g中可以存储线程s3从数据层中读取并采样得到的第二类型的数据,可以理解为数据层中存储了图2a中的数据集合100a。线程s3可以同时对数据层中的数据进行读取和采样,可以理解为是,线程s3不断从数据层中读取数据,并存储在数据池100g中,而数据池可以对所存储的数据进行过滤(该过滤过程即是采样过程),过滤过程中,会保留下一些数据,同时也会丢弃掉一些数据。即本申请所提供的方法,无需将所有数据全部读取下来再进行采样,而是可以边读取边采样(根据设定的采样数据阈值进行采样),即边读取边过滤,使得在系统中所存储的数据的数量被限定在采样数据阈值内,因此节省了系统容量,也提高了采样效率。
如图2b所示,假设数据池100g对应的采样数量阈值为5,最开始,线程s3会以“1”的概率从数据层读取数据,在读取的数据的数量还未超过采样数据阈值5时,线程s3可以将所读取的数据(此处均指某一类数据,因为一个数据池对应于存储一类数据)全部存储在数据池100g中。也就是,线程s3从第1条数据读取到第5条数据时,都可以将所读取到的5条数据存储在数据池100g,此时,数据池100g中所存储的数据可以是数据集合101g中的5条数据。当线程s3读取到第6条数据时,数据池100g中存储的数据可以是数据集合102g中的6条数据,。此时,由于数据池100g对应的采样数量阈值为5,而所存储的数据的数量为6超过了采样数量阈值5,因此,需要对此时所存储的6条数据进行采样(也就是过滤),通过对该6条数据进行采样,可以丢弃掉该6条数据中的部分数据。可以对该6条数据以1/2的采样率进行采样,采样之后,数据池100g中所存储的数据可以是数据集合103g中的3条数据。
接下来,在读取新数据时,都是以1的采样率读取进来(也就是未对新数据进行采样)。由于需要将读取的新数据添加至数据池100g中,也就是,需要将读取的新数据(即假设在得到数据集合103g之后,读取的新数据为数据105g)与数据池100g中已经存在的数据集合103g进行合并,因此,需要对数据之间的采样率进行统一,才能保证对每个数据是等概率进行采样的。具体的,由于数据集合103g中的数据已经进行了1/2采样率的采样,因此,也需要对数据105g以1/2的采样率进行采样。其中,对数据集合102g中的数据以及对数据105g以1/2的采样率进行采样的过程可以参见下述图3对应的实施例中对步骤s102的描述。假设,对数据105g以1/2的采样率进行采样之后,得到了数据集合104g,也就是数据池100g中此处存储的数据为数据集合104g中的数据,即在存储了数据集合103g中的数据的基础上,又存储了数据105g。此时,数据集合104g中的数据均是以1/2的采样率进行采样所得到的。
接下来,线程s3会不断读取数据,线程s3也会对所读取到的每个数据均与数据集合104g中的数据进行采样率的统一,即线程s3会对所读取到的每个数据都以1/2的采样率进行采样。此间对采样率进行统一的过程中,数据池100g中会新增一些线程s3所读取和采样到的数据,同时数据池100g中也会过滤(即丢弃)掉一些线程s3所读取和采样到的数据。当数据池100g中的数据再次超过了采样数量阈值5时,此时,数据池100g中所存储的数据可以是数据集合106g中的6个数据。数据集合106g中的6个数据均是以1/2的采样率采样得到的,线程s3可以再次对数据集合106g中的数据以1/2的采样率进行采样。通过对数据集合106g中的数据以1/2的采样率进行采样之后,可以得到数据集合107g,即此时,数据池100g中所存储的数据为数据集合107g中的3个数据,该3个数据是以1/2的采样率从数据集合106g中采样得到的。可以理解的是,数据集合107g中的数据均是以1/4的采样率进行采样得到(因为历经了2次以1/2的采样率进行采样)。
后续,线程s3依然可以不断读取新数据,同样,线程s3也会对所读取到的每个新数据与数据集合107g中的数据进行采样率的统一,也就是线程s3会对读取到的每个新数据以1/4的概率进行采样。此件统一采样率的过程中,数据池100g中也会保留下线程s3读取并采样得到的一些新数据,同时也会丢弃掉线程s3所读取到的一些新数据。当数据池100g中所存储的数据的数量再次超过采样数量阈值时(即数据池100g中所存储的数据的数量再次达到6条时),此时,数据池100g中所存储的6条数据均是以1/4的采样率采样得到,线程s3可以再次以1/2的采样率对此时数据池100g中所存储的数据进行采样。采样之后,数据池100g中所存储的数据的数量可以再次为3条,并且,可以理解的是,该3条数据是以1/8的采样率进行采样得到(因为以1/2的采样率进行采样了3次)。之后,线程s3还可以不断读取新数据,并对所读取得到的新数据循环进行上述所描述的步骤,得到采样结果。
最终,当线程s3不再读取新数据时(也就是采样完成时),数据池100g中可以存储数量不超过采样数量阈值6的数据,即得到最终的采样结果。例如,最终数据池100g中所存储的数据可以是数据集合108g中的5条数据,该5条数据对应的采样率是根据线程s3所读取到的数据池100g中所存储的那一类数据的数量以及数据池100g对应的采样数量阈值共同决定的。数据池100g对应的采样结果也就是数据集合108g中所包含的5条数据。通过与上述描述的过程相同的方式,可以得到图2a中数据池a1对应的采样结果a1、数据池b1对应的采样结果b1、数据池c1对应的采样结果c1、数据池a2对应的采样结果a2、数据池b2对应的采样结果b2、数据池c2对应的采样结果c2、数据池a3对应的采样结果a3、数据池b3对应的采样结果b3和数据池c3对应的采样结果c3。
其中,在对多个线程所得到的采样结果进行合并时,合并的原理与上述线程s3对应的采样原理相同。其中,当存在多个线程时,多个线程所得到的采样结果之间可以进行两两合并(合并的均为同一类型的数据对应的采样结果)。例如,当存在线程1、线程2、线程3和线程4时,线程1的采样结果和线程2的采样结果可以合并,得到合并结果1,线程3的采样结果和线程4的采样结果可以合并,得到合并结果2,接着,可以将合并结果1和合并结果2进行合并,即可得到上述4个线程(包括线程1、线程2、线程3和线程4)对应的总的采样结果。可选的,合并的方式还可以是,线程1的采样结果和线程2的采样结果可以合并,得到合并结果1。合并结果1可以与线程3的采样结果进行合并,得到合并结果3。合并结果3可以与线程4的采样结果进行合并,得到合并结果4。该合并结果4即是上述4个线程对应的总的采样结果。
举个例子,当线程1的采样结果与线程2的采样结果进行合并时,首先也需要对线程1的采样结果和线程2的采样结果进行采样率的统一。假设线程1的采样结果所包含的多个数据对应的采样率为1/8,线程2的采样结果所包含的多个数据对应的采样率为1/16,那么,需要再次对线程1的采样结果所包含的数据以1/2的采样率进行采样,使得可以将线程1的采样结果和线程2的采样结果对应的采样率均统一到1/16(因为1/8*1/2=1/16)。将线程1的采样结果中的多个数据对应的采样率统一到1/16之后,线程1的采样结果中的多个数据中的部分数据会被丢弃。可以将采样率被统一到1/16的线程1的采样结果称之为统一采样结果,可以将该统一采样结果直接和上述线程2的采样结果进行合并,得到合并采样结果。该合并采样结果中包括多条数据(具体包括统一采样结果所包含的数据和线程2的采样结果所包含的数据),该合并采样结果中的多条数据的采样率均为1/16。接着,可以对合并采样结果中的数据的数量进行判定,若是合并采样结果中的数据的数量超过采样数量阈值,则需要再次以1/2的采样率对合并采样结果中的数据进行采样,采样之后,即可得到线程1与线程2对应的最终的合并结果,可以理解的是,该合并结果中的数据对应的采样率均为1/32(即1/16*1/2=1/32)。若是上述合并采样结果中的数据的数量并未超过采样数量阈值,则可以直接将该合并采样结果作为线程1与线程2对应的最终的合并结果。当涉及到多个线程的采样结果之间的合并时,合并的原理与上述相同,即首先进行采样率的统一,统一之后判断此时合并的数据的数量是否超过采样数据阈值,若超过,再次以1/2的概率进行采样,得到最终的采样结果,保证最终合并得到的采样结果中的多个数据对应的采样率均相同。若未超过,则可以直接将合并的数据作为最终合并的结果。
通过本申请所提供的方法,支持在对大量数据进行读取的过程中并行对所读取的数据进行采样,即边读取边过滤,使得可以将在数据池中所存储的数据的数量控制在采样数量阈值内,节省了系统容量,提高了采样效率。同时,在对数据进行采样的过程中,可以根据数据池对应的采样数量阈值自适应地对所读取到的数据的采样率进行调整,适用于对数据流形式的数据进行采样。即在不知道需要进行读取到的数据的具体数量时,也可以根据最终需要采样得到的数据的数量,自适应地调整所读取的数据的采样率,且保证所读取到的每个数据均是以等概率的采样率进行采样得到(此处指同一类型数据均是以相同的采样率采样得到,不同类型的数据可以对应于不同的采样率),提高了采样的准确性。
请参见图3,是本申请提供的一种数据采样方法的流程示意图,如图3所示,该方法可以包括:
步骤s101,在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据;
具体的,首先需要对本申请中所涉及到的数据采样过程进行说明,本申请中需要进行采样的数据可以是任意数据,可以使用多个采样设备对数据进行读取和采样,每个采样设备中还可以包括多个线程。因此,最终的采样结果为,首先每个采样设备需要对自己的多个线程所对应的采样结果进行合并,得到每个采样设备分别对应的采样结果,其次,需要对每个采样设备对应的采样结果进行合并,得到最终的采样结果。本实施例中的执行主体可以是采样系统,该采样系统中包括多个线程(可以是多个采样设备对应的多个线程)。本申请所提供的方法可以应用在对数据流中的数据(可以理解为数据是实时生成,对数据进行采样的过程也是实时进行的)进行采样的场景中,该场景中可以对应有多个时间窗口,针对每一个时间窗口可以分别对应于有一个采样结果,某个时间窗口对应的采样结果即是对在该时间窗口中所生成的所有数据进行采样所得到的结果。
例如,假设需要对当前1小时(也可以是24小时或者设置的其他时长)前所生成的数据进行读取和采样,且每隔10分钟进行采样得到一个采样结果,则可以理解的是,上述每个时间窗口对应的窗口时间为1小时(即60分钟),相邻两个时间窗口的起始时间点相差10分钟,相邻两个时间窗口的终止时间点也相差10分钟。请参见图4,是本申请提供的一种时间窗口的场景示意图。如图4所示,可以将时间窗口的宽理解为是时间窗口对应的时间段的长度,由于时间窗口对应的时间段的长度(例如1小时)通常会长于相邻两个时间窗口的起始时间之间的时间差距(例如10分钟),因此,相邻的两个时间窗口之间通常会有交集时间窗口,该交集时间窗口即是指两个时间窗口中相同的那一个时间段所对应的时间窗口。如图4所示,假设每个时间窗口的长度均为1小时,则时间窗口100f、时间窗口101f、时间窗口102f、时间窗口103f和时间窗口104f的长度均表征时长为1小时的时间段。时间窗口100f与时间窗口101f为相邻的两个时间窗口,时间窗口100f与时间窗口101f之间具备交集时间窗口1(本申请中所描述的交集时间窗口均是指后一个时间窗口相较于前一个时间窗口的交集时间窗口)。其中,时间窗口100f为第一个时间窗口,因此,在时间窗口100f之前没有其他时间窗口。时间窗口100f的作用就是用于将当前时刻开始前1小时内产生的数据读取进来并进行采样,例如,从13:00点开始读取,则在时间窗口100f中所读取和采样的数据就是12:00点到13:00点之间产生的数据。由于产生的每个数据均对应有一个数据生成时间戳,该数据生成时间戳表征了每个数据的生成时间,因此,在每个时间窗口读取数据时,均可以根据每个数据对应的数据生成时间戳读取对应时间窗口内所产生的数据。
其中,读取每个时间窗口内的数据均可以使用多个线程(可以存在于多个采样设备中)同时并行地读取和采样。上述时间窗口101f中还包括未与时间窗口100f相交的时间窗口,即非交集时间窗口1,交集时间窗口1和非交集时间窗口1加起来就得到了时间窗口101f。可以将交集时间窗口1称之为时间窗口101f对应的交集时间窗口,将非交集时间窗口1称之为时间窗口101f对应的非交集时间窗口。同理,时间窗口101f与时间窗口102f之间也具备交集时间窗口2,时间窗口102f中也包括未与时间窗口101f相交的时间窗口,即非交集时间窗口2,交集时间窗口2和非交集时间窗口2相加就得到了时间窗口102f。可以将交集时间窗口2称之为时间窗口102f对应的交集时间窗口,将非交集时间窗口2称之为时间窗口102f对应的非交集时间窗口。时间窗口102f与时间窗口103f之间也具备交集时间窗口3,时间窗口103f中也包括未与时间窗口102f相交的时间窗口,即非交集时间窗口3,交集时间窗口3和非交集时间窗口3相加就得到了时间窗口103f。可以将交集时间窗口3称之为时间窗口103f对应的交集时间窗口,将非交集时间窗口3称之为时间窗口103f对应的非交集时间窗口。时间窗口103f与时间窗口104f之间也具备交集时间窗口4,时间窗口104f中也包括未与时间窗口103f相交的时间窗口,即非交集时间窗口4,交集时间窗口4和非交集时间窗口4相加就得到了时间窗口104f。可以将交集时间窗口4称之为时间窗口104f对应的交集时间窗口,将非交集时间窗口4称之为时间窗口104f对应的非交集时间窗口。
由于每个时间窗口对应的采样过程是串行的,上一个时间窗口得到了采样结果之后,才会执行下一个时间窗口内的数据的采样。因此,可以将上一个时间窗口所得到的采样结果中,数据生成时间戳在与下一个时间窗口的交集时间窗口内的数据直接作为下一个时间窗口的部分采样结果,因此,下一个时间窗口内只需要对与上一个时间窗口未有交集的时间窗口内(即非交集时间窗口内)所产生的新数据,而不用再对与上一个时间窗口的交集时间窗口内所产生的数据重新进行读取和采样。这可以提高在一个时间窗口内对数据进行采样的效率。举个例子,上述时间窗口100f对应的采样结果,是对当前时刻至前1小时内的所有数据进行读取和采样所得到的结果,对时间窗口100f中生成的数据进行读取和采样得到对应的采样结果之后,即可进行时间窗口101f对应的采样过程。假设时间窗口100f与时间窗口101f的起始时间点之间相差10分钟,则在进行时间窗口101f对应的采样过程时,只需要对非交集时间窗口1(为10分钟)中所产生的新数据进行读取和采样。当对非交集时间窗口1中所产生的数据进行读取和采样之后,可以直接拿取时间窗口100f对应的采样结果中数据生成时间戳在交集时间窗口1(为50分钟)中的数据,与在非交集时间窗口1中所产生的数据进行读取和采样之后所得到的采样结果进行合并,即可得到时间窗口101f对应的采样结果。
其中,由于是通过多个线程并行地对每个时间窗口内的数据进行读取和采样,因此,在执行一个时间窗口对应的采样过程时,每个线程都会对该个时间窗口中所生成的数据进行读取和采样(每个线程所读取的数据会不同,每个线程所读取和进行采样的数据的数量也不一定,由上述可知,此处读取的数据为该时间窗口与上一个时间窗口对应的未交集时间窗口内所生成的新数据),最后,该个时间窗口对应的采样结果即为将每个线程对应的采样结果进行合并,并且将与上一个时间窗口对应的交集时间窗口内所得到的采样数据进行合并得到。
其中,对于每个线程而言,对数据的读取过程和采样过程都相同,因此,此处以采样系统中的第一线程为例对如何对数据进行读取和采样进行说明,第一线程可以是存在于任意一个采样设备中的用于读取数据和对数据进行采样的线程。第一线程中所采样得到的数据可以存储在采样数据库中。并且,每个线程对不同类型的数据的读取和采样的过程也是相同的,因此,此处以第一线程对目标类型(目标类型可以是进行采样的数据中的任意一种类型)的数据进行采样为例进行说明。第一线程中的采样数据库也可以有多个,一类采样数据对应于一个采样数据库,即一个采样数据库用于存储某一类采样得到的采样数据。因此,目标类型的数据也对应有一个采样数据库,该采样数据库用于存储对目标类型的数据进行采样所得到的采样数据。下述过程中的采样数据库均以目标类型的数据所对应的采样数据库为例进行说明。
其中,可以将在获取目标采样数据之前,采样数据库中已经存在的数据称之为历史采样数据,该历史采样数据可以是第一线程在获取到目标采样数据之前对目标类型的数据经过采样所得到的采样数据,该历史采样数据可以是第一线程自己采样得到的,也可以是获取到的其他线程向其发送的。另外,采样数据库中的历史采样数据也可以为空。
其中,获取目标交易数据的过程可以是:被采样的每条数据中都可以包括多个字段信息,第一线程从数据流(可以是底层数据层中的)中读取到了原始业务数据(包括目标类型的数据等多种类型的数据)之后,首先会对原始业务数据进行字段解析,解析之后,即可得到所读取到的每条原始业务数据的多个字段信息,可以将经过字段解析之后的原始业务数据称之为初始解析数据(包括目标类型的数据对应的初始解析数据)。第一线程可以通过过滤机制对初始解析数据中的多个字段信息进行过滤,即可以预先设定过滤规则,该过滤规则表明了需要将初始解析数据中的哪些字段信息保留下来,同时需要将初始解析数据中的哪些字段信息过滤掉(即删除),该过滤操作是可选项,即可以对初始解析数据中的多个字段信息进行过滤,也可以不过滤,将初始解析数据中的多个字段信息都保留下来。可以将对初始解析数据进行字段信息过滤之后所得到的数据,称之为过滤解析数据(包括目标类型的数据对应的过滤解析数据)。进一步地,还可以通过词表关联机制在过滤解析数据中添加关联字段信息,即可以预先设定需要进行词表关联的词表,将需要进行词表关联的词表中的字段信息添加到过滤解析数据中。举个例子,当过滤解析数据中的字段信息包括个人收入的信息,那么通过词表关联,还可以在过滤解析数据中添加个人出生地等字段信息。再举个例子,当过滤解析数据中的字段信息包括个人婚姻与否的信息,那么通过词表关联,还可以在过滤解析数据中添加个人父母名称等字段信息。该词表关联操作也是可选项,即可以在过滤解析数据中添加另外的字段信息,也可以不在过滤解析数据中添加另外的字段信息。可以将进行词表关联操作之后的过滤解析数据称之为采样业务数据(包括目标类型的数据对应的采样业务数据),该采样业务数据就是第一线程对从数据层中读取得到的对原始业务数据处理完成的数据,后续,可以对该采样业务数据进行采样操作。
第一线程可以通过采样业务数据中的多个字段信息识别读取到的数据的数据类型,以识别出目标类型的采样业务数据。第一线程可以对识别出的目标类型的数据进行采样以得到目标采样数据,目标采样数据可以在第一时间窗口中实时采样得到的目标类型的采样数据,第一时间窗口可以是采样过程中的任意一个时间窗口。在第一线程中,每种类型的数据(包括目标类型的数据)都会对应有一个采样结果,该采样结果所得到的采样数据即是最终存储在每类数据分别对应的采样数据库中的数据。上述目标采样数据也可以第一线程以第一采样率(根据实际采样场景中可能不同)对读取到的数据进行采样所得到的数据。例如,当读取到新数据时,目标采样数据也可以是第一线程以1(即第一采样率为1)的采样率读取得到的新数据。
在本申请中,可以包括两种采样场景,在该两种采样场景中,目标采样数据的获取方式有所不同。上述两种采样场景中的第一种采样场景为:在这种采样场景中,主要为各个线程自己读取某个时间窗口内的目标类型的数据,并进行采样。同样,以第一线程在第一时间窗口以第一采样率对目标类型的数据(可以是从数据流中读取的原始的数据)进行采样得到目标采样数据的过程为例:第一线程会对数据层中的数据进行边读取边采样。在这个阶段中,可以引出一个t1时刻,采样数据库中的历史采样数据可以是第一线程在t1时刻之前采样得到的目标类型的采样数据。在t1时刻之后,第一线程可以继续读取新数据,可以将在t1时刻之后读取到的新数据称之为目标采样数据(此种特殊情况下,目标采样数据的第一采样率为1,即目标采样数据是以1的概率读取到的目标类型的采样数据)。由于在第一个采样场景中,第一线程会不断读取新数据,因此,对于第一线程读取新数据的每一个时刻(例如t2时刻)都存在历史采样数据和目标采样数据,历史采样数据为t2时刻之前所采样得到的目标类型的数据,目标采样数据为t2时刻之后读取到的新的目标类型的采样数据。
上述两种采样场景中的第二种采样场景为:以第一时间窗口和第三时间窗口为例进行说明,第一时间窗口和第三时间窗口为两个相邻的时间窗口,第一时间窗口与第二时间窗口的窗口大小相等。第一时间窗口和第三时间窗口具备交集时间窗口,第三时间窗口是第一时间窗口的上一个时间窗口。换句话说,第一时间窗口的起始时间点晚于第三时间窗口的起始时间点,第一时间窗口的终止时间点也晚于第三时间窗口的终止时间点。例如,若是每隔10分钟进行一次采样操作,那么,相邻两个时间窗口之间的时间差距可以是10分钟,即第一时间窗口的起始时间点与第二时间窗口的起始时间点之间的时间差可以是10分钟,第一时间窗口的终止时间点与第二时间窗口的终止时间点之间的时间差也可以是10分钟。
在该种采样场景中,采样数据库中的历史采样数据可以是在第三时间窗口期间,在第三时间窗口与第一时间窗口之间的交集时间窗口内对目标类型的数据进行实时采样所得到的采样数据,即历史采样数据为在第三时间窗口内采样得到的生成时间在第一时间窗口与第三时间窗口的交集时间窗口内的采样数据。而目标采样数据就是在第一时间窗口期间,在第一时间窗口的除了与第三时间窗口的交集时间窗口之外的时间窗口内,对目标类型的数据以第一采样率进行采样所得到的。
步骤s102,对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,其中,合并采样数据的第三采样率是根据第一采样率和历史采样数据的第二采样率所确定的,历史采样数据为在得到目标采样数据之前对目标类型的数据采样获取到的目标类型的采样数据,第二采样率是历史采样数据相对于目标类型的数据的采样率,第三采样率是合并采样数据相对于目标类型的数据的采样率;
具体的,第一线程可以对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据。具体为,当历史采样数据和目标采样数据是在上述第一种采样场景中的采样数据,那么,历史采样数据是由第一线程通过一定的采样率对读取到的目标类型的数据进行采样得到的,假设历史采样数据的采样率为第二采样率,该第二采样率为历史采样数据针对目标类型的数据的采样率,换句话说,该第二采样率为针对历史采样数据对应的原始业务数据(未被经过采样的)的采样率。目标采样数据的第一采样率为1,实际上,此种采样场景下,还未对目标采样数据进行采样,只是读取过来了。那么,第一线程需要对目标采样数据和历史采样数据进行采样率的统一,以保证对目标类型的数据都是以相同的采样率进行采样的。在该采样阶段中,第一采样率肯定会大于或者等于第二采样率(本申请,以采样率的值域为0-1为例进行说明),因此,可以得到第二采样率与第一采样率之间的比值(可以将该比值称之为第一比值采样率第一比值采样率的值域也在0到1之间,该比值是将较小的采样率作为被除数,将较大的采样率作为除数而得到的),可以通过该比值对目标采样数据进行采样,采样之后的目标采样数据就和当前的历史采样数据的采样率相同了。可以将采样后的目标采样数据和当前的历史采样数据直接合并起来,得到合并采样数据。可以将合并采样数据的采样率称之为第三采样率,因此,此时,合并采样数据的第三采样率就等于第二采样率。其中,第三采样率也是相对于目标类型的数据的采样率,即第三采样率为针对合并采样数据对应的原始业务数据(未被经过采样的)的采样率。
在本申请中,采样率均可以是1/2的n次方(下述步骤s103中有解释),例如,采样率可以是1、
其中,在上述第一种采样场景中,还可以直接获取历史采样数据的第二采样率作为第一采样率(即使第一采样率等于第二采样率),在读取新的目标类型的数据时就以该第一采样率对读取到的目标类型的数据进行采样,得到目标采样数据。因此,此时历史采样数据的采样率与目标采样数据的采样率已经保持一致了,可以直接将历史采样数据和目标采样数据进行合并,得到合并采样数据。通过此种方式可以提高对目标采样数据和历史采样数据进行合并的效率。
当历史采样数据和目标采样数据是在上述第二种采样场景中的数据:即历史采样数据是在第三时间窗口期间,在第三时间窗口与第一时间窗口的交集时间窗口内采样得到的,目标采样数据是在第一时间窗口期间,在第一时间窗口的除了与第三时间窗口的交集时间窗口之外的时间窗口内所采样得到的。同样,在第二种采样场景中,也需要对目标采样数据和历史采样数据进行合并。首先,是对目标采样数据和历史采样数据的采样率进行统一。此种情况下,第一采样率和第二采样率之间的采样率的大小要根据实际采样场景决定。当目标采样数据对应的第一采样率小于历史采样数据对应的第二采样率时,则需要将历史采样数据的采样率从第二采样率统一到第一采样率。举个例子,当第一采样率为1/16,第二采样率为1/4,表明历史采样数据是通过1/4的采样率得到的,目标采样数据是通过1/16的采样率得到的。理论上是需要对历史采样数据再以1/4(因为第一采样率1/16除以第二采样率1/4等于1/4,可以将第一采样率与第二采样率之间的比值称之为第二比值采样率)的采样率进行采样。
其中,当通过第二采样率对历史采样数据进行采样时,是将历史采样数据的数据标识字符串对应的哈希值除以4,如果余数为0,则存储历史采样数据(此处显示余数为0,因为历史采样数据是存储在采样数据库中的),如果余数不为0,则丢弃历史采样数据。由于历史采样数据是以1/4的采样率采样得到的,因此可以将历史采样数据的数据标识字符串对应的哈希值除以4的结果称之为第一采样哈希值,若采样系统在得到历史采样数据时,就存储了该第一采样哈希值,则对历史采样数据再次以1/4的采样率进行采样时,可以用该第一采样哈希值除以4,若余数为0,则存储对应的历史采样数据,若余数不为0,则丢弃对应的历史采样数据。若是采样系统中未存储上述第一采样哈希值,则可以执行步骤框100b中的步骤(即统一采样率),即使用第一采样率1/16直接对历史采样数据进行采样,也就是用历史采样数据的数据标识字符串对应的哈希值直接除以16,若余数为0,则存储对应的历史采样数据,若余数不为0,则丢弃对应的历史采样数据。由上述过程,即可得到采样后的历史采样数据。
由于历史采样数据通常会有多个,通过再次对历史采样数据进行采样,可以过滤掉历史采样数据中的部分历史采样数据。可以将采样后的历史采样数据和目标采样数据直接合并起来,得到合并采样数据。
同理,在第二种采样场景中,若第一采样率大于第二采样率,则需要将目标采样数据的采样率从第一采样率统一到第二采样率。举个例子,当第一采样率为1/4,第二采样率为1/16,则需要对目标采样数据再次进行1/4的采样。与上述一样,对目标采样数据再次进行1/4的采样的过程可以是,用目标采样数据的数据标识字符串对应的哈希值直接除以16,若余数为0,则存储对应的目标采样数据,若余数不为0,则丢弃对应的目标采样数据。若是,在使用第一采样率对目标采样数据进行采样之后,存储了目标采样数据的数据标识字符串对应的哈希值除以4的值,则再次对目标采样数据进行1/4采样时,可以使用该值再次除以4,若余数为0,则存储对应的目标采样数据,若余数不为0,则丢弃对应的目标采样数据。由于通常会有多个目标采样数据,因此,再次以1/4的采样率对目标采样数据进行采样之后,可以过滤掉部分目标采样数据。通过上述过程即可得到采样后的目标采样数据。同样,可以将采样后的目标采样数据和历史采样数据直接合并起来,得到合并采样数据。当第一采样率等于第二采样率时,可以直接将目标采样数据和合并采样数据合并起来,得到合并采样数据。
可选的,在第二种采样场景中,若历史采样数据的数量小于合并数量阈值(可以自行设置,例如设置为1万条数据),并且历史采样数据对应的第二采样率与目标采样数据对应的第一采样率之间的比值(第二采样率除以第一采样率)小于比值阈值(可以自行设置,例如1/512)时,则可以直接将历史采样数据丢齐,只保留目标采样数据。此种情况下,需要从第二时间窗口对应的非交集时间窗口处重新开始积累采样数据,将之前采样所得到的数据都丢弃掉。这种方式,可以避免当前一个时间窗口(此处为第三时间窗口)所采样得到的数据过少且采样率过低时,影响到后面的时间窗口中的采样过程,例如导致后面采样得到的采样数据的数量过少且采样率过低的问题。
通过上述过程可以知道,所得到的合并采样数据对应的第三采样率,其实就是第一采样率和第二采样率之间的最小值。
请参见图5,是本申请提供的一种获取合并采样数据的场景示意图。如图5所示,第一时间窗口101e和第三时间窗口100e之间具备交集时间窗口,第一时间窗口101e中还包括未与第三时间窗口100e相交的未交集时间窗口。通过对第三时间窗口100e中所产生的所有数据进行采样得到了采样结果102e。如图5所示,采样结果102e中包括采样数据1、采样数据2、采样数据3、采样数据4、采样数据5和采样数据6。采样结果102e中的每个采样数据均对应于一个数据生成时间戳,该数据生成时间戳表征了采样数据的生成时间。具体为,采样数据1的数据生成时间戳为数据生成时间戳1,采样数据2对应的数据生成时间戳为数据生成时间戳2,采样数据3对应的数据生成时间戳为数据生成时间戳3,采样数据4对应的数据生成时间戳为数据生成时间戳4,采样数据5对应的数据生成时间戳为数据生成时间戳5,采样数据6对应的数据生成时间戳为数据生成时间戳6。
其中,从采样结果102e中获取历史采样数据的过程可以是:可以将上述采样数据1对应的数据生成时间戳1记为t1,将上述采样数据2对应的数据生成时间戳2记为t2,将上述采样数据3对应的数据生成时间戳3记为t3,将上述采样数据4对应的数据生成时间戳4记为t4,将上述采样数据5对应的数据生成时间戳5记为t5,将上述采样数据6对应的数据生成时间戳6记为t6。如图5中的时间戳示意框104e所示,上述数据生成时间戳t4和数据生成时间戳t6在第三时间窗口100e对应的非交集时间窗口内,上述数据生成时间戳t1、数据生成时间戳t2、数据生成时间戳t3和数据生成时间戳t5在第三时间窗口100e对应的交集时间窗口内。由于,此处历史采样数据为第三窗口采样数据中数据生成时间戳在交集时间窗口内,因此,可以将上述采样数据1、采样数据2、采样数据3和采样数据5作为历史采样数据,即数据集合105e中的采样数据即为历史采样数据。并且,数据集合105e中的每个历史采样数据对应的采样率为第二采样率,即采样数据1、采样数据2、采样数据3和采样数据5对应的采样率为第二采样率。
更多的,在第一时间窗口101e对应的采样过程中,对未交集时间窗口内所产生的数据进行采样所得到的采样结果可以是采样结果103e。此时,可以将采样结果103e中的采样数据作为上述目标采样数据。如图5所示,假设此处采样结果103e中包括采样数据7、采样数据8和采样数据9。并且采样数据7、采样数据8和采样数据9对应的采样率为第一采样率。若是需要得到第一时间窗口101e内最终的采样结果,则需要对上述目标采样数据和历史采样数据进行合并。合并的时候,需要将目标采样数据和历史采样数据的采样率统一到一致。如图5中的数据集合106e所示,统一目标采样数据与历史采样数据之间的采样率之后,还剩下采样数据1、采样数据7、采样数据8和采样数据9,该采样数据1、采样数据7、采样数据8和采样数据9即为合并采样数据。并且,采样数据1、采样数据7、采样数据8和采样数据9对应的采样率为第三采样率(该第三采样率可以等于上述第一采样率),即合并采样数据的采样率为第三采样率。
可以理解的是,每个时间窗口内最终获取到的针对目标类型的数据的采样结果,可以是对多个线程在每个时间窗口内采样得到的目标类型的采样数据进行合并之后,所得到的。其中,对每个线程针对目标类型的数据的采样结果进行合并可以是由任意一个或者多个线程来执行。因此,上述在第一时间窗口以第一采样率对目标类型的数据进行采样,得到的目标交易数据,可以是由第一线程所采样得到的。第一线程可以将所采样得到的目标交易数据给到采样系统中的第二线程,由第二线程来对目标采样数据和历史采样数据进行合并,以得到合并采样数据。由此可知,在采样过程中,是由采样系统中的多个线程协同完成的采样工作,保证了采样的效率。
步骤s103,当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,采样数量阈值与目标类型的数据相关,自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内;
具体的,当检测到上述合并采样数据的数量大于采样数量阈值时,可以通过自适应采样参数再次对合并采样数据进行采样,以得到更新历史采样数据。不同类型的数据可以对应于不同的采样数量阈值。某类数据对应的采样数量阈值,表示最终采样得到的该类数据的采样数据的数量不会超过(小于或者等于)其对应的采样数量阈值。因此,目标类型的数据也对应有一个采样数量阈值。
其中,上述自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内,该自适应采样参数可以取为1/2。原因为:此处还是以目标类型的数据对应的采样过程为例进行说明。由于在对目标类型的数据进行采样的过程中,每次采样到的采样数据的数量都会被控制在目标类型对应的采样数量阈值内,因此,上述目标采样数据的数量以及历史采样数据的数量均会小于采样数量阈值。那么,假设目标类型的数据对应的采样数量阈值为m,由此可以知道,对目标交易数据和历史采样数据进行合并之后(可以是采样之后合并,也可以是直接合并),所得到的合并采样数据的数量会小于或者等于采样数量阈值的2倍(即小于2m),因为2个小于或者等于m的值相加必然会小于或者等于2m。因此,将自适应采样参数取为1/2,再通过该自适应采样参数对合并采样数据进行1/2采样,会使得采样后的合并采样数据的数量小于m。其中,以1/2的采样率再次对合并采样数据进行采样,也就是过滤掉合并采样数据中一半的采样数据,保留下合并采样数据中一半的采样数据,得到更新历史采样数据(即采样后的合并采样数据),由上可知,更新历史采样数据的数量肯定会小于采样数量阈值m。
其中,可以将更新历史采样数据的采样率称之为第四采样率,该第四采样率为更新历史采样数据相对于目标类型的数据的采样率,换句话说,该第四采样率为更新历史采样数据针对所对应的原始业务数据(未被采样过)的采样率。该第四采样率等于合并采样数据的第三采样率与自适应采样参数之间的乘积,例如,第三采样率为1/8,自适应采样参数为1/2,那么第四采样率就为1/16。可以通过第四采样率对合并采样数据进行采样得到更新历史采样数据,例如,当第四采样率为1/16,则可以用合并采样数据的数据标识字符串对应的哈希值除以16,若余数为0,则保留下对应的合并采样数据,若余数不为0,则丢弃对应的合并采样数据。
更多的,上述所得到的更新历史采样数据可以是第一时间窗口对应的采样结果,若第二时间窗口为第一时间窗口的下一个时间窗口,则可以将更新历史采样数据中在第一时间窗口与第二时间窗口之间的交集时间窗口中采样得到的采样数据,作为第二时间窗口对应的采样结果中的部分采样数据。因此,对于第二时间窗口内的采样过程而言,第二时间窗口中的历史采样数据可以是第一时间窗口中,在第一时间窗口和第二时间窗口之间的交集时间窗口内所采样得到的。第二时间窗口中的目标采样数据可以是,在第二时间窗口中除了与第一时间窗口之间的交集时间窗口之外的时间窗口内所采样得到的目标类型的采样数据。因此,在第二时间窗口中除了与第一时间窗口之间的交集时间窗口之外的时间窗口内读取新的目标类型的数据,并对读取到的目标类型的数据进行采样时,可以直接用第四采样率(第一时间窗口中的更新历史采样数据的采样率)作为第二时间窗口内的第一采样率对读取到的新的目标类型的数据进行采样,以得到目标采样数据。通过此种方式,在第二时间窗口中,由于读取采样所得到的目标采样数据与第二时间窗口中的历史采样数据的采样率相同,因此,可以将它们直接合并起来,得到第二时间窗口内的合并采样数据,提高了对第二时间窗口中目标采样数据和历史采样数据的合并效率,同时节省了系统资源,因为不用再对目标采样数据或者历史采样数据进行采样之后再合并,并且以这种方式实现了采样率的自适应调整。之后,可以通过第二时间窗口内的合并采样数据得到第二时间窗口内的更新历史采样数据,第二时间窗口内的更新历史采样数据可以是第二时间窗口对应的采样结果。
步骤s104,将采样数据库中的历史采样数据替换为更新历史采样数据;
具体的,可以将上述采样数据库中的历史采样数据替换为上述所得到的更新历史采样数据。此时采样数据库中的更新历史采样数据即为对目标采样数据和历史采样数据进行合并之后所得到的最终的采样数据。
其中,若上述合并采样数据的数量小于或者等于采样数量阈值时,则无需再次对合并采样数据进行采样,可以将采样数据库中的历史采样数据直接替换为合并采样数据。此时采样数据库中的合并采样数据即为将目标采样数据和历史采样数据进行合并所得到的最终的采样数据。因此通过本申请所提供的方法,可以通过采样数量阈值和自适应采样参数,保证将采样数据库中最终所存储的采样数据的数量控制在采样数量阈值内,且在此件过程中,采样数据的采样率也是根据对应的采样数量阈值以及自适应采样参数进行自适应变化的。
请参见图6,是本申请提供的一种获取更新历史采样数据的流程示意图。如图6所示,当目标采样数据对应的第一采样率小于历史采样数据对应的第二采样率时,可以执行步骤100b,即可以使用第一采样率对历史采样数据进行采样,得到采样之后的历史采样数据。之后,可执行步骤101b,即将采样之后的历史采样数据和目标采样数据进行合并,得到合并采样数据。当合并采样数据的总数量大于采样数量阈值时,可以执行步骤102b(容量把控,即通过采样数量阈值控制采样数据库中所存储的数据的数量),即可以通过采样率递增系数对合并采样数据进行采样。此申请中,采样率递增系数为1/2,即可以对合并采样数据再次进行1/2的采样,得到更新历史采样数据。请参见图7,是本申请提供的另一种获取更新历史采样数据的流程示意图。如图7所示,当目标采样数据对应的第一采样率大于历史采样数据对应的第二采样率时,可以执行步骤100c,即可以使用第二采样率对目标采样数据进行采样,得到采样之后的目标采样数据。之后,可执行步骤101c,即将采样之后的目标采样数据和历史采样数据进行合并,得到合并采样数据。当合并采样数据的总数量小于或者等于采样数量阈值时,可以执行步骤102b,即直接将合并采样数据作为更新历史采样数据。
通过上述过程可以知道,对于每一个时间窗口而言,其都会对应有一个采样结果,若时间窗口的窗口长度为60分钟,则每个时间窗口对应的采样结果即是对该时间窗口对应的60分钟的时间段内产生的数据进行采样所得到的结果。后一个时间窗口均可以直接使用在前一个时间窗口中获取到的交集时间窗口内所采样得到的数据,该数据加上该后一个时间窗口在对应的非交集时间窗口内所获取到的采样结果所包含的数据,即为该后一个时间窗口对应的采样结果。可以将每一个时间窗口所得到的采样结果都输出来,在用户终端上进行显示,每一个时间窗口对应于一个采样状态(通过采样结果表征),通过此种方式,可以直观地查看到随着时间窗口的推移,前后时间窗口所采样得到的采样结果的变化。输出的每一个时间窗口所对应的采样结果中可以包括多种不同类型的数据分别对应的采样结果,以及对每种数据进行采样所得到的数据的数量和对每种数据进行采样的采样率。不同类型的数据可以对应有不同的采样率和采样数量阈值,但是同一类型的数据一定是被等概率(即等采样率,也就是相同的采样率)进行采样的。
请参见图8,是本申请提供的另一种数据采样的场景示意图。如图8所示,计算层中包括多个采样设备,每个采样设备中均可以包括多个线程。该多个采样设备可以读取数据层中的原始业务数据,即可以由数据层提供用于采样的数据。数据层中可以提供若干种类型的需要被采样的数据,具体可以包括点击日志、曝光日志、效果日志、广告词表、订单词表、资源词表等类型的采样数据。上述多个采样设备可以按照每个时间窗口(包括时间窗口1、时间窗口2、时间窗口3、……、时间窗口n)的时间先后顺序,依次对数据层中的数据进行读取和采样。在输出了上一个时间窗口对应的采样结果之后,可以进行下一个时间窗口对应的采样过程。时间窗口之间可以相互有交集,例如,当时间窗口的窗口长度为60分钟(即1小时),时间窗口平移的时间为10分钟,即每隔10分钟进行一次全局的采样,则时间窗口1对应的采样时间段可以是12:00-13:00(即参与采样的数据是在12:00-13:00之间所生成的),时间窗口2对应的采样时间段可以是12:10-13:10,时间窗口3对应的采样时间段可以是12:20-13:20,以此类推。上述时间窗口1与时间窗口2之间的交集时间段即是12:10-13:00。通过对每个时间窗口内所产生的数据进行采样可以得到每个时间窗口对应的采样结果。其中,采样设备对数据层中的原始业务数据进行读取和采样的过程大致可以是:首先,采样设备可以对从数据层中所读取到的原始业务数据进行格式解析(即数据接入格式解析,也就是解析出原始业务数据中的字段信息)。接着,通过过滤器可以对所解析出的原始业务数据中的多个字段信息进行过滤,即将不需要的字段信息过滤掉(即数据过滤字段挑选,可以通过预设的过滤规则进行过滤)。接着,通过聚合函数对所读取到的数据进行预聚合,即将属于同一类型的数据归类到一起。接着,可以通过词表关联操作在解析出的原始业务数据中的多个字段信息中添加需要添加的字段信息(可以根据预设添加规则进行添加)。接着,就是进行逻辑计算,逻辑计算就是对所读取到的经过字段过滤和词表关联的数据进行采样的过程。结果输出即是输出采样所得到的采样结果,每个时间窗口对应于一个采样结果。可以将最终所得到的采样结果通过存储层进行存储。其中,存储层中用于存储数据的结构可以包括分布文件系统(例如hdfs)、日志型开源数据库(例如redis)、关系型数据库(例如mysql)以及结构化数据库(例如hbase)。
本申请可以在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据;对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,其中,合并采样数据的第三采样率是根据第一采样率和历史采样数据的第二采样率所确定的,历史采样数据为在得到目标采样数据之前对目标类型的数据采样获取到的目标类型的采样数据;当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,采样数量阈值与目标类型的数据相关,自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内;将采样数据库中的历史采样数据替换为更新历史采样数据。由此可见,本申请提出的方法可在合并采样数据的数量大于采样数量阈值时,对采样数据进行进一步的采样,通过此种方式,使得在采样期间或者采样完成之后,可以始终将采样数据库中所存储的采样数据的数量控制在采样数量阈值范围之内,从而节省了系统容量,并且实现了采样率的自适应调整。
请参见图9,是本申请提供的一种数据采样装置的结构示意图。该数据采样装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据采样装置为一个应用软件,该数据采样装置可以用于执行本申请实施例提供的方法中的相应步骤。如图9所示,该数据采样装置1可以包括:采样模块11、合并模块12、自适应采样模块13和替换模块14;
采样模块11,用于在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据;
合并模块12,用于对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,其中,合并采样数据的第三采样率是根据第一采样率和历史采样数据的第二采样率所确定的,历史采样数据为在得到目标采样数据之前对目标类型的数据采样获取到的目标类型的采样数据,第二采样率是历史采样数据相对于目标类型的数据的采样率,第三采样率是合并采样数据相对于目标类型的数据的采样率;
自适应采样模块13,用于当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,采样数量阈值与目标类型的数据相关,自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内;
替换模块14,用于将采样数据库中的历史采样数据替换为更新历史采样数据。
其中,采样模块11、合并模块12、自适应采样模块13和替换模块14的具体功能实现方式请参见图3对应的实施例中的步骤s101-步骤s104,这里不再进行赘述。
其中,数据采样装置1,还用于:
根据自适应采样参数和第三采样率,确定第四采样率,以便于在第二时间窗口将第四采样率作为第一采样率对目标类型的数据进行采样,其中第四采样率是更新历史采样数据相对于目标类型的数据的采样率,第二时间窗口是第一时间窗口的下一个时间窗口。
其中,合并模块12,包括:第一比值确定单元121、第一比值采样单元122和第一合并单元123;
第一比值确定单元121,用于当第一采样率大于第二采样率时,将第二采样率与第一采样率之间的比值确定为第一比值采样率;
第一比值采样单元122,用于根据第一比值采样率,对目标采样数据进行采样,得到采样后的目标采样数据;
第一合并单元123,用于将采样后的目标采样数据和历史采样数据,确定为合并采样数据。
其中,第一比值确定单元121、第一比值采样单元122和第一合并单元123的具体功能实现方式请参见图3对应的实施例中的步骤s101-步骤s104,这里不再进行赘述。
其中,合并模块12,包括:第二比值确定单元124、第二比值采样单元125、第二合并单元126和第三合并单元127;
第二比值确定单元124,用于当第一采样率小于第二采样率时,将第一采样率与第二采样率之间的比值确定为第二比值采样率;
第二比值采样单元125,用于根据第二比值采样率,对历史采样数据进行采样,得到采样后的历史采样数据;
第二合并单元126,用于将采样后的历史采样数据和目标采样数据,确定为合并采样数据;
第三合并单元127,用于当第一采样率等于第二采样率时,将目标采样数据和历史采样数据确定为合并采样数据。
其中,第二比值确定单元124、第二比值采样单元125、第二合并单元126和第三合并单元127的具体功能实现方式请参见图3对应的实施例中的步骤s102,这里不再进行赘述。
其中,采样模块11,包括:采样率确定单元111和窗口采样单元112;
采样率确定单元111,用于将历史采样数据的第二采样率确定为第一采样率;
窗口采样单元112,用于在第一时间窗口内,采用第一采样率对目标类型的数据进行采样,得到目标采样数据;
则,合并模块,具体还用于:
将目标采样数据和历史采样数据,确定为合并采样数据。
其中,采样率确定单元111和窗口采样单元112的具体功能实现方式请参见图3对应的实施例中的步骤s101,这里不再进行赘述。
其中,自适应采样模块13,包括:字符串获取单元131、映射单元132和合并采样单元133;
字符串获取单元131,用于当合并采样数据的数量大于采样数量阈值时,获取合并采样数据对应的数据标识字符串;
映射单元132,用于将数据标识字符串映射到均匀采样空间中,得到数据标识字符串对应的哈希值;
合并采样单元133,用于根据第三采样率、自适应采样参数以及哈希值,对合并采样数据进行采样,得到更新历史采样数据。
其中,字符串获取单元131、映射单元132和合并采样单元133的具体功能实现方式请参见图3对应的实施例中的步骤s103,这里不再进行赘述。
其中,合并采样单元133,包括:自适应采样率子单元1331和合并采样子单元1332;
自适应采样率子单元1331,用于根据第三采样率和自适应采样参数,得到第四采样率;
合并采样子单元1332,用于基于第四采样率和哈希值,对合并采样数据进行采样,得到更新历史采样数据;第四采样率是更新历史采样数据相对于目标类型的数据的采样率。
其中,自适应采样率子单元1331和合并采样子单元1332的具体功能实现方式请参见图3对应的实施例中的步骤s103,这里不再进行赘述。
其中,数据采样装置1,具体还用于:
当合并采样数据的数量小于或者等于采样数量阈值时,将采样数据库中的历史采样数据替换为合并采样数据。
其中,第一时间窗口的上一个时间窗口为第三时间窗口;第一时间窗口和第三时间窗口具备交集时间窗口;历史采样数据为在第三时间窗口的交集时间窗口内对目标类型的数据进行采样所得到的采样数据;
采样模块12,具体还用于:
在第一时间窗口的除交集时间窗口之外的时间窗口内,以第一采样率对目标类型的数据进行采样,得到目标采样数据。
则,合并模块12,具体还用于:
当历史采样数据的数量小于合并数量阈值,且第一采样率与第二采样率之间的比值小于比值阈值时,删除历史采样数据,将目标采样数据确定为合并采样数据。
其中,采样模块11,包括:数据读取单元113、过滤单元114、关联单元115和目标采样单元116;
数据读取单元113,用于在第一时间窗口从数据流中读取目标类型的数据,对读取到的目标类型的数据进行字段解析,得到初始解析数据;
过滤单元114,用于基于过滤机制对初始解析数据中的多个字段信息进行过滤,得到过滤解析数据;
关联单元115,用于基于词表关联机制在过滤解析数据中添加关联字段信息,得到采样业务数据;
目标采样单元116,用于以第一采样率对采样业务数据进行采样,得到目标采样数据。
其中,数据读取单元113、过滤单元114、关联单元115和目标采样单元116的具体功能实现方式请参见图3对应的实施例中的步骤s101,这里不再进行赘述。
其中,采样模块11,具体还用于:
在第一时间窗口,通过第一线程以第一采样率对目标类型的数据进行采样,得到目标采样数据;
则,合并模块12,具体还用于:
通过第二线程对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据。
本申请可以在第一时间窗口以第一采样率对目标类型的数据进行采样,得到目标采样数据;对目标采样数据和采样数据库中的历史采样数据进行合并,得到合并采样数据,其中,合并采样数据的第三采样率是根据第一采样率和历史采样数据的第二采样率所确定的,历史采样数据为在得到目标采样数据之前对目标类型的数据采样获取到的目标类型的采样数据;当合并采样数据的数量大于采样数量阈值时,基于自适应采样参数对合并采样数据进行采样,得到更新历史采样数据,采样数量阈值与目标类型的数据相关,自适应采样参数用于将合并采样数据的数量控制在采样数量阈值内;将采样数据库中的历史采样数据替换为更新历史采样数据。由此可见,本申请提出的方法可在合并采样数据的数量大于采样数量阈值时,对采样数据进行进一步的采样,通过此种方式,使得在采样期间或者采样完成之后,可以始终将采样数据库中所存储的采样数据的数量控制在采样数量阈值范围之内,从而节省了系统容量,并且实现了采样率的自适应调整。
请参见图10,是本申请提供的一种计算机设备的结构示意图。如图10所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(display)、键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3中所对应实施例中对数据采样方法的描述。应当理解,本申请中所描述的计算机设备1000也可执行前文图9所对应实施例中对数据采样装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的数据采样装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对数据采样方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖范围。