数据处理方法及系统的制作方法
【专利摘要】本发明公开了一种数据处理方法及系统。所述方法包括:对实时到达的原始数据进行解析;根据配置信息从解析后的原始数据中提取数据统计所需要的至少一个字段及每个字段的值;根据配置信息、至少一个字段、每个字段的值以及每个字段的值对应的采集时间按照预设的时间窗进行数据统计,得到键、键对应的键值以及键值对应的当前时间窗口值;根据键、键对应的键值以及键值对应的当前时间窗口值,在键值存储系统中对键对应的键值按照时间窗进行增量更新。通过采用本发明的技术方案,可以对实时到达的数据以时间窗口滑动形式进行增量更新,克服了现有技术中需要将有数据收集完毕一次进行全量处理,无法及时处理实时数据的缺陷,处理实时数据非常方便。
【专利说明】数据处理方法及系统
【技术领域】
[0001] 本发明涉及数据处理【技术领域】,特别涉及一种数据处理方法及系统。
【背景技术】
[0002] 在精准推荐,实时监控,实时营销,数据挖掘等众多领域中,需要对实时到达的数 据按时间窗口进行实时统计,比如点击数,曝光数实时统计或监控指标统计等等。
[0003] 现有技术中,基于时间窗的数据统计,一般基于Hive和Hadoop的数据仓库进行, 比较常见的模式一般都是先将数据集中离线传输到一个Hadoop集群的分布式文件系统 (Hadoop Distributed File System ;HDFS)中,数据按照Hive的二维表格式并按照天或 者小时等时间窗口进行分区存储。然后使用Hive提供的类结构化查询语言(Structured Query Language ;SQL)语言 Hibernate 查询语言(Hibernate Query Language ;HQL)进 行数据按时间窗的统计和分析,这个过程中Hive会将用户编写的HQL语句翻译成基于 MapReduce计算模式的程序,并提交的Hadoop计算上去运行。Hive和Hadoop结合的方案 得益于Hadoop分布式和线性扩展的特点,使得用Hive编程的统计脚本能够对海量的数据 按照时间窗进行统计分析。
[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:上述现有技术 的数据处理中,MapReduce是一种批量处理的计算方式,通过Map处理的数据先存在磁盘 中,然后再传输到Reduce阶段去处理,这种计算模式需要先将数据集中收集起来然后一次 全量处理,而无法处理实时到达的数据,从而不能做到增量的更新,处理实时数据非常不方 便,具有较大的传输时延。
【发明内容】
[0005] 为了解决现有技术的问题,本发明实施例提供了一种数据处理方法及系统。所述 技术方案如下:
[0006] -方面,提供了一种数据处理方法,所述方法包括:
[0007] 对实时到达的原始数据进行解析;
[0008] 根据配置信息从解析后的原始数据中提取数据统计所需要的至少一个字段及每 个所述字段的值;
[0009] 根据所述配置信息、至少一个字段、每个所述字段的值以及每个所述字段的值对 应的采集时间按照预设的时间窗进行数据统计,得到键、所述键对应的键值以及所述键值 对应的当前时间窗口值;
[0010] 根据所述键、所述键对应的键值以及所述键值对应的当前时间窗口值,在键值存 储系统中对所述键对应的所述键值按照时间窗进行增量更新。
[0011] 另一方面,提供了一种数据处理系统,所述系统包括:
[0012] 解析组件,用于对实时到达的原始数据进行解析;
[0013] 提取组件,用于根据配置信息从解析后的原始数据中提取数据统计所需要的至少 一个字段及每个所述字段的值;
[0014] 统计组件,用于根据所述配置信息、至少一个字段、每个所述字段的值以及每个所 述字段的值对应的采集时间按照预设的时间窗进行数据统计,得到键、所述键对应的键值 以及所述键值对应的当前时间窗口值;
[0015] 更新组件,用于根据所述键、所述键对应的键值以及所述键值对应的当前时间窗 口值,在键值存储系统中对所述键对应的所述键值按照时间窗进行增量更新。
[0016] 本发明实施例的数据处理方法及系统,通过对实时到达的原始数据进行解析;根 据配置信息从解析后的原始数据中提取数据统计所需要的至少一个字段及每个字段的值; 根据配置信息、至少一个字段、每个字段的值以及每个字段的值对应的采集时间按照预设 的时间窗进行数据统计,得到键、键对应的键值以及键值对应的当前时间窗口值;根据键、 键对应的键值以及键值对应的当前时间窗口值,在对键值存储系统中对键对应的键值按照 时间窗进行增量更新。通过采用上述技术方案,本发明实施例可以对实时到达的数据以时 间窗口滑动形式进行增量更新,克服了现有技术中需要将有数据收集完毕一次进行全量处 理,无法及时处理实时数据的缺陷,处理实时数据非常方便,没有传输时延,确保数据的准 确性和时效性。本发明实施例的技术方案,采用增量更新的方式处理实时数据,能够对海量 数据按照时间窗在秒,分钟,小时,天等粒度级别进行实时统计,可以应用在实时监控,实时 营销,数据挖掘等众多领域中,对实时到达的数据按时间窗口进行比如点击数,曝光数实时 统计,监控指标统计等实时统计,使用非常方便。
【专利附图】
【附图说明】
[0017] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0018] 图1为本发明一实施例提供的数据处理方法的流程图。
[0019] 图2为本发明实施例中Key的Value的存储结构示意图。
[0020] 图3为本发明实施例中滑动时间窗和非滑动时间窗的结构示意图。
[0021] 图4为本发明另一实施例提供的数据处理方法的流程图。
[0022] 图5为本发明实施例提供的数据处理系统的结构示意图。
[0023] 图6为本发明另一实施例提供的数据处理系统的结构图。
[0024] 图7为本发明实施例的数据处理系统的应用场景图。
【具体实施方式】
[0025] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0026] 图1为本发明一实施例提供的数据处理方法的流程图。本实施例的数据处理方法 的执行主体可以为一数据处理系统,该系统中可以包括多个组件,不同的组件分别来执行 下述各步骤。如图1所示,本实施例的数据处理方法,具体可以包括如下步骤:
[0027] 100、对实时到达的原始数据进行解析;
[0028] 本实施例的数据处理方法用于对实时达到的原始数据进行统计,这里的实时可以 根据实际数据处理的需求,可以为1天、1小时、1分钟或者1秒钟等粒度的级别。原始数据 可以文本,二进制,Protocol Buffer (简称PB)等各种形式。
[0029] 例如具体可以通过将原始数据转换为字段(Field)-值(Value)的形式,每个 Field都有一个字符串类型的名字,Field的Value的类型为字符串、整型、浮点型、布尔型 或者复合的对象类型。实际应用中,也可以采用其他数据解析形式,只要能够便于从原始数 据中提取出字段及其值即可。
[0030] 101、根据配置信息从解析后的原始数据中提取数据统计所需要的至少一个字段 及每个字段的值;
[0031] 其中配置信息为用户预先设置的,配置信息中可以说明数据统计需要的字段,例 如在某个数据处理中,需要Field名为qq和和Field名为广告Adid的字段的信息,此时对 应的,根据配置信息可以从解析后的原始数据中提取数据统计所需要的Field名为qq和和 Field名为广告Adid的字段,以及各字段的Value。
[0032] 102、根据配置信息、至少一个字段、每个字段的值以及每个字段的值对应的采集 时间按照预设的时间窗进行数据统计,得到Key、Key对应的Key值以及Key值对应的当前 时间窗口值;
[0033] 其中配置信息还会说明数据统计的策略,例如配置信息中可以说明在此数据处理 中需要对哪些字段进行维度统计,并规定统计后的Key,Key的值即为进行维度统计的字段 的值的拼接。其中每个字段的值对应的采集时间可以通过如下方式确定:在有些场景下, 原始数据采集的时候,会提取到该原始数据的采集时间,并将该采集时间携带在原始数据 中。因此,当在原始数据中携带采集时间时,在步骤101解析时,可以将采集时间携带在该 Field的Value中,也就是说此时Field的Value中不仅包括该Value值,还包括该Value 值的采集时间。此时直接从预设设定的存放规则从Value值对应的位置获取该Value值的 采集时间即可。如果Value值中未携带采集时间时,由于数据的实时性较强,每个步骤之间 没有延迟,在较为严谨的场景下,整个数据处理过程都可以达到秒级,此时可以取当前时刻 作为Value值对应的采集时间。
[0034] 本实施例中预设的时间窗也为用户预先设定的,例如用户根据需求可以设置时间 窗口大小为38、58、1〇8,甚至1分钟、1小时或者1天等等。根据预设的时间窗口的大小可 以确定当前的时间窗口值,例如为便于记载,可以以当前时间窗口的起始时间作为当前时 间窗口的值,也就是时间窗口的标识。
[0035] 103、根据Key、Key对应的Key值以及Key值对应的当前时间窗口值,在键值 (Key-Value ;K-V)存储系统中对Key对应的Key值按照时间窗进行增量更新。
[0036] 本实施例的按照时间窗进行增量更新的更新原则为将该Key的属于同一时间窗 的Key值合并,即将新统计得到的Key值以增量形式合并至K-V存储系统中该Key的该时 间窗中。如若该K-V存储系统中还未有当前时间窗口的Key值的存储,此时将当前时间窗 口值作为一个新的时间窗存储以增量形式在K-V存储系统中。也就是说,在K-V存储系统 中,每一个Key中Key值(即Value)都是按照时间窗来存储。例如图2为本发明实施例中 Key的Value的存储结构示意图。Value :可以统一使用如下结构描述:
[0037] 其中type为时间窗类型用于唯一标志改时间窗结构的存储类型,不同业务可以 指定不同的type值,例如Type可以为5分钟、5秒钟、1小时等等。compress为压缩标志 位,用于标志主体数据(bodyData)部分的数据是否被压缩,如果被压缩compress中标识压 缩的类型,比如:lzo, gzip等。metaData用于存储时间窗结构附带的一些额外元数据,来标 识bodyData中的数据,如可以为用户姓名或者点击数等等。主体数据(bodyData)则真正 存储了按时间窗口存放的数据,每个窗口数据一般对应一个timeslot的数据,一般会包含 时间窗口中的数据,对应的时间窗口值等。也就是说bodyData是真正用来存放数据的。如 图2所示是以包括4个时间窗口为例。
[0038] 本实施例的数据处理方法,通过对实时到达的原始数据进行解析;根据配置信息 从解析后的原始数据中提取数据统计所需要的至少一个字段及每个字段的值;根据配置信 息、至少一个字段、每个字段的值以及每个字段的值对应的采集时间按照预设的时间窗进 行数据统计,得到Key、Key对应的Key值以及Key值对应的当前时间窗口值;根据Key、Key 对应的Key值以及Key值对应的当前时间窗口值,在对K-V存储系统中对Key对应的Key 值按照时间窗进行增量更新。通过采用上述技术方案,本实施例可以对实时到达的数据以 时间窗口滑动形式进行增量更新,克服了现有技术中需要将有数据收集完毕一次进行全量 处理,无法及时处理实时数据的缺陷,处理实时数据非常方便,没有传输时延,确保数据的 准确性和时效性。本实施例的技术方案,采用增量更新的方式处理实时数据,能够对海量数 据按照时间窗在秒,分钟,小时,天等粒度级别进行实时统计,可以应用在实时监控,实时营 销,数据挖掘等众多领域中,对实时到达的数据按时间窗口进行比如点击数,曝光数实时统 计,监控指标统计等实时统计,使用非常方便。
[0039] 可选地,在上述图1所示实施例的技术方案的基础上,其中步骤102 "根据配置信 息、至少一个字段、每个字段的值以及每个字段的值对应的采集时间按照预设的时间窗进 行数据统计,得到Key、Key对应的Key值以及Key值对应的当前时间窗口值",具体可以包 括如下步骤:
[0040] (1)根据配置信息将至少一个字段统计为Key ;
[0041] 根据配置信息中的规则将至少一个字段统计合并为一个Key。
[0042] (2)根据每个字段的值对应的采集时间和预设的时间窗,确定Key值对应的当前 时间窗口值;
[0043] 根据预设的时间窗及其大小,以及每个字段的值对应的采集时间,可以确定每个 key值对应的当前的时间窗口值。需要说明的是,根据每个字段的值对应的采集时间和预设 的时间窗,确定的当前时间窗口值可以为一个或者多个,如两个或者三个。例如,当预设时 间窗为每分钟是一个时间窗,如米集时间在12分1秒到12分59秒对于12分钟的时间窗, 采集时间在13分1秒到13分59秒对于13分钟的时间窗。当至少一个字段中的字段值对 应的采集时间既有12分1秒到12分59秒之间的时间,也有13分1秒到13分59秒之间 的时间。那么Key值对应的当前时间窗口值包括12分钟的时间窗口值和13分钟的时间窗 口值。
[0044] (3)根据配置信息和每个字段的值对应的采集时间,将采集时间属于同一当前时 间窗口值对应的时间窗口的字段的值进行数据合并,得到Key对应的Key值。
[0045] 例如配置信息的规则要求同一 Key中,属于同一时间窗口的字段的值合并形成 Key的值。根据上述步骤确定的当前时间窗口值,可以将属于同一当前时间窗口的各个字段 的值拼接即合并,得到当前时间窗口下Key对应的Key值。例如当当前时间窗口只有一个 时,即至少一个字段的值的采集时间都在当前时间窗口中,这种情况比较简单,将至少一个 字段的所有字段的值相拼接,得到当前时间窗口下Key对应的Key值。例如当当前时间窗 口有两个时,至少一个字段的值的采集时间分布在两个时间窗口中,将采集时间在同一个 时间窗口的字段的值相拼接,这样各当前时间窗口各对应一个Key值。
[0046] 可选地,在上述图1所示实施例的技术方案的基础上,其中步骤103"根据Key、Key 对应的Key值以及Key值对应的当前时间窗口值,在对K-V存储系统中对Key对应的Key 值按照时间窗进行增量更新",具体可以包括:
[0047] (1)根据Key从K-V存储系统中获取Key对应的Key值以及Key值对应的时间窗 口值;
[0048] 由于需要进行增量的合并更新,因此,先需要获取从K-V存储系统中获取已经存 储的该Key对应的Key值以及时间窗口值,在K-V存储系统中,每个Key的值即Value采用 图2所示的数据结构存储,Key的值Value以时间窗的结构存储。一个时间窗口对应一个 Key的值,每个时间窗口值可以采用该时间窗口的初始时间值或者该时间窗口的共同特性 来标识。例如预设时间窗为每分钟是一个时间窗,如采集时间在12分1秒到12分59秒对 于12分钟的时间窗口值可以采用12分钟来标识。
[0049] (2)判断当前时间窗口值是否包括在从K-V存储系统中获取的时间窗口值中;若 包括在,执行步骤(3);若未包括在,执行步骤(4);
[0050] 当前时间窗口值是否包括在从K-V存储系统中获取的时间窗口值中,也可以理 解为判断K-V存储系统中是否已经存储有当前时间窗口值。若当前时间窗口值是包括在 从K-V存储系统中获取的时间窗口值中,即K-V存储系统中已经存储有当前时间窗口值, 此时需要在该当前时间窗口的Key值中进行Key值的增量更新。否则若未包括,确定K-V 存储系统中还未存储有当前时间窗口值,即该当前时间窗口值可能为该Key的一个新增量 的时间窗口,此时,可以在K-V存储系统中增加该时间窗口,可以理解为在图2中增加一个 Times 1 ot,并在其中存储该当前时间窗口值和该时间窗口中的Key的值。
[0051] (3)将当前时间窗口值对应的Key值与K-V存储系统中同一时间窗口下Key对应 的Key值进行合并,并更新保存在K-V存储系统中;
[0052] 即K-V存储系统中已经存储有当前时间窗口值,此时需要在该当前时间窗口的 Key值中进行Key值的增量更新,具体地,将当前时间窗口下的Key值与K-V存储系统中的 该当前时间窗口中Key值合并,并保存在K-V存储系统中,实现对K-V存储系统中该当前时 间窗口下Key值的更新。
[0053] (4)在K-V存储系统中以增量的形式存储Key对应的Key值和Key值对应的当前 时间窗口值。
[0054] 若当前时间窗口值未包括在从K-V存储系统中获取的时间窗口值,则可以确定 K-V存储系统中还未存储有当前时间窗口值,即该当前时间窗口值可能为该Key的一个新 增量的时间窗口,此时直接在K-V存储系统中以增量的形式存储Key对应的Key值和Key 值对应的当前时间窗口值。
[0055] 根据上述实施例的记载,可以将时间窗分为滑动时间窗和非滑动时间窗,其中针 对滑动时间窗的Value,每次统计更新时都需要删除超过时间范围的过期数据。其中本实施 例中的时间范围由用户确定例如:可以只保留1个小时时间范围的滑动数据,那么随着时 间的推移,更新数据的时候就会淘汰超过当前时间1小时的数据,而非滑动时间窗的Value 则不需要处理过期的数据,非滑动时间窗存储的是key值从系统启动到当前时间产生的全 部数据。为了灵活应对基于时间窗统计的计算,需要设计一种可扩展的数据结构。如图3 为本发明实施例中滑动时间窗和非滑动时间窗的结构示意图。将Key分为滑动时间窗key 和非滑动时间窗key。而Key的值Value :可以统一使用图2所示结构描述。
[0056] 可选地,在上述实施例的技术方案的基础上,在步骤100 "对实时到达的原始数据 进行解析"之前,还可以包括:从日志收集系统、中间件系统或者实时存储系统获取实时到 达的原始数据。例如可以实时地从Flume等日志收集系统,或者Kafka等消息中间件系统, 或者Redis,HBase等实时存储系统实时的获取原始数据。
[0057] 可选地,在上述实施例的技术方案的基础上,本实施例的数据处理方法还可以包 括:对K-V存储系统中的Key的值Value进行管理,例如存储时间较长的Key的值Value已 经没有实际意义,可以对其进行删除,或者对其进行时间窗合并,便于读取,即将存储时间 较长的多个时间窗的数据合并为一个时间窗,这样在读取的时候,仅读取一个时间窗的Key 值便获取到,使用非常方便。
[0058] 上述实施例中的所有可选技术方案,可以采用可以结合的方式任意组合,形成本 发明的可选技术方案,在此不再一一赘述。
[0059] 上述实施例的数据处理方法,可以对实时到达的数据以时间窗口滑动形式进行增 量更新,克服了现有技术中需要将有数据收集完毕一次进行全量处理,无法及时处理实时 数据的缺陷,处理实时数据非常方便,没有传输时延,确保数据的准确性和时效性。本实施 例的技术方案,采用增量更新的方式处理实时数据,能够对海量数据按照时间窗在秒,分 钟,小时,天等粒度级别进行实时统计,可以应用在实时监控,实时营销,数据挖掘等众多领 域中,对实时到达的数据按时间窗口进行比如点击数,曝光数实时统计,监控指标统计等实 时统计,使用非常方便。
[0060] 图4为本发明另一实施例提供的数据处理方法的流程图。如图4所示,本实施例 的数据处理方法,在上述图1及后续可选技术方案的基础上,进一步更加详细地介绍本发 明的技术方案。如图4所示,本实施例的数据处理方法,具体可以包括如下步骤:
[0061] 200、从日志收集系统、中间件系统或者实时存储系统获取实时到达的原始数据;
[0062] 例如,具体可以从从Flume等日志收集系统,或者Kafka等消息中间件系统,或者 Redis,HBase等实时存储系统实时的获取数据。
[0063] 201、将原始数据转换为Field-Value的形式;
[0064] 其中原始数据可以文本,二进制,PB等各种形式。
[0065] 202、根据配置信息从解析后的Field-Value的形式的原始数据中提取数据统计 所需要的至少一个字段Field及每个字段的值Value ;
[0066] 该步骤的执行需要依靠用户预先配置好的配置信息,该配置信息中描述了配置的 规则,如后续数据统计需要的字段及其字段的值。该步骤的至少一个字段即为根据配置信 息获取的。
[0067] 203、将至少一个字段Field统计合并为一个Key ;
[0068] 即根据配置信息规定的将哪些字段Field合并为一个Key。
[0069] 204、根据每个字段Field的值Value对应的采集时间和预设的时间窗,确定每个 字段Field的值Value值对应的当前时间窗口值;
[0070] 预设的时间窗限定了时间窗的窗口大小,根据每个字段Field的值Value对应的 采集时间,便可以确定每一个每个字段Field的值Value对应的当前时间窗口值。
[0071] 205、根据每个字段Field的值Value对应的采集时间,将采集时间属于同一当前 时间窗口值对应的时间窗口的字段Fie 1 d的值Value进行数据合并,得到Key对应的Key 值;
[0072] 该步骤中的数据合并亦即数据拼接,上述过程已经将至少一个字段Field统计为 一个Key。那么该步骤便将至少一个字段Field的值Value进行数据合并,得到Key的值与 Key对应。
[0073] 206、根据Key从K-V存储系统中获取该Key对应的Key值以及Key值对应的时间 窗口值;
[0074] 如果不是第一次存储该Key的信息,K-V存储系统中已经存储有该Key的一些时 间窗口及时间窗口中包括的Key值,其存储方式如图2所示的结构。该步骤即从K-V存储 系统中获取该Key对应的Key值以及每个Key值的时间窗口值。
[0075] 207、判断当前时间窗口值是否包括在从K-V存储系统中获取的时间窗口值中,若 包括在,执行步骤208 ;若未包括在,执行步骤209 ;
[0076] 208、将当前时间窗口值对应的Key值与K-V存储系统中同一时间窗口下Key对应 的Key值进行合并,并更新保存在K-V存储系统中;
[0077] 该步骤通过将当前时间窗口值对应的Key值与K-V存储系统中同一时间窗口下 Key对应的Key值进行合并,随着时间的推移,如图2所示的Value结构中,时间窗口虽然没 有新增加,但当前时间窗口内的Key值随着时间滑动增加,实现以时间窗口滑动形式进行 Key值的增量更新。
[0078] 209、在K-V存储系统中以增量的形式存储Key对应的Key值和Key值对应的当前 时间窗口值。
[0079] 该步骤通过以增量的形式存储Key对应的Key值和Key值对应的当前时间窗口 值,随着时间的推移,在如图2所示的Value结构中,增加新的时间窗口,实现以时间窗口滑 动形式进行Key值的增量更新。
[0080] 上述实施例的数据处理方法,可以对实时到达的数据以时间窗口滑动形式进行增 量更新,克服了现有技术中需要将有数据收集完毕一次进行全量处理,无法及时处理实时 数据的缺陷,处理实时数据非常方便,没有传输时延,确保数据的准确性和时效性。本实施 例的技术方案,采用增量更新的方式处理实时数据,能够对海量数据按照时间窗在秒,分 钟,小时,天等粒度级别进行实时统计,可以应用在实时监控,实时营销,数据挖掘等众多领 域中,对实时到达的数据按时间窗口进行比如点击数,曝光数实时统计,监控指标统计等实 时统计,使用非常方便。
[0081] 图5为本发明实施例提供的数据处理系统的结构示意图。如图5所示,本实施例 的数据处理系统,具体可以包括:解析组件10、提取组件11、统计组件12和更新组件13。
[0082] 其中解析组件10用于对实时到达的原始数据进行解析;提取组件11与解析组件 10连接,提取组件11用于根据配置信息从解析组件10解析后的原始数据中提取数据统计 所需要的至少一个字段及每个字段的值;统计组件12与提取组件11连接,统计组件12用 于根据配置信息、提取组件11提取的至少一个字段、每个字段的值以及每个字段的值对应 的采集时间按照预设的时间窗进行数据统计,得到Key、Key对应的Key值以及Key值对应 的当前时间窗口值;更新组件13与统计组件12连接,更新组建13用于根据统计组件12统 计得到的Key、Key对应的Key值以及Key值对应的当前时间窗口值,在K-V存储系统中对 Key对应的Key值按照时间窗进行增量更新。
[0083] 本实施例的数据处理系统,通过采用上述组件实现数据处理与上述相关方式实施 例的实现机制相同,详细可以参考上述实施例的记载,在此不再赘述。
[0084] 本实施例的数据处理系统,通过采用上述组件实现对实时到达的原始数据进行解 析;根据配置信息从解析后的原始数据中提取数据统计所需要的至少一个字段及每个字段 的值;根据配置信息、至少一个字段、每个字段的值以及每个字段的值对应的采集时间按照 预设的时间窗进行数据统计,得到Key、Key对应的Key值以及Key值对应的当前时间窗口 值;根据Key、Key对应的Key值以及Key值对应的当前时间窗口值,在对K-V存储系统中 对Key对应的Key值按照时间窗进行增量更新。通过采用上述技术方案,本实施例可以对 实时到达的数据以时间窗口滑动形式进行增量更新,克服了现有技术中需要将有数据收集 完毕一次进行全量处理,无法及时处理实时数据的缺陷,处理实时数据非常方便,没有传输 时延,确保数据的准确性和时效性。本实施例的技术方案,采用增量更新的方式处理实时数 据,能够对海量数据按照时间窗在秒,分钟,小时,天等粒度级别进行实时统计,可以应用在 实时监控,实时营销,数据挖掘等众多领域中,对实时到达的数据按时间窗口进行比如点击 数,曝光数实时统计,监控指标统计等实时统计,使用非常方便。
[0085] 图6为本发明另一实施例提供的数据处理系统的结构图。如图6所示,本实施例 的数据处理系统,在上述图5所示实施例的技术方案的基础上,进一步包括如下技术方案。
[0086] 本实施例的数据处理系统中,解析组件10具体用于将原始数据转换为字段-值的 形式,字段的值的类型为字符串、整型、浮点型、布尔型或者复合的对象类型。
[0087] 可选地,本实施例的数据处理系统中,统计组件12具体用于根据配置信息将提取 组件11提取的至少一个字段统计为Key ;根据提取组件11提取的每个字段的值对应的采 集时间和预设的时间窗,确定Key值对应的当前时间窗口值;根据配置信息和提取组件11 提取的每个字段的值对应的采集时间,将采集时间属于同一当前时间窗口值对应的时间窗 口的字段的值进行数据合并,得到Key对应的Key值。
[0088] 可选地,本实施例的数据处理系统中,更新组件13具体用于根据Key从K-V存储 系统中获取统计组件12统计的Key对应的Key值以及Key值对应的时间窗口值;判断当前 时间窗口值是否包括在从K-V存储系统中获取的时间窗口值中;若包括在,将当前时间窗 口值对应的Key值与K-V存储系统中同一时间窗口下Key对应的Key值进行合并,并更新 保存在K-V存储系统中;若未包括在,在K-V存储系统中以增量的形式存储Key对应的Key 值和Key值对应的当前时间窗口值。
[0089] 如图5所示,本实施例的数据处理系统中还包括获取组件14。该获取组件14与解 析组件10连接,获取组件14用于从日志收集系统、中间件系统或者实时存储系统获取实时 到达的原始数据。解析组件10用于从获取组件14获取实时到达的原始数据。
[0090] 例如获取组件14可以连接Flume等日志收集系统,或者Kafka等消息中间件系 统,或者Redis,HBase等实时存储系统用于实时的接收原始数据。
[0091] 可选地,本实施例的数据存储系统中还可以包括管理组件,用于对Κ-ν存储系统 中的Key的值Value进行管理,例如存储时间较长的Key的值Value已经没有实际意义,可 以对其进行删除,或者对其进行时间窗合并,便于读取,即将存储时间较长的多个时间窗的 数据合并为一个时间窗,这样在读取的时候,仅读取一个时间窗的Key值便获取到,使用非 常方便。
[0092] 需要说明的是,上述实施例的数据处理系统中是以包括上述获取组件、解析组件, 提取组件、统计组件和更新组件各一个为例,实际应用中,为了能够应对海量的实时数据, 获取组件14、解析组件10,提取组件11、统计组件12和更新组件13分别包括线性扩展的多 个,即各组件使用的物理机器数,进程数,线程数都是可以进行分布式线性扩展的,组件与 组件之间通过网络进行数据交换,可以做到灵活应对实时数据上百亿级别的海量数据。
[0093] 其中提取组件11统计组件12和更新组件13通过所处理的字段以及根据字段统 计后得到的Key关联起来,这样可以保证同一个字段或者同一个Key始终由相同的组件处 理,例如前一次处理完的数据可以放入组件的本地内存缓存,在下次相同值的字段field 或者Key到达时,直接从缓存中读取,提高数据处理效率。
[0094] 本实施例中的所有可选技术方案,可以采用可以结合的方式任意组合,形成本发 明的可选技术方案,在此不再一一赘述。
[0095] 本实施例的数据处理系统,通过采用上述组件实现数据处理与上述相关方式实施 例的实现机制相同,详细可以参考上述实施例的记载,在此不再赘述。
[0096] 本实施例的数据处理系统,通过采用上述组件可以对实时到达的数据以时间窗口 滑动形式进行增量更新,克服了现有技术中需要将有数据收集完毕一次进行全量处理,无 法及时处理实时数据的缺陷,处理实时数据非常方便,没有传输时延,确保数据的准确性和 时效性。本实施例的技术方案,采用增量更新的方式处理实时数据,能够对海量数据按照时 间窗在秒,分钟,小时,天等粒度级别进行实时统计,可以应用在实时监控,实时营销,数据 挖掘等众多领域中,对实时到达的数据按时间窗口进行比如点击数,曝光数实时统计,监控 指标统计等实时统计,使用非常方便。
[0097] 图7为本发明实施例的数据处理系统的应用场景图。如图7所示,本实施例的数 据处理系统,通过采用上述图5或者图所示的数据处理系统进行数据处理的整个过程在应 用层面可以分为数据解析,数据关联和统计Key的生成,按时间窗增量合并更新三层架构, 并借用基于内存的K-V存储系统做到实时的数据存取。本实施例中基于内存的K-V存储系 统对上述实施例中的K-V存储系统进一步进行限定,提升K-V存储系统的性能。其中数据 解析实现上述图5和图6所示实施例中解析组件10的和提取组件11功能,将原始数据转 换为Field-Value值的形式,而且还从解析后的数据源中提取需要的字段Field以及相应 的值Value,提取出来后,不落地直接通过网络随机分发给统计组件11进行数据关联,并根 据要统计的字段拼凑出要统计的Key,然后直接通过网络按照Key分发给更新组件12,使其 按时间窗进行合并更新的计算组件,并通过基于内存的K-V存储系统进行数据的更新和存 储。
[0098] 整个技术方案,为了对实时到达的数据能够做到在秒级别的时间窗口内统计,数 据从解析成字段表示形式,到传输给数据关联组件进行统计key的生成,再到传输给统计 模块进行合并更新,再到结果更新和存储到基于内存的κ-v存储系统中,整个过程是数据 是完全不落地的,全部通过网络和内存交互。
[0099] 为了能够应对海量的实时数据,整个方案中,解析组件,统计组件,更新组件使用 的物理机器数,进程数,线程数都是可以进行分布式线性扩展的,组件与组件之间通过网络 进行数据交换,可以做到灵活应对实时数据上百亿级别的海量数据。
[0100] 本实施例的数据处理系统,通过采用上述组件可以对实时到达的数据以时间窗口 滑动形式进行增量更新,克服了现有技术中需要将有数据收集完毕一次进行全量处理,无 法及时处理实时数据的缺陷,处理实时数据非常方便,没有传输时延,确保数据的准确性和 时效性。本实施例的技术方案,采用增量更新的方式处理实时数据,能够对海量数据按照时 间窗在秒,分钟,小时,天等粒度级别进行实时统计,可以应用在实时监控,实时营销,数据 挖掘等众多领域中,对实时到达的数据按时间窗口进行比如点击数,曝光数实时统计,监控 指标统计等实时统计,使用非常方便。
[0101] 由上所述,本发明实施例的技术方案能够给各种依赖实时数据的系统带来非常有 益的效果,例如:
[0102] a.通过实际的广告业务验证了此方法通过提供秒级实时的数据,有效提的提高了 在广告推荐中算法推荐的精准度。
[0103] b.通过提供秒级实时的监控数据,能够更快速及时的发现系统的问题,减小或避 免损失。
[0104] c.通过实时反馈tips营销效果数据,进行策略的实时调整,极大的提高了 tips投 放的精准度,提升tips弹窗的用户体验。
[0105] d.通过提供实时的特征数据,在数据挖掘,机器学习领域,能够有效的提高模型预 测的准确性。
[0106] 需要说明的是:上述实施例提供的数据处理系统在数据处理时,仅以上述各功能 组件的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能组 件完成,即将系统的内部结构划分成不同的功能组件,以完成以上描述的全部或者部分功 能。另外,上述实施例提供的数据处理系统与数据处理方法实施例属于同一构思,其具体实 现过程详见方法实施例,这里不再赘述。
[0107] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0108] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件 来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读 存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0109] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1. 一种数据处理方法,其特征在于,所述方法包括: 对实时到达的原始数据进行解析; 根据配置信息从解析后的原始数据中提取数据统计所需要的至少一个字段及每个所 述字段的值; 根据所述配置信息、至少一个字段、每个所述字段的值以及每个所述字段的值对应的 采集时间按照预设的时间窗进行数据统计,得到键、所述键对应的键值以及所述键值对应 的当前时间窗口值; 根据所述键、所述键对应的键值以及所述键值对应的当前时间窗口值,在键值存储系 统中对所述键对应的所述键值按照时间窗进行增量更新。
2. 根据权利要求1所述的方法,其特征在于,所述对实时到达的原始数据进行解析,包 括:将所述原始数据转换为字段-值的形式,所述字段的值的类型为字符串、整型、浮点型、 布尔型或者复合的对象类型。
3. 根据权利要求1所述的方法,其特征在于,根据所述配置信息、至少一个字段、每个 所述字段的值以及每个所述字段的值对应的采集时间按照预设的时间窗进行数据统计,得 到键、所述键对应的键值以及所述键值对应的当前时间窗口值,包括 : 根据所述配置信息将所述至少一个字段统计为所述键; 根据每个所述字段的值对应的采集时间和所述预设的时间窗,确定所述键值对应的当 前时间窗口值; 根据所述配置信息和每个所述字段的值对应的采集时间,将采集时间属于同一所述 当前时间窗口值对应的时间窗口的所述字段的值进行数据合并,得到所述键对应的所述键 值。
4. 根据权利要求1所述的方法,其特征在于,所述根据所述键、所述键对应的键值以及 所述键值对应的当前时间窗口值,在对键值存储系统中对所述键对应的所述键值按照时间 窗进行增量更新,包括: 所述根据所述键从所述键值存储系统中获取所述键对应的键值以及所述键值对应的 时间窗口值; 判断所述当前时间窗口值是否包括在从所述键值存储系统中获取的所述时间窗口值 中; 若包括在,将所述当前时间窗口值对应的所述键值与所述键值存储系统中同一时间窗 口下所述键对应的键值进行合并,并更新保存在所述键值存储系统中; 若未包括在,在所述键值存储系统中以增量的形式存储所述键对应的所述键值和所述 键值对应的当前时间窗口值。
5. 根据权利要求1-4任一所述的方法,其特征在于,对实时到达的原始数据进行解析 之前,所述方法还包括: 从日志收集系统、中间件系统或者实时存储系统获取实时到达的所述原始数据。
6. -种数据处理系统,其特征在于,所述系统包括: 解析组件,用于对实时到达的原始数据进行解析; 提取组件,用于根据配置信息从解析后的原始数据中提取数据统计所需要的至少一个 字段及每个所述字段的值; 统计组件,用于根据所述配置信息、至少一个字段、每个所述字段的值以及每个所述字 段的值对应的采集时间按照预设的时间窗进行数据统计,得到键、所述键对应的键值以及 所述键值对应的当前时间窗口值; 更新组件,用于根据所述键、所述键对应的键值以及所述键值对应的当前时间窗口值, 在键值存储系统中对所述键对应的所述键值按照时间窗进行增量更新。
7. 根据权利要求6所述的系统,其特征在于,所述解析组件,具体用于将所述原始数据 转换为字段-值的形式,所述字段的值的类型为字符串、整型、浮点型、布尔型或者复合的 对象类型。
8. 根据权利要求6所述的系统,其特征在于,所述统计组件,具体用于根据所述配置信 息将所述至少一个字段统计为所述键;根据每个所述字段的值对应的采集时间和所述预设 的时间窗,确定所述键值对应的当前时间窗口值;根据所述配置信息和每个所述字段的值 对应的采集时间,将采集时间属于同一所述当前时间窗口值对应的时间窗口的所述字段的 值进行数据合并,得到所述键对应的所述键值。
9. 根据权利要求6所述的系统,其特征在于,所述更新组件,具体用于所述根据所述键 从所述键值存储系统中获取所述键对应的键值以及所述键值对应的时间窗口值;判断所述 当前时间窗口值是否包括在从所述键值存储系统中获取的所述时间窗口值中;若包括在, 将所述当前时间窗口值对应的所述键值与所述键值存储系统中同一时间窗口下所述键对 应的键值进行合并,并更新保存在所述键值存储系统中;若未包括在,在所述键值存储系统 中以增量的形式存储所述键对应的所述键值和所述键值对应的当前时间窗口值。
10. 根据权利要求6-9任一所述的系统,其特征在于,所述系统还包括:获取组件,用于 在所述解析组件对实时到达的所述原始数据进行解析之前,从日志收集系统、中间件系统 或者实时存储系统获取实时到达的所述原始数据。
11. 根据权利要求10所述的系统,其特征在于,所述系统中的所述获取组件、所述解析 组件,所述提取组件、所述统计组件和所述更新组件分别包括线性扩展的多个。
12. 根据权利要求11所述的系统,其特征在于,所述提取组件、所述统计组件和所述更 新组件通过所处理的所述字段以及根据所述字段统计后得到的所述键关联起来。
【文档编号】G06F17/30GK104090889SQ201310680626
【公开日】2014年10月8日 申请日期:2013年12月12日 优先权日:2013年12月12日
【发明者】张文郁 申请人:深圳市腾讯计算机系统有限公司