CN111782645A - 数据处理方法和装置 - Google Patents
数据处理方法和装置 Download PDFInfo
- Publication number
- CN111782645A CN111782645A CN201911200575.7A CN201911200575A CN111782645A CN 111782645 A CN111782645 A CN 111782645A CN 201911200575 A CN201911200575 A CN 201911200575A CN 111782645 A CN111782645 A CN 111782645A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- dimension
- dimensional array
- processed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 14
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims description 38
- 238000013507 mapping Methods 0.000 claims description 11
- 230000001174 ascending effect Effects 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 7
- 238000007619 statistical method Methods 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 15
- 238000013459 approach Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 241000283690 Bos taurus Species 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
- 210000002268 wool Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供一种数据处理方法和装置。数据处理装置对原始事件请求进行处理,以形成用于统计的待处理数据;针对待处理数据中的维度数据计算相应的哈希值;判断哈希值是否包括在预设数据结构的维度索引中,其中维度索引为Map结构;若哈希值未包括在维度索引中,则计算维度数据在二维数组中的行索引,将哈希值和行索引存入维度索引中,将待处理数据***二维数组中由行索引指向的行中;按预设时间窗口对二维数组中的相关数据进行处理,以得到相应指标的统计结果。本公开可有效节约机器的内存使用,大幅度节约硬件资源和降低***出错概率。
Description
技术领域
本公开涉及信息处理领域,特别涉及一种数据处理方法和装置。
背景技术
作为一款纯流式的数据处理引擎,Flink凭借其实时性、强一致性和高可用性等诸多优点,已在数据加工场景被广泛使用。为了保证线上交易的顺利完成、维护正常用户的合法权益,防止黄牛刷单、薅羊毛等恶劣操作,各大互联网企业在风控领域的投入比重也越来越大。风控技术的核心手段之一便是实时指标计算,所以在风控技术中引入Flink进行数据加工自然是水到渠成的事情。
针对风控场景的某个特定业务,通常需要加工若干个指标对业务进行支撑,每个指标都有不同的维度、计算键值key和时间窗口,如订单场景的指标“24小时内,相同收货地址、相同收货手机前7位和相同SKUID的不同账号的数量”,其中收货地址、收货手机前7位和SKUID组成了该指标的维度,账号则是该指标的计算key,24小时对应该指标的时间窗口。
发明内容
发明人通过研究发现,目前基于Flink的风控指标计算方式是对每个指标进行单独计算的,并且每个指标都是由维度、计算key和时间窗口唯一确定的。但是在风控场景中,针对相同维度和相同计算key通常会按照多个时间窗口加工成多个指标,常见的时间窗口有:5分钟、10分钟、15分钟、30分钟、60分钟、12小时和24小时等。也就是说,针对上述维度“收货地址+收货手机前7位+SKUID”和计算key的“账号”,通常会加工出5分钟、10分钟、15分钟、30分钟、60分钟、12小时和24小时对应的7个指标,并且这7个指标的计算是单独进行的。
Flink是完全基于本地内存进行计算的,目前Flink集群部署机器的常见内存容量是8GB和16GB,常见的CPU配置是4核和8核。这种配置下20台机器的Flink集群足以满足大部分风控场景的指标计算要求。但是在诸如大型电商的互联网企业中,这样的硬件配置是远远满足不了线上业务需求的,如针对常见的订单、优惠券和登录注册等风控场景,通常需要实时计算出数百个、数千个指标进行业务支撑,不仅如此,这些业务场景的流量也是惊人的,峰值的***吞吐量(TPS)经常达到百万级且持续时间长,一天的数据量通常超过TB级、达到PB级,在这样量级的场景下,Flink集群出现垃圾回收(GC)和内存溢出(OOM)的频率非常高,严重影响Flink的性能,甚至导致Flink无法提供稳定的实时计算服务。
目前解决上述问题的常见方法是增加机器数量,通常一个集群的机器数量超过数百台、达到数千台。但一味的增加机器数量并不能从根本上解决问题,一方面随着集群机器数量的增加,集群中节点的故障率随之提高,增加了集群jobManager的负荷,另一方面无限制的增加机器数量也给企业的技术投入带来负担。
据此,本公开提供一种有效节省内存使用的方案。
根据本公开实施例的第一方面,提供一种数据处理方法,包括:对原始事件请求进行处理,以形成用于统计的待处理数据;针对所述待处理数据中的维度数据计算相应的哈希值;判断所述哈希值是否包括在预设数据结构的维度索引中,其中所述维度索引为Map结构,在所述Map结构中,key为所述哈希值,value为指向所述二维数组的行索引;若所述哈希值未包括在所述维度索引中,则计算所述维度数据在所述二维数组中的行索引;将所述哈希值和所述行索引存入维度索引中,将所述待处理数据***所述二维数组中由所述行索引指向的行中;按预设时间窗口对所述二维数组中的相关数据进行处理,以得到相应指标的统计结果。
在一些实施例中,若所述哈希值未包括在所述维度索引中,还包括:判断所述预设数据结构中的二维数组的空余空间是否小于预设门限;若所述二维数组的空余空间小于预设门限,对所述二维数组进行行扩容,然后执行计算所述维度数据在所述二维数组中的行索引的步骤。
在一些实施例中,若所述二维数组的空余空间不小于预设门限,则执行计算所述维度数据在所述二维数组中的行索引的步骤。
在一些实施例中,计算所述维度数据在所述二维数组中的行索引包括:查询所述二维数组中当前的最大行索引值;将所述最大行索引值加1,以作为所述维度数据在所述二维数组中的行索引。
在一些实施例中,若所述哈希值包括在所述维度索引中,则在所述二维数组中查询与所述哈希值相关联的行;判断当前统计方式是否为指定统计方式;若当前统计方式为指定统计方式,则利用所述待处理数据对所述二维数组中与所述哈希值相关联的行中的数据进行更新;按预设时间窗口对所述二维数组中的相关数据进行处理。
在一些实施例中,若当前统计方式不是指定统计方式,则在所述二维数组中新增预设多列;在所述二维数组中,将所述待处理数据***到与所述哈希值相关联的行的新增列中;按预设时间窗口对所述二维数组中的相关数据进行处理。
在一些实施例中,在针对所述待处理数据中的维度数据计算相应的哈希值前,还包括:判断所述待处理数据中是否包括维度数据;若所述待处理数据中不包括维度数据,则对所述待处理数据中的计算键值进行映射处理,以便为所述待处理数据生成相应的虚拟维度数据。
在一些实施例中,对所述待处理数据中的计算键值进行映射处理包括:将所述计算键值中的大写改为小写,抽取所述计算键值中的全部字符并进行去重处理,以得到待处理字符;将待处理字符按ASCII码的顺序进行升序排序,以得到虚拟维度数据。
在一些实施例中,若所述待处理字符均为数字型,则统计每一个字符在所述计算键值中的出现次数;将所述待处理字符按ASCII码的顺序进行升序排序,并在每个字符后面***相应的出现次数以得到虚拟维度数据。
在一些实施例中,同一个指标域中包括多个指标,同一指标域中的指标具有以下属性:属于同一个业务场景,具有相同的统计方法,具有相同的统计维度和统计键值,分别具有不同的统计时间窗口,以及共用同一个预设数据结构实例做数据统计。
根据本公开实施例的第二方面,提供一种数据处理装置,包括:预处理模块,被配置为对原始事件请求进行处理,以形成用于统计的待处理数据;哈希值计算模块,被配置为针对所述待处理数据中的维度数据计算相应的哈希值;识别模块,被配置为判断所述哈希值是否包括在预设数据结构的维度索引中,其中所述维度索引为Map结构;数据处理模块,被配置为若所述哈希值未包括在所述维度索引中,则计算所述维度数据在所述二维数组中的行索引;将所述哈希值***所述维度索引中由所述行索引指向的行中,将所述待处理数据***所述二维数组中由所述行索引指向的行中;按预设时间窗口对所述二维数组中的相关数据进行处理,以得到相应指标的统计结果。
根据本公开实施例的第三方面,提供一种数据处理装置,包括:存储器,被配置为存储指令;处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如上述任一实施例所述的方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上述任一实施例涉及的方法。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是根据本公开一个实施例的数据处理方法的流程示意图;
图2是本公开一个实施例的数据结构示意图;
图3是本公开一个实施例的数据结构行扩容的示意图;
图4是根据本公开另一个实施例的数据处理方法的流程示意图;
图5a-图5c是本公开一些实施例的虚拟维度映射示意图;
图6是本公开一个实施例的数据结构列扩容的示意图;
图7是根据本公开一个实施例的数据处理装置的结构示意图;
图8是根据本公开另一个实施例的数据处理装置的结构示意图。
应当明白,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。此外,相同或类似的参考标号表示相同或类似的构件。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。对示例性实施例的描述仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。本公开可以以许多不同的形式实现,不限于这里所述的实施例。提供这些实施例是为了使本公开透彻且完整,并且向本领域技术人员充分表达本公开的范围。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、材料的组分和数值应被解释为仅仅是示例性的,而不是作为限制。
本公开中使用的“包括”或者“包含”等类似的词语意指在该词前的要素涵盖在该词后列举的要素,并不排除也涵盖其他要素的可能。
本公开使用的所有术语(包括技术术语或者科学术语)与本公开所属领域的普通技术人员理解的含义相同,除非另外特别定义。还应当理解,在诸如通用字典中定义的术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
图1是根据本公开一个实施例的数据处理方法的流程示意图。在一些实施例中,下面的数据处理方法步骤由数据处理装置执行。
在步骤101,对原始事件请求进行处理,以形成用于统计的待处理数据。
在一些实施例中,对原始事件请求进行处理,可包括过滤非法请求数据,以便将原始事件请求转换为可用于统计的数据。
在步骤102,针对待处理数据中的维度数据计算相应的哈希值。
在步骤103,判断哈希值是否包括在预设数据结构的维度索引中。
图2是本公开一个实施例的数据结构示意图。如图2所示,预设数据结构包括维度索引和二维数组两部分,其中维度索引为Map结构。Map结构的key为相应指标的所有维度组合后进行哈希运算所得到的long型哈希值,value为对应的行索引。二维数组中的第1列为行索引,其它列用于存放数据明细,例如事件时间、计算key等。
不同指标类型的数据明细占用多少个“列”通常是不一样的,即不同指标类型的跨度(span)不一样。如对于“相同维度,一段时间内,统计不同计算key个数”(按照某个维度对key去重统计)指标类型,其span为2,数据明细中分别存放:事件时间和计算key;对于“相同维度,一段时间内,带增量的统计相同计算key出现的次数”(按照某个维度对key增量统计)指标类型,其span为3,数据明细中分别存放:事件时间、计算key和当次事件中计算key出现的次数(增量)。
返回图1。在步骤104,若哈希值未包括在维度索引中,则计算维度数据在二维数组中的行索引。
在一些实施例中,通过查询二维数组中当前的最大行索引值,将最大行索引值加1,以作为维度数据在二维数组中的行索引。
在步骤105,将哈希值和行索引存入维度索引中,将待处理数据***二维数组中由行索引指向的行中。
图3是本公开一个实施例的数据结构行扩容的示意图。若计算出的哈希值123456未包括在维度索引中,且二维数组中当前的最大行索引值为2,则将3作为待处理数据中的维度数据在二维数组中的行索引。接下来将哈希值123456***维度索引中,将待处理数据ABCD***二维数组中由行索引3指向的行中,其中ABCD可放置在该行的同一列中,也可分别放置在该行的不同列中。
返回图1。在步骤106,按预设时间窗口对二维数组中的相关数据进行处理,以得到相应指标的统计结果。
这里需要说明的是,为了利用上述数据结构能够达到指标计算可复用的目的,本公开使用“指标域”对这些指标进行管理和实现指标计算复用。这里的可复用是指对于具有相同统计维度、相同计算key,不同统计时间窗口的多个指标的计算复用。同一个指标域下通常包含若干个指标,这些指标必须具有以下几个特点:
1)同属于一个业务场景(通常一个Flink集群中会同时加工多个业务场景下的指标);
2)具有相同的统计方法(类型),如按照某个维度对key去重统计、按照某个维度对key增量统计或者直接对key增量统计等;
3)具有相同的统计维度和统计key;
4)具有不同的统计时间窗口;
5)共用同一个核心数据结构实例做数据统计。
结合以上几个特点可以看出,指标域也可以认为是由业务场景、统计方法、统计维度和计算key 4个元素唯一确定,且这些元素都是与其下的指标保持一致。指标域负责管理指标的生命周期和使用的核心数据结构,即一个指标域有且只有一个核心数据结构实例;同时指标域也会根据自己的时间窗口值择机清理对应核心数据结构实例中的过期数据,指标域的时间窗口值为其下所有指标时间窗口的最大值。
在一些实施例中,在统一指标加工方法初始化流程中,可采取以下流程:
1)获取***中所有指标及指标的加工定义;
2)为区分不同业务场景的指标,需要对指标按业务场景进行分类,如场景A指标、场景B指标和场景C指标;
3)按不同的业务场景,根据指标的统计方法、统计维度和计算key将各个指标进一步划分到对应的指标域;
4)初始化各个指标域,包括初始化自身生命周期以及其下各个指标的生命周期,通过其下指标计算自身的时间窗口值,初始化核心数据结构等操作。
5)统一指标加工方法初始化流程结束。
这里需要说明的是,Flink在统计数据时是按照指标域进行的,具体如何计算各个指标完全是由指标域负责完成的。
在本公开上述实施例提供的数据处理方法中,通过设计能够支持多指标计算内存可复用数据结构,能够有效节约机器的内存使用。
图4是根据本公开另一个实施例的数据处理方法的流程示意图。在一些实施例中,下面的数据处理方法步骤由数据处理装置执行。
在步骤401,对原始事件请求进行处理,以形成用于统计的待处理数据。
在一些实施例中,对原始事件请求进行处理,可包括过滤非法请求数据,以便将原始事件请求转换为可用于统计的数据。
在步骤402,判断待处理数据中是否包括维度数据。
若待处理数据中不包括维度数据,则执行步骤403;否则执行步骤404。
这里需要说明的是,对于某些特殊的指标,仅包括计算key和时间窗口,如指标“一段时间内,统计同一账号登录的次数”(直接对key增量统计),这类指标被为“无维度指标”。为了便于处理,需要给这类指标添加虚拟维度。
在步骤403,对待处理数据中的计算键值进行映射处理,以便为待处理数据生成相应的虚拟维度数据。
在一些实施例中,对待处理数据中的计算键值进行映射处理包括:将计算键值中的大写改为小写,抽取计算键值中的全部字符并进行去重处理,以得到待处理字符;将待处理字符按ASCII码的顺序进行升序排序,以得到虚拟维度数据。
若待处理字符均为数字型,则统计每一个字符在计算键值中的出现次数。将待处理字符按ASCII码的顺序进行升序排序,并在每个字符后面***相应的出现次数以得到虚拟维度数据。
例如,如图5a所示,通过对三个纯字母字符串Kawai、Wiaka和Kiawa进行映射处理,得到的虚拟维度为aikw。如图5b所示,通过对带有数字的字符串day1、1day和da1y进行映射处理,得到的虚拟维度为1ady。如图5c所示,通过对纯数字998011、101899和190891进行映射处理,得到的虚拟维度为01128192。
在步骤404,针对待处理数据中的维度数据计算相应的哈希值。
在步骤405,判断哈希值是否包括在预设数据结构的维度索引中。
若哈希值未包括在维度索引中,则执行步骤406;否则执行步骤411。
在步骤406,判断是否需要进行行扩容。
若需要进行行扩容,则执行步骤407,否则执行步骤408。
在一些实施例中,通过判断预设数据结构中的二维数组的空余空间是否小于预设门限。若二维数组的空余空间小于预设门限,则需要对二维数组进行行扩容。
在步骤407,在二维数组中增加预定数量的行。
在步骤408,计算维度数据在二维数组中的行索引。
在一些实施例中,通过查询二维数组中当前的最大行索引值,将最大行索引值加1,以作为维度数据在二维数组中的行索引。
在步骤409,将哈希值和行索引存入维度索引中,将待处理数据***二维数组中由行索引指向的行中。
在步骤410,按预设时间窗口对二维数组中的相关数据进行处理,以得到相应指标的统计结果。
在步骤411,在二维数组中查询与哈希值相关联的行。
在步骤412,判断当前统计方式是否为指定统计方式。例如,指定统计方式为去重统计且数据明细重复。
若当前统计方式为指定统计方式,则执行步骤413;否则,执行步骤414。
在步骤413,利用待处理数据对二维数组中与哈希值相关联的行中的数据进行更新。然后执行步骤410。
在步骤414,在二维数组中新增预设多列。
在步骤415,在二维数组中,将待处理数据***到与哈希值相关联的行的新增列中。然后执行步骤410。
图6是本公开一个实施例的数据结构列扩容的示意图。若计算出的哈希值123456包括在维度索引中,且该哈希值所对应的行索引为3,则在二维数组的右侧增加若干列,以便将相关信息***第3行的新增列中。可根据需要***第3行的1列中,也可***第3行的多列中。
图7是根据本公开一个实施例的数据处理装置的结构示意图。如图7所示,数据处理装置包括预处理模块71、哈希值计算模块72、识别模块73和数据处理模块74。
预处理模块71被配置为对原始事件请求进行处理,以形成用于统计的待处理数据。
在一些实施例中,对原始事件请求进行处理,可包括过滤非法请求数据,以便将原始事件请求转换为可用于统计的数据。
哈希值计算模块72被配置为针对待处理数据中的维度数据计算相应的哈希值。
在一些实施例中,哈希值计算模块72判断所述待处理数据中是否包括维度数据。若所述待处理数据中不包括维度数据,则对所述待处理数据中的计算键值进行映射处理,以便为所述待处理数据生成相应的虚拟维度数据。
例如,将所述计算键值中的大写改为小写,抽取所述计算键值中的全部字符并进行去重处理,以得到待处理字符,将待处理字符按ASCII码的顺序进行升序排序,以得到虚拟维度数据。若所述待处理字符均为数字型,则统计每一个字符在所述计算键值中的出现次数,将所述待处理字符按ASCII码的顺序进行升序排序,并在每个字符后面***相应的出现次数以得到虚拟维度数据。
识别模块73被配置为判断哈希值是否包括在预设数据结构的维度索引中。
这里需要说明的是,预设数据结构为图2所示的数据结构。
数据处理模块74被配置为若哈希值未包括在维度索引中,则计算维度数据在二维数组中的行索引,将哈希值和行索引存入维度索引中,将待处理数据***二维数组中由行索引指向的行中,按预设时间窗口对二维数组中的相关数据进行处理,以得到相应指标的统计结果。
在一些实施例中,数据处理模块74通过查询二维数组中当前的最大行索引值,将最大行索引值加1,以作为维度数据在二维数组中的行索引。
在一些实施例中,若哈希值未包括在所述维度索引中,数据处理模块74判断预设数据结构中的二维数组的空余空间是否小于预设门限,若二维数组的空余空间小于预设门限,对所述二维数组进行行扩容,然后执行计算维度数据在所述二维数组中的行索引的操作。若所述二维数组的空余空间不小于预设门限,则数据处理模块74直接执行计算所述维度数据在所述二维数组中的行索引的操作。
在一些实施例中,若所述哈希值包括在维度索引中,则数据处理模块74在二维数组中查询与哈希值相关联的行,判断当前统计方式是否为指定统计方式。若当前统计方式为指定统计方式,则利用待处理数据对二维数组中与哈希值相关联的行中的数据进行更新,然后按预设时间窗口对二维数组中的相关数据进行处理。
若当前统计方式不是指定统计方式,则数据处理模块74在所述二维数组中新增预设多列,在所述二维数组中,将所述待处理数据***到与所述哈希值相关联的行的新增列中,按预设时间窗口对所述二维数组中的相关数据进行处理。
在一些实施例中,同一个指标域中包括多个指标,同一指标域中的指标具有以下属性:属于同一个业务场景,具有相同的统计方法,具有相同的统计维度和统计键值,分别具有不同的统计时间窗口,以及共用同一个预设数据结构实例做数据统计。
图8是根据本公开另一个实施例的数据处理装置的结构示意图。如图8所示,该装置包括存储器81和处理器82。
存储器81用于存储指令。处理器82耦合到存储器81。处理器82被配置为基于存储器存储的指令执行实现如图1或图4中任一实施例涉及的方法。
如图8所示,该装置还包括通信接口83,用于与其它设备进行信息交互。同时,该装置还包括总线84,处理器82、通信接口83、以及存储器81通过总线84完成相互间的通信。
存储器81可以包含高速RAM(Random Access Memory,随机存取存储器),也可还包括NVM(Non-Volatile Memory,非易失性存储器)。例如至少一个磁盘存储器。存储器81也可以是存储器阵列。存储器81还可能被分块,并且块可按一定的规则组合成虚拟卷。
此外,处理器82可以是一个中央处理器,或者可以是ASIC(Application SpecificIntegrated Circuit,专用集成电路),或者是被配置成实施本公开实施例的一个或多个集成电路。
本公开还提供一种计算机可读存储介质。计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如图1或图4中任一实施例涉及的方法。
通过实施本公开,能够有效解决目前大流量风控场景下指标计算的遇到的问题,可大幅度节约硬件资源和降低***出错概率。
在一些实施例中,上述功能模块可以实现为用于执行本公开所描述功能的通用处理器、可编程逻辑控制器(Programmable Logic Controller,简称:PLC)、数字信号处理器(Digital Signal Processor,简称:DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称:ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。
至此,已经详细描述了本公开的实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
Claims (13)
1.一种数据处理方法,包括:
对原始事件请求进行处理,以形成用于统计的待处理数据;
针对所述待处理数据中的维度数据计算相应的哈希值;
判断所述哈希值是否包括在预设数据结构的维度索引中,其中所述维度索引为Map结构,在所述Map结构中,key为所述哈希值,value为指向所述二维数组的行索引;
若所述哈希值未包括在所述维度索引中,则计算所述维度数据在所述二维数组中的行索引;
将所述哈希值和所述行索引存入维度索引中,将所述待处理数据***所述二维数组中由所述行索引指向的行中;
按预设时间窗口对所述二维数组中的相关数据进行处理,以得到相应指标的统计结果。
2.根据权利要求1所述的方法,其中,若所述哈希值未包括在所述维度索引中,还包括:
判断所述预设数据结构中的二维数组的空余空间是否小于预设门限;
若所述二维数组的空余空间小于预设门限,对所述二维数组进行行扩容,然后执行计算所述维度数据在所述二维数组中的行索引的步骤。
3.根据权利要求2所述的方法,还包括:
若所述二维数组的空余空间不小于预设门限,则执行计算所述维度数据在所述二维数组中的行索引的步骤。
4.根据权利要求1所述的方法,其中,计算所述维度数据在所述二维数组中的行索引包括:
查询所述二维数组中当前的最大行索引值;
将所述最大行索引值加1,以作为所述维度数据在所述二维数组中的行索引。
5.根据权利要求1所述的方法,还包括:
若所述哈希值包括在所述维度索引中,则在所述二维数组中查询与所述哈希值相关联的行;
判断当前统计方式是否为指定统计方式;
若当前统计方式为指定统计方式,则利用所述待处理数据对所述二维数组中与所述哈希值相关联的行中的数据进行更新;
按预设时间窗口对所述二维数组中的相关数据进行处理。
6.根据权利要求5所述的方法,还包括:
若当前统计方式不是指定统计方式,则在所述二维数组中新增预设多列;
在所述二维数组中,将所述待处理数据***到与所述哈希值相关联的行的新增列中;
按预设时间窗口对所述二维数组中的相关数据进行处理。
7.根据权利要求1所述的方法,其中,在针对所述待处理数据中的维度数据计算相应的哈希值前,还包括:
判断所述待处理数据中是否包括维度数据;
若所述待处理数据中不包括维度数据,则对所述待处理数据中的计算键值进行映射处理,以便为所述待处理数据生成相应的虚拟维度数据。
8.根据权利要求7所述的方法,其中,对所述待处理数据中的计算键值进行映射处理包括:
将所述计算键值中的大写改为小写,抽取所述计算键值中的全部字符并进行去重处理,以得到待处理字符;
将待处理字符按ASCII码的顺序进行升序排序,以得到虚拟维度数据。
9.根据权利要求8所述的方法,还包括:
若所述待处理字符均为数字型,则统计每一个字符在所述计算键值中的出现次数;
将所述待处理字符按ASCII码的顺序进行升序排序,并在每个字符后面***相应的出现次数以得到虚拟维度数据。
10.根据权利要求1-9中任一项所述的方法,其中:
同一个指标域中包括多个指标,同一指标域中的指标具有以下属性:属于同一个业务场景,具有相同的统计方法,具有相同的统计维度和统计键值,分别具有不同的统计时间窗口,以及共用同一个预设数据结构实例做数据统计。
11.一种数据处理装置,包括:
预处理模块,被配置为对原始事件请求进行处理,以形成用于统计的待处理数据;
哈希值计算模块,被配置为针对所述待处理数据中的维度数据计算相应的哈希值;
识别模块,被配置为判断所述哈希值是否包括在预设数据结构的维度索引中,其中所述维度索引为Map结构,在所述Map结构中,key为所述哈希值,value为指向所述二维数组的行索引;
数据处理模块,被配置为若所述哈希值未包括在所述维度索引中,则计算所述维度数据在所述二维数组中的行索引;将所述哈希值和所述行索引存入维度索引中,将所述待处理数据***所述二维数组中由所述行索引指向的行中;按预设时间窗口对所述二维数组中的相关数据进行处理,以得到相应指标的统计结果。
12.一种数据处理装置,包括:
存储器,被配置为存储指令;
处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如权利要求1-10中任一项所述的方法。
13.一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911200575.7A CN111782645A (zh) | 2019-11-29 | 2019-11-29 | 数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911200575.7A CN111782645A (zh) | 2019-11-29 | 2019-11-29 | 数据处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782645A true CN111782645A (zh) | 2020-10-16 |
Family
ID=72755740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911200575.7A Pending CN111782645A (zh) | 2019-11-29 | 2019-11-29 | 数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782645A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220147503A1 (en) * | 2020-08-11 | 2022-05-12 | Massachusetts Mutual Life Insurance Company | Systems and methods to generate a database structure with a low-latency key architecture |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140208053A1 (en) * | 2013-01-18 | 2014-07-24 | International Business Machines Corporation | Re-aligning a compressed data array |
CN104063376A (zh) * | 2013-03-18 | 2014-09-24 | 阿里巴巴集团控股有限公司 | 多维度分组运算方法及*** |
WO2015109250A1 (en) * | 2014-01-20 | 2015-07-23 | Alibaba Group Holding Limited | CREATING NoSQL DATABASE INDEX FOR SEMI-STRUCTURED DATA |
CN105989078A (zh) * | 2015-02-11 | 2016-10-05 | 烟台中科网络技术研究所 | 一种结构化对等网络构建索引的方法、检索方法、装置及*** |
CN105989076A (zh) * | 2015-02-10 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种数据统计方法以及装置 |
CN109656923A (zh) * | 2018-12-19 | 2019-04-19 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
-
2019
- 2019-11-29 CN CN201911200575.7A patent/CN111782645A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140208053A1 (en) * | 2013-01-18 | 2014-07-24 | International Business Machines Corporation | Re-aligning a compressed data array |
CN104063376A (zh) * | 2013-03-18 | 2014-09-24 | 阿里巴巴集团控股有限公司 | 多维度分组运算方法及*** |
WO2015109250A1 (en) * | 2014-01-20 | 2015-07-23 | Alibaba Group Holding Limited | CREATING NoSQL DATABASE INDEX FOR SEMI-STRUCTURED DATA |
CN105989076A (zh) * | 2015-02-10 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种数据统计方法以及装置 |
CN105989078A (zh) * | 2015-02-11 | 2016-10-05 | 烟台中科网络技术研究所 | 一种结构化对等网络构建索引的方法、检索方法、装置及*** |
CN109656923A (zh) * | 2018-12-19 | 2019-04-19 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
宋威;杨炳儒;徐章艳;韩彦岭;: "一种基于索引数组的频繁项集高效挖掘算法", 高技术通讯, no. 03 * |
崔晨;郑林江;韩凤萍;何牧君;: "基于内存的HBase二级索引设计", 计算机应用, no. 06 * |
张佳民: "基于数据仓库体系结构的OLAP和数据挖掘技术的研究与应用", 中国优秀硕士学位论文全文数据库 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220147503A1 (en) * | 2020-08-11 | 2022-05-12 | Massachusetts Mutual Life Insurance Company | Systems and methods to generate a database structure with a low-latency key architecture |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11232073B2 (en) | Method and apparatus for file compaction in key-value store system | |
CN112597153B (zh) | 一种基于区块链的数据存储方法、装置及存储介质 | |
US9619657B2 (en) | Method and apparatus for storing redeem code, and method and apparatus for verifying redeem code | |
US8788499B2 (en) | System and method for finding top N pairs in a map-reduce setup | |
CN110489405B (zh) | 数据处理的方法、装置和服务器 | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
CN103942292A (zh) | 虚拟机镜像文件处理方法、装置及*** | |
CN110727663A (zh) | 数据清洗方法、装置、设备及介质 | |
CN111694839B (zh) | 基于大数据的时间序列指数构建方法、装置及计算机设备 | |
EP3955256A1 (en) | Non-redundant gene clustering method and system, and electronic device | |
CN111782645A (zh) | 数据处理方法和装置 | |
CN107133321B (zh) | 页面的搜索特性的分析方法和分析装置 | |
CN107832341B (zh) | Agnss用户去重统计方法 | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 | |
JP2018511131A (ja) | オンライン媒体のための階層的なコストベースのキャッシング | |
CN113221558B (zh) | 一种快递地址纠错方法、装置、存储介质及电子设备 | |
CN114969023A (zh) | 一种数据库学习型索引构建方法和*** | |
US9824105B2 (en) | Adaptive probabilistic indexing with skip lists | |
CN107248929B (zh) | 一种多维关联数据的强关联数据生成方法 | |
CN113778948A (zh) | 消息持久化存储方法及装置 | |
CN117729176B (zh) | 基于网络地址和响应体的应用程序接口聚合方法及装置 | |
CN112612415B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN112860712B (zh) | 一种基于区块链的交易数据库构建方法、***及电子设备 | |
CN113468179B (zh) | 数据库的基数估算方法、装置、设备及存储介质 | |
CN106802907B (zh) | 基于码流寻址方式的移动lte的kpi计算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |