CN107612765B - 数据处理的方法及装置 - Google Patents

数据处理的方法及装置 Download PDF

Info

Publication number
CN107612765B
CN107612765B CN201610548411.3A CN201610548411A CN107612765B CN 107612765 B CN107612765 B CN 107612765B CN 201610548411 A CN201610548411 A CN 201610548411A CN 107612765 B CN107612765 B CN 107612765B
Authority
CN
China
Prior art keywords
time
item
quadruple
quadruples
data stream
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.)
Active
Application number
CN201610548411.3A
Other languages
English (en)
Other versions
CN107612765A (zh
Inventor
李震国
罗戈
易珂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610548411.3A priority Critical patent/CN107612765B/zh
Priority to EP17826801.7A priority patent/EP3474494B1/en
Priority to PCT/CN2017/079781 priority patent/WO2018010462A1/zh
Publication of CN107612765A publication Critical patent/CN107612765A/zh
Priority to US16/245,717 priority patent/US11005737B2/en
Application granted granted Critical
Publication of CN107612765B publication Critical patent/CN107612765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例提供了一种数据处理的方法,包括:接收数据流;根据该数据流生成三元数组的集合,该集合中的每个三元数组均包括三项,其中第一项为该数据流中的第一元素,第二项包括所述第一元素在该数据流中出现的第一时刻以及与所述第一时刻对应的第一次数,第三项包括所述第一元素在该数据流中出现的第二时刻以及与所述第二时刻对应的第二次数;根据所述三元数组的集合对该数据流进行数据处理。本发明实施例中,可以基于数据流生成三元数组的集合,由于三元数组的集合中存储了多个第一元素的次数与时间的对应关系,因此可以根据该三元数组的集合,获取多个第一元素在历史时刻的次数等,从而能够实现全局监测。

Description

数据处理的方法及装置
技术领域
本发明实施例涉及通信领域,并且更具体地,涉及一种数据处理的方法及装置。
背景技术
数据流是一组顺序、大量、快速、连续到达的数据序列。一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。数据流在网络监控、传感器网络、航空航天、气象测控和金融服务等应用领域广泛出现,通过对数据流研究可以进行卫星云图监测、股市走向分析、网络攻击判断等。
寻找数据流中的元素的变化趋势是信号检测的一个重要方面,例如,在网络监控、病毒检测、趋势预测、异常分析等领域,能够为信号检测提供重要的指导意义。
在通常的应用中,一般只考虑当前时刻的数据流中元素的出现次数,历史时刻的数据如果没有被及时地记录并存储下来,在当前时刻无法进行查询,会造成信息的丢失。因此,如何实现数据流的全局监测是目前亟需解决的技术瓶颈。
发明内容
本发明实施例提供一种数据处理的方法,能够实现数据流的全局监测。
第一方面,提供了一种数据处理的方法,包括:
接收数据流,所述数据流包括多个数据点,每个数据点的数据信息包括采集所述数据点的采集时刻以及在所述采集时刻所采集的元素;
根据所述数据流生成三元数组的集合,所述集合中的每个三元数组均包括三项,其中第一项为所述数据流中的第一元素,第二项包括所述第一元素在所述数据流中出现的第一时刻以及与所述第一时刻对应的第一次数,第三项包括所述第一元素在所述数据流中出现的第二时刻以及与所述第二时刻对应的第二次数;
根据所述三元数组的集合对所述数据流进行数据处理。
本发明实施例中,可以基于数据流生成三元数组的集合,由于三元数组的集合中存储了多个第一元素的次数与时间的对应关系,因此可以根据该三元数组的集合,获取多个第一元素在历史时刻的次数等,从而能够实现全局监测。
结合第一方面,在第一方面的上述某些实现方式中,所述根据所述数据流生成三元数组的集合,包括:
根据所述数据流,建立与所述多个第一元素一一对应的多个阶梯频率流,其中,所述多个阶梯频率流中的每个阶梯频率流包括多个第一元素数据点,每个第一元素数据点包括第三时刻以及第三次数,所述第三时刻为所述第一元素在所述数据流中出现的时刻,所述第三次数为截止所述第三时刻所述第一元素在所述数据流中出现的次数;
根据与所述多个第一元素一一对应的多个阶梯频率流,生成所述三元数组的集合。
这样,本发明实施例中可以基于数据流建立多个阶梯频率流,其中,一个阶梯频率流对应一个第一元素,进而可以根据每个阶梯频率流分别确定与第一元素对应的三元数组。其中,针对于某一个特定阶梯频率流生成三元数组的过程,该过程处理的数据量少,效率较高。
结合第一方面,在第一方面的上述某些实现方式中,所述根据所述数据流生成三元数组的集合,包括:
根据所述数据流建立M个四元组,所述M个四元组中的每个四元组的第一项为所述第一元素,第二项为截止当前时刻所述第一元素在所述数据流中出现的次数,第三项为基于所述数据流确定第四项的算法,所述第四项包括多个二元数组,每个二元数组的第一项为所述第一时刻以及所述第一次数,第二项为所述第二时刻以及所述第二次数;
根据所述M个四元组,生成所述三元数组的集合。
结合第一方面,在第一方面的上述某些实现方式中,所述根据所述数据流建立M个四元组,包括:
根据所述数据流中新获取的数据点,对所述M个四元组进行更新。
结合第一方面,在第一方面的上述某些实现方式中,所述根据所述数据流中新获取的数据点,对所述M个四元组进行更新,包括:
判断所述M个四元组中是否存在所述新获取的数据点的第二元素;
如果所述M个四元组中的第一四元组的第一项为所述第二元素,将所述第一四元组进行更新,
如果所述M个四元组中的第一项均不存在所述第二元素,则将所述第二元素增加到所述M个四元组中的第二四元组。
结合第一方面,在第一方面的上述某些实现方式中,所述将所述第一四元组进行更新,包括:
将所述第一四元组的第二项加一,更新为所述第二元素的新的次数;
将所述新获取的数据点的采集时刻以及所述新的次数输入所述第三项的算法。
结合第一方面,在第一方面的上述某些实现方式中,所述将所述第二元素增加到所述M个四元组中的第二四元组,包括:
如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项等于零的四元组,
如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项最小的四元组。
其中,如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项等于零的四元组,包括:将所述M个四元组中第二项等于零的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项更新为1,第三项包括由所述第二元素的采集时刻以及所述次数为1构成的数据点,第四项为空。
其中,如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项最小的四元组,包括:根据所述M个四元组中第二项最小的四元组,输出对应的多个三元数组;将所述M个四元组中第二项最小的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项加1更新为新的次数,第三项包括由所述第二元素的采集时刻以及所述新的次数构成的数据点,第四项为空。
结合第一方面,在第一方面的上述某些实现方式中,如果所述M个四元组中第二项大于零的四元组的数量小于预设的阈值,则将所述M个四元组中第二项等于零的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项更新为1,第三项包括由所述第二元素的采集时刻以及所述次数为1构成的数据点,第四项为空。如果所述M个四元组中第二项大于零的四元组的数量等于预设的阈值,则根据所述M个四元组中第二项最小的四元组,输出对应的多个三元数组;并将所述M个四元组中第二项最小的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项加1更新为新的次数,第三项包括由所述第二元素的采集时刻以及所述新的次数构成的数据点,第四项为空。
结合第一方面,在第一方面的上述某些实现方式中,所述M个四元组按照每个四元组的第二项的大小进行排序。
结合第一方面,在第一方面的上述某些实现方式中,所述根据所述三元数组的集合对所述数据流进行数据处理,包括:
获取对高频元素的查询指令,所述查询指令包括查询时刻和查询频率;
确定截止所述查询时刻时所述数据流中的所有数据点的数量;
根据所述查询时刻,从所述集合中获取第一三元数组,其中,所述查询时刻位于所述第一三元数组的第一时刻与第二时刻之间;
根据所述第一三元数组,确定与所述查询时刻对应的第四次数;
如果所述第四次数大于或等于所述查询频率与所述数量的乘积,则确定与所述第一三元数组对应的第一元素为所述查询时刻的高频元素。
这样,本发明实施例可以根据三元数组的集合,得到在任意查询时刻满足查询频率的数据流中的高频元素。
结合第一方面,在第一方面的上述某些实现方式中,所述根据所述三元数组的集合对所述数据流进行数据处理,包括:
获取任意一个所述第一元素;
获取所述集合中与所述任意一个所述第一元素对应的多个第二三元数组,其中所述多个第二三元数组中的每一个第二三元数组的第一项均为所述任意一个所述第一元素;
根据所述多个第二三元数组,确定所述任意一个所述第一元素在所述数据流中出现的次数随时间的变化规律。
这样,本发明实施例可以根据三元数组的集合,得到其中任意一个第一元素在数据流中的出现频率的变化规律。
第二方面,提供了一种数据处理的装置,包括:
获取单元,用于接收数据流,所述数据流包括多个数据点,每个数据点的数据信息包括采集所述数据点的采集时刻以及在所述采集时刻所采集的元素;
生成单元,用于根据所述获取单元接收的所述数据流生成三元数组的集合,所述集合中的每个三元数组均包括三项,其中第一项为所述数据流中的第一元素,第二项包括所述第一元素在所述数据流中出现的第一时刻以及与所述第一时刻对应的第一次数,第三项包括所述第一元素在所述数据流中出现的第二时刻以及与所述第二时刻对应的第二次数;
处理单元,用于根据所述生成单元生成的所述三元数组的集合对所述数据流进行数据处理。
该装置能够用于实现上述第一方面及其各个实现方式所述的数据处理的方法。
第三方面,提供了一种数据处理的装置,该装置包括:处理器、存储器和收发器。该存储器用于存储代码,处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器可以实现前述第一方面及各个实现方式所述的数据处理的方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序使得终端设备执行上述第一方面,及其各种实现方式中的任一种用于数据传输的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的数据处理的方法的流程图。
图2是本发明一个实施例的生成三元数组的集合的方法的流程图。
图3是两种分段线性函数的示意图。
图4是本发明一个实施例的5个数据点所构成的扩展多边形。
图5是本发明一个实施例的可见区域以及窗口的一个示意图。
图6是本发明一个实施例的可见区域以及窗口的另一个示意图。
图7是本发明一个实施例的链表的示意图。
图8是本发明另一个实施例的链表的示意图。
图9是本发明另一个实施例的生成三元数组的集合的方法的流程图。
图10是本发明实施例的基于链表生成三元数组的集合的方法的流程图。
图11是本发明一个实施例的数据处理的装置的结构框图。
图12是本发明另一个实施例的数据处理的装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
数据流可以表示为时间序列S={p1,p2,…,pi,…},其中数据流包括多个数据点,其中的一个数据点可以表示为时间序列中的一个值pi=(ti,yi)。其中,数据点的采集时刻为ti,在该采集时刻所采集的元素为yi。也就是说,数据点的数据信息可以包括采集时刻以及在该采集时刻所采集的元素。或者,可以理解为:时间序列S中的任意一项pi=(ti,yi)表示在ti时刻采集的数据值为yi。另外,数据流也可以称为流数据,采集时刻所采集的元素也可以称为采集时间所采集的数据值,本发明对此不限定。
可理解,数据流中包括多个数据点,每个数据点包括两个数,分别表示采集时间以及在采集时间所采集的元素。这里的采集可以是周期性地或非周期性地,可以通过收集或测量等方式所得到的。
其中,元素的物理含义与数据流的原始来源有关。相应地,元素的大小也与数据流的具体场景有关。例如,元素可以是标量值,可以是矢量值,可以是颜色、性别、地点等等。本发明实施例对此都不作限定。
例如,如果数据流是对网络流量进行监控所产生的,那么元素表示网络流量。可理解,此时的元素为非负值。
例如,如果数据流是对MBB数字轨迹的跟踪所产生的,那么元素表示轨迹的坐标。
例如,如果数据流是对海水温度的测量所产生的,那么元素表示海水的温度。可理解,此时的元素大于或等于绝对零度。
例如,如果数据流是对股市中股价的观测所产生的,那么元素表示股价。可理解,此时的元素为正数。
可理解,数据流中,不同的数据点的采集时刻不同,不同的数据点所采集的元素可以相同或不同。举例来说,对于统一数据流中的两个数据点pi=(ti,yi)和pj=(tj,yj),一般地,ti≠tj,但是yi和yj的大小关系与具体的场景有关,可以是yi=yj或者yi≠yj。其中,如果yi=yj,则认为两个数据点pi=(ti,yi)和pj=(tj,yj)采集到的是同一个元素;如果yi≠yj,则认为两个数据点pi=(ti,yi)和pj=(tj,yj)采集到的是不同的元素。
全局监测技术是指,对于给定的数据流以及任给的查询时刻(当前时刻或之前),确定在截止该查询时刻的数据流的特征。
图1是本发明一个实施例的数据处理的方法的流程图。图1所示的方法包括:
S101,接收数据流,所述数据流包括多个数据点,每个数据点的数据信息包括采集所述数据点的采集时刻以及在所述采集时刻所采集的元素。
S102,根据所述数据流生成三元数组的集合,所述集合中的每个三元数组均包括三项,其中第一项为所述数据流中的第一元素,第二项包括所述第一元素在所述数据流中出现的第一时刻以及与所述第一时刻对应的第一次数,第三项包括所述第一元素在所述数据流中出现的第二时刻以及与所述第二时刻对应的第二次数。
S103,根据所述三元数组的集合对所述数据流进行数据处理。
本发明实施例中,利用三元数组的集合存储数据流的历史数据,这样能够实现对该数据流的全局监测。
本发明实施例中,假设S101中所获取的数据流中的所有数据点的数量为N0,假设该数据流中N个数据点中所采集到的元素的数量为K0。N0和K0均为正整数。且一般地,K0<N0。
本发明实施例中,假设S102中所生成的集合中的三元数组的数量为N1,假设该集合中的多个第一元素的数量为K1。N1和K1均为正整数。且一般地,K1<N1。
可选地,三元数组的数量可以等于数据流中的数据点的数量,这样可以通过三元数组的形式完成对数据流的存储,便于后续针对该数据流的进一步处理。
可选地,本发明实施例中,三元数组的数量小于数据流中的数据点的数量。例如,三元数组的数量小于数据点的数量的万分之一,甚至千万分之一。这样能够节省存储空间。并且,该三元数组的集合也可以便于后续针对该数据流的进一步处理。
本发明实施例的集合中的每一个三元数组都包括三项,第一项都称为第一元素,第二项包括一个二元组:第一时刻与第一次数,第三项包括另一个二元组:第二时刻与第二次数。其中,第一时刻和第二时刻均属于数据流的采集时刻。一般地,第二时刻晚于第一时刻,第二次数大于第一次数。第二次数与第一次数的差可以等于1或者可以大于1。
应注意,这里的第一次数与第二次数可以为正整数,也可以为正的非整数,即第一次数或第二次数可以是包含小数的正数。关于该描述后续实施例再详细叙述。
可选地,该集合中的所有的第一元素的数量可以等于该数据流中出现的所有元素的数量,或者,该集合中的所有的第一元素的数量可以少于数据流中的所有的元素的数量,这样能够节省存储空间。具体地,多个第一元素可以为数据流中出现次数较多(例如大于预设的次数阈值)的多个元素。
也就是说,本发明实施例中,K1=K0,或者,K1<K0。
另外,该集合可以包括多个子集,不同的第一元素所在的三元数组属于不同的子集。也就是说,该集合包括与多个第一元素一一对应的多个子集。举例来说,子集1中的所有三元数组的第一项均为第一元素A1,子集2中的所有三元数据的第一项均为第二元素A2。且A1≠A2。
可以理解,在对三元数组的集合存储的过程中,同一个子集中的所有三元数组可以公用同一个第一项,这样能够进一步节省存储空间。
关于该三元数组的集合,本发明后续的实施例再作较为详细的描述。
可选地,作为一例,如图2所示,S102可以包括:
S201,根据所述数据流,建立与所述多个第一元素一一对应的多个阶梯频率流,其中,所述多个阶梯频率流中的每个阶梯频率流包括多个第一元素数据点,每个第一元素数据点包括第三时刻以及第三次数,所述第三时刻为所述第一元素在所述数据流中出现的时刻,所述第三次数为截止所述第三时刻所述第一元素在所述数据流中出现的次数。
S202,根据与所述多个第一元素一一对应的多个阶梯频率流,生成所述三元数组的集合。
具体地,针对一个特定的第一元素(例如第一元素A4),记录该第一元素在数据流中出现的时刻,并据此更新该第一元素对应的阶梯频率流。
可选地,作为一例,与第一元素对应的阶梯频率流中的所有第三次数可以组成一个公差为1的等差数列。也就是说,将与第一元素对应的阶梯频率流中的所有第一元素数据点按照第三时刻的大小进行增序排列,相应的第三次数也是递增的,且没两个相邻的第三次数之差为1。
以第一元素A4为例。举例来说,假设在数据流S={(t1,y1),(t2,y2),…,(ti,yi),…}中,y1=y5=A4,且y2≠A4,y3≠A4,y4≠A4,则可以得到第一元素A4对应的阶梯频率流的第一个第一元素数据点为(t1,1),第二个第一元素数据点为(t5,2)。
将与第一元素对应的阶梯频率流表示为S3={(T1,1),(T2,2),…,(Ti,i),…}。可见,阶梯频率流是一个新的数据流。一般数据流包括采集时刻以及在采集时刻所采集的元素,这里,对于阶梯频率流而言,阶梯频率流的采集时刻即第一元素的采集时刻,阶梯频率流的元素即在采集时刻第一元素在数据流的次数。
一般地,该阶梯频率流的数据点(即第一元素数据点)的数量明显小于上述数据流S的数据点的数量。并且,该阶梯频率流中的数据点的采集时刻为第以元素在数据流S中出现的时刻,也可以说是,第一元素在数据流中出现的次数变化的时刻。可理解,阶梯频率流的时间间隔是根据数据流中出现的第一元素的位置所决定的,该间隔一般是不等长的。
进一步地,在S202中,可以根据与第一元素对应的阶梯频率流,确定与第一元素对应的三元数组。
也就是说,根据与第一元素对应的阶梯频率流,得到的三元数组的第一项均为该第一元素。或者,也可以理解,根据一个阶梯频率流,可以得到对应的第一元素的三元数组的子集。
对多个阶梯频率流分别执行该确定的过程,便可以得到上述S102中的三元数组的集合。
以第一元素A4对应的阶梯频率流为例,相应的三元数组的第一项均为该第一元素A4。可见,在S202中,最核心的是如何得到三元数组的第二项和第三项。
本发明实施例中,可以通过构建分段线性函数f,并使用该分段线性函数逼近阶梯频率流,实现对阶梯频率流的分段线性近似(Piecewise Linear Approximation,PLA)。该过程也可以称为对阶梯频率流的压缩的过程。三元数组的第二项和第三项可以用于表示分段线性函数中的一段线段。
一般地,分段线性函数可以为连续的或者间断的,如图3所示。应注意,这里的连续或间断是指线性函数与线性函数之间为连续或间断。具体地,图3(a)为连续的分段线性函数,需用两个参数表征,如图3(a)所示,两个参数为(t,y);从数学上来讲,也可以理解为是分段线性函数的拐点的坐标。图3(b)为间断的分段线性函数,需用三个参数表征,如图3(b)所示,三个参数为(t,y,y′)。或者,图3(b)的间断的分段线性函数也可以表征为(t,y)和(t,y′)。
应注意,本发明实施例中,一个参数即一个数值,可以是分段线性函数的自变量的值,也可以是分段线性函数的应变量的值。参数的个数是除了分段线性函数的起始点和结束点之外的参数的个数。
本发明实施例中,三元数组的第二项可以为线段的左端点的坐标,第三项可以为线段的右端点的坐标。
这样,在对数据流S进行采集的过程中,不断地生成第一元素A4的阶梯频率流,进而可以通过分段线性函数的参数来刻画该阶梯频率流,即得到相应的三元数组。
可以将第一元素A4对应的阶梯频率流表示为:
S3={(T1,Y1),(T2,Y2),…,(Ti,Yi),…}。
其中,Yi=i。在S202中,可以确定容许的最大误差,将该误差表示为ε。可选地,ε<0.5,例如,该误差可以为ε=0.2,或者ε=0.4。
对于阶梯频率流中的任一第一元素数据点Pi=(Ti,Yi),可以根据容许的最大误差确定上限为Pi u=(Ti,Yi+ε),下限为Pi l=(Ti,Yi-ε)。也就是说,对于每一个第一元素数据点,根据最大误差,均能得到相应的上限点和下限点。进一步地,对于连续的至少三个第一元素数据点,可以构建扩展多边形P。
具体地,假设阶梯频率流中有n个第一元素数据点,那么,扩展多边形P可包括上链(Upper chain)U、下链(Lower chain)L、开始窗口(initial window)和结束窗口(finalwindow)。其中,上链是根据上限点构建的,下链是根据下限点构建的。
如图4所示,为n=5个第一元素数据点所构成的扩展多边形P。
如果Pi uPi+1 u低于Pi-1 lPi u,那么,Pi u与Pi+1 u之间的上链是由Pi-1 lPi u的延长线和从第一元素数据点Pi+1 u的竖直线构成的。类似地,如果Pi lPi+1 l高于Pi-1 uPi l,那么,Pi l与Pi+1 l之间的下链是由Pi-1 uPi l的延长线和从第一元素数据点Pi+1 l的竖直线构成的。具体地,图4中,开始窗口为P1 uP1 l,结束窗口为P5 uP5 l。上链为从P1 u至P5 u的折线段,图4中标记为U。下链为从P1 l至P5 l的折线段,图4中标记为L。
本发明实施例中,窗口定义为扩展多边形中上链的一点与下链的一点之间的连线段。
可理解,扩展多边形P满足:
P={(T,Y)|Ti≤T≤Ti+1,li(T)≤Y≤ui(T),i=1,2,…}。
表示满足条件Ti≤T≤Ti+1,li(T)≤Y≤ui(T)的所有的点(T,Y)的集合构成了扩展多边形P。
其中,
Figure BDA0001047415700000111
Figure BDA0001047415700000112
即,li(T)构成的折线段即为下链L,ui(T)构成的折线段即为上链U。
本发明实施例中,pq表示从第一元素数据点p至第一元素数据点q的线段。
Figure BDA0001047415700000113
表示第一元素数据点p和第一元素数据点q所在的直线。
对于确定的扩展多边形P,可以定义其中任意一个窗口的可见区域(visibleregion)。并且该可见区域位于窗口的右侧,本发明实施例中,右侧是指沿着时间增加的方向。
假设任意一个窗口为pq,可见区域表示为vr(pq),并且可见区域中的任意一点相对窗口pq都是可见的,也就是说,可见区域中的任意一点与窗口pq上的某一点的连线段位于扩展多边形P内。
也可以理解为,若一个点A位于窗口pq的右侧,并且点A与窗口pq上的某一点的连线段位于扩展多边形P内,那么该点A位于窗口pq的可见区域vr(pq)中。或者,所有满足该条件的点A的集合所组成的区域即为窗口pq的可见区域vr(pq)。
进一步地,可将可见区域vr(pq)的最右侧的窗口称为窗口pq的可见区域的关闭窗口(closing window),可以表示为cw(vr(pq));或者可以简称为窗口pq的关闭窗口,并表示为cw(pq)。
将关闭窗口cw(pq)延长至窗口pq,位于可见区域vr(pq)内的线段称为可见区域的生成线段,可以表示为gen(vr(pq))。或者,也可以简称为窗口pq的生成线段,表示为gen(pq)。其中,生成线段gen(pq)具有两个端点,一个端点位于窗口pq上,另一个端点是关闭窗口cw(pq)的右端点。
并且,可以将位于关闭窗口右侧的第一个第一元素数据点所在的数据窗口称为窗口pq的下一个窗口(next window)或下一个数据窗口,可以表示为nw(pq)。
应注意,本发明实施例中,一个第一元素数据点的数据窗口是由该一个第一元素数据点的上限点和下限点构成的窗口。例如,一个第一元素数据点为Pi=(Ti,Yi),则该第一元素数据点所在的数据窗口为Pi uPi l。其中,Pi u=(Ti,Yi+ε)为上限点,Pi l=(Ti,Yi-ε)为下限点。
可理解,下一个窗口与关闭窗口不相交。
下面结合图5和图6,对起始窗口、关闭窗口、下一个窗口、可见区域和生成线段进行描述。应注意,图5和图6所示的数据流仅是为了示意性描述起始窗口、关闭窗口、下一个窗口、可见区域和生成线段的概念。图5和图6中的数据流的数据点不是阶梯频率流中的第一元素数据点。阶梯频率流中的第一元素数据点的Y值是递增的。这里将图5和图6中的数据点表示为p1~p5
例如,如图5所示,将窗口p1 up1 l表示为w0,阴影区域为窗口w0的可见区域,表示为vr(w0)。阴影区域的最右侧窗口为窗口w0的可见区域的关闭窗口,即窗口p3 lv,表示为cw(w0)。关闭窗口延长至窗口p1 up1 l的线段为可见区域的生成线段或窗口w0的生成线段,即线段uv,表示为gen(vr(w0))或gen(w0)。位于关闭窗口p3 lv右侧的第一个数据点所在的数据窗口p5 up5 l为窗口w0的下一个窗口,表示为nw(w0)。
其中,生成线段gen(w0)具有两个端点u和v,一个端点u位于窗口w0上,另一个端点v是关闭窗口cw(w0)的右端点。
其中,nw(w0)与cw(w0)不相交。
应注意,如图5所示,只有在获取数据点p5之后,才能确定可见区域vr(w0)。也可以称为数据点p5关闭了该可见区域。相应地,可理解,在获取数据点p5之前,该可见区域是开放(open)的。
换句话说,在能够确定一个可见区域的关闭窗口之前,该一个可见区域都是开放的。只有在确定了一个可见区域的关闭窗口之后,该可见区域才关闭。
这样,可理解,如图5中的前四个数据点p1,p2,p3,p4可以用生成线段gen(w0)拟合。而且,对于p1,p2,p3,p4这四个数据点,只需用两个点u和v的四个参数表示。
并且,可理解,如果数据点p4为该流数据的最后一个数据点,也就是说,假设窗口p4 up4 l为结束窗口。那么由于可见区域还未关闭,此时可以用位于可见区域内的任意段来表征,如图6中所示的线段u1v1或线段p1p4 u
这样,本发明实施例中,能够根据S201中所得到的阶梯频率流以及最大误差,在线地构建扩展多边形。也就是说,能够在获取数据点的过程中,逐步地得到阶梯频率流,进而逐步地根据阶梯频率流构建扩展多边形。并且,可以理解,对于扩展多边形中的任意一个窗口,可以确定该任意一个窗口的可见区域。如果结束窗口不位于该可见区域内,进一步可以确定该任意一个窗口的关闭窗口和下一个窗口。
并且,从数学上能够证明,对于一个确定的窗口,该确定的窗口的可见区域的关闭窗口是唯一的,该确定的窗口的下一个窗口也是唯一的。
本发明实施例在对阶梯频率流进行压缩的过程中,确定表征该阶梯频率流的参考数据点。
本发明实施例中,在S202中所生成的与第一元素A4对应的多个三元数组中,每个三元数组的第一项为该第一元素A4,每个三元数组的第二项与第三项可以认为是一条线段,即上述的生成线段。在S202中可以是基于上述所描述的扩展多边形,通过链表得到相应的线段。并且,可以认为,与第一元素A4对应的所多个三元数组的相应的线段可以构成目标分段线性函数。
具体地,扩展多边形用于表示所述多个线段所在的区域;在所述扩展多边形的基础上计算链表,其中,所述链表包括信息域C[k]以及指针域pred[k],所述信息域C[k]用于表示所述多个线段,所述指针域pred[k]用于表示所述信息域C[k]指向信息域C[pred[k]],k为不等于1的非负整数,每一个k的取值所对应的C[k]用于表示所述多个线段中的一个线段。
其中,构建扩展多边形的方式如前所述,具体地可参见图4中扩展多边形的构建方式,为避免重复,这里不再赘述。并且,可以理解,位于扩展多边形内部的任意线段均能够满足最大误差的要求。
具体地,上述链表中的信息域和指针域根据如下的表达式确定:
Figure BDA0001047415700000141
条件1为:k=0;
条件2为:k=3或者k≥5且cw(C[k-2])位于cw(nw(C[k-3]))的左侧,
对k=0,pred[0]为空,
对k≠0,若C[k]=cw(nw(C[k-3])),则pred[k]=k-3;
若C[k]=cw(C[k-2]),则pred[k]=k-2;
其中,w0为起始窗口,cw(·)表示关闭窗口,nw(·)表示下一个窗口。
本发明实施例中,可以采用
Figure BDA0001047415700000142
用于表示窗口之间的位置关系。具体地,
Figure BDA0001047415700000143
表示窗口w1位于窗口w2的左侧,且窗口w1和窗口w2不相交。并且,能够从数学上证明,若
Figure BDA0001047415700000144
那么也一定满足
Figure BDA0001047415700000145
可理解,若窗口w1上的每个点对应的时间小于或等于窗口w2上的每个点对应的时间,那么
Figure BDA0001047415700000146
相应地,上述的条件2也可以表示为:
k=3或者k≥5且
Figure BDA0001047415700000147
这样,能够在线的获取数据流中的数据点的过程中,在线地得到第一元素的阶梯频率流,在线地构建扩展多边形,并在线地确定链表。
可选地,该链表的表示可以如图7所示。其中,箭头表示指针域。
可选地,本发明实施例中,可以根据所述多个线段之间的指向关系,确定所述目标分段线性函数。
可选地,作为一个实施例,可以对所述链表进行剪枝(prune),以使得不同的k,pred[k]互不相等;根据所述剪枝以后的链表,确定所述目标分段线性函数。
这样,通过剪枝,可将上述的链表变为单向链表。也就是说,剪枝之后的链表为单向链表。
这里,限制了剪枝的规则,即:使得不同的k,pred[k]互不相等。这样能够从数学上证明,该剪枝之后的所确定的目标分段线性函数,对流数据进行分段线性近似所需的参数最少。其中目标分段线性函数是由多个线性函数所构成的。也就是说,通过设置剪枝的规则,能够保证目标分段线性函数的参数最少。相应地,可以理解,k可以表示除起始点和结束点之外的所需的参数的个数。C[k]可以表示使用k个参数时所能够到的最远的窗口。
可理解,本发明实施例中,可以在获取流数据的所有的数据点之后确定第一元素的阶梯频率流,然后进行剪枝处理,也可以是在线地获取数据点的过程中在线地确定第一元素的阶梯频率流,并进行剪枝处理。例如,可以在线地对小于k-4的所有对应的链表进行剪枝。
具体地,若任意一个k的pred[k]≠j,那么将(C[j],pred[j])从链表中删除。例如,如图8所示,如果没有任何一个箭头指向C[3],便将(C[3],pred[3])从链表中删除。
这样,链表中的C[k]经过剪枝之后变为单向链表。也就是说,剪枝之后,对于不同的k,pred[k]互不相等。
或者,可选地,作为一个实施例,所述链表还可包括计数域ref[k],用于表示所述信息域C[k]被指向的个数。其中,ref[k]为0或1或2。k为不等于1的非负整数。
具体地,
若pred[k+2]=k且pred[k+3]=k,则ref[k]=2;
若pred[k+2]=k且pred[k+3]≠k,则ref[k]=1;
若pred[k+2]≠k且pred[k+3]=k,则ref[k]=1;
若pred[k+2]≠k且pred[k+3]≠k,则ref[k]=0。
那么,进一步对链表进行剪枝的过程中,若ref[j]=0,则可以将C[j],pred[j],ref[j]从链表中删除,并同时更新ref[pred[j]],即将ref[pred[j]]减1。
例如,可以通过如下代码实现对链表的剪枝。如下的代码为:PRUNE(C[·],pred[·])。
Figure BDA0001047415700000161
如图8所示,其中C[5]和C[6]都不指向C[3],也就是ref[3]=0,此时,便将C[3],pred[3],ref[从链表中删除。由于C[3]指向C[0],因此在删除C[3],pred[3],ref[3]时,同时将ref[0]减1。
这样,在剪枝之后的链表中,每一项的ref[k]都等于1。
具体地,根据剪枝以后的链表确定目标分段线性函数,可以包括:将所述剪枝后的链表中的C[k]对应的生成线段作为所述多个线性函数,并由所述多个线性函数构成所述目标分段线性函数。
将剪枝后的链表称为单向链表,那么可确定单向链表中的每一个C[k]对应的生成线段,并将所有的生成线段组合构成目标分段线性函数。其中的每一个生成线段对应一个线性函数。
其中,确定单向链表中的每一个C[k]对应的生成线段可以采用如下的代码实现:EARLY-OUTPUT(C[·],pred[·])。
Figure BDA0001047415700000162
也就是说,将剪枝后的链表中的C[k]所表示的线段相应地延长,即可确定所述多个线性函数。
进一步地,可以根据得到的分段线性函数,确定三元数组的第二项和第三项。具体地,目标分段线性函数包括多个线性函数。所述多个线性函数中的每一个线性函数的自变量的取值范围为一个时间的闭区间。
根据每一个线性函数确定一个三元数组。可以根据多个线性函数一一对应地确定多个三元数组,从而可以得到第一元素的所有三元数组。
可选地,可以进而基于该多个三元数组构成与第一元素A4对应的三元数组的子集。与此类似地,可以得到与多个第一元素对应的多个子集。这里不在一一罗列。
可选地,作为另一例,如图9所示,S102可以包括:
S301,根据所述数据流建立M个四元组,所述M个四元组中的每个四元组的第一项为所述第一元素,第二项为截止当前时刻所述第一元素在所述数据流中出现的次数,第三项为基于所述数据流确定第四项的算法,所述第四项包括多个二元数组,每个二元数组的第一项为所述第一时刻以及所述第一次数,第二项为所述第二时刻以及所述第二次数。
其中,作为一例,该四元组的第三项可以为基于前述的阶梯频率流确定目标分段线性函数的算法。相应地,可以根据该四元组中的第三项确定四元组的第四项。
可选地,M个四元组可以根据每个四元组的第二项的大小进行排序。
可选地,该M的四元组的每一个四元组的第四项也可以为三元数组,即与第一项的第一元素对应的三元数组。
S302,根据所述M个四元组,生成所述三元数组的集合。
可选地,可以根据四元组的第一项和第四项生成三元数组的集合。
对于第一元素A4的四元组,所生成的三元数组的第一项为该第一元素A4,三元数组的第二项为二元数组的第一项,三元数组的第三项为二元数组的第二项。其中,二元数组为四元组的第四项。
可选地,基于第一元素的四元组所生成的三元数组为:集合中与该第一元素对应的三元数组的子集。
可选地,若该M的四元组的每一个四元组的第四项也可以为三元数组,则S302中可以直接输出该第四项。
具体地,S301可以包括:根据所述数据流中新获取的数据点,对所述M个四元组进行更新。
假设新获取的数据点的数据信息包括:该新获取的数据点的采集时刻、以及在该采集时刻采集到的第二元素。
作为一例,该更新可以包括:判断所述M个四元组中是否存在所述新获取的数据点的第二元素;如果所述M个四元组中的第一四元组的第一项为所述第二元素,将所述第一四元组进行更新,如果所述M个四元组中的第一项不存在所述第二元素,则将所述第四元素增加到所述M个四元组中的第二四元组。
其中,所述将所述第一四元组进行更新,包括:将所述第一四元组的第二项加一,更新为所述第二元素的新的频次;将所述新获取的数据点的采集时刻以及所述新的频次输入所述第三项的算法。
其中,将所述第二元素增加到所述M个四元组中的第二四元组,包括:确定第二四元组,并将该第二四元组进行更新。
如果在M个四元组中,第二项大于零的四元组的数量小于预设的阈值,则第二四元组为M个四元组中第二项等于零的四元组。如果在M个四元组中,第二项大于零的四元组的数量等于预设的阈值,则第二四元组为M个四元组中第二项最小的四元组。
具体地:如果在M个四元组中,第二项大于零的四元组的数量小于预设的阈值,将所述M个四元组中第二项等于零的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项更新为1,第三项包括由所述第二元素的采集时刻以及所述次数为1构成的数据点,第四项为空。
具体地:如果在M个四元组中,第二项大于零的四元组的数量等于预设的阈值,则根据所述M个四元组中第二项最小的四元组,输出对应的多个三元数组;并将所述M个四元组中第二项最小的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项加1更新为新的次数,第三项包括由所述第二元素的采集时刻以及所述新的次数构成的数据点,第四项为空。
可选地,如果在M个四元组中,第二项大于零的四元组的数量等于预设的阈值,并且M个四元组中第二项最小的四元组的第二项小于预定门限(例如为1或3),则可以将该M个四元组中第二项最小的四元组直接进行更新。即将其第一项更新为第二元素,将其第二项更新为新的次数,更新后的第三项包括由所述第二元素的采集时刻以及所述新的次数构成的数据点,更新后的第四项为空。
也就是说,在对第二项最小的四元组进行更新的过程中,如果第二项小于预定门限,可以不基于第二项最小的四元组存储其对应的三元数组,这样有可能使得最后存储的三元数组的集合中的第一元素的数量少于数据流中的元素的数量,从而能够进一步减少存储空间。
本发明后续实施例将通过链表L对S301进行较为详细的阐述。可以认为M个四元组是长度为M的链表。
本发明实施例定义了链表L,进一步地可以在S302中基于该链表L生成前述的三元数组的集合。其中,该链表L的最大长度为M。举例来说,M的值可以为
Figure BDA0001047415700000191
其中,
Figure BDA0001047415700000192
可以是预定义的值。例如,
Figure BDA0001047415700000193
其中,
Figure BDA0001047415700000194
表示上取整。
链表L中的每一项是一个四元组(e,g_e,apx,rec)。其中,e是元素空间的一个元素,元素空间为数据流中出现的元素的集合。g_e是到当前时刻为止元素e出现的频率。apx是一个线段生成器,该线段生成器用线段来记录元素的频率,并且一条线段可以记录一个元素不同时刻的频率。rec是一个数组,用来存储apx输出的线段。其中,链表L根据元素频率g_e从大到小的顺序将这些四元组排序。也就是说,假设链表L的任意一项的g_e不小于其后一项的g_e。
下面将较为详细地介绍,随着数据流中的新数据的来临,该链表L的更新过程。如图10所示,当数据流中有新的数据(ti,yi)来临时,执行以下步骤:
S401,检查元素yi是否存在于链表L的某个四元组中。
可选地,由于链表L中的项是按照元素的频率大小进行排序的,那么,可以将链表L中的四元组按照其元素建立一个索引,这样根据索引进行S401的查询过程,能够加快处理速度。其中,该索引可以是一个动态平衡二叉树,查询时间为
Figure BDA0001047415700000195
如果链表L中存在该元素yi,则执行S411,将该元素所在的四元组进行更新。假设链表L中的某一项(e,g_e,apx,rec),e=yi,则将该元素的频率增加1,即g_e=g_e+1,并据此更新该四元组(e,g_e,apx,rec)在链表L中的位置。具体地,这里的更新是指根据该链表L中的g_e的大小进行重新排序。进一步地,可以根据apx更新rec。具体地该线段生成过程后续再描述。
如果链表L中不存在该元素yi,也就是说,yi为一个新的元素,则执行S402。
S402,检查链表L的长度是否已经达到M。
可理解,S402为检查该链表L是否已经被填满。这里的链表的长度是指链表所包括项的数量。
如果该链表L的长度小于M,则执行S421,将该新的数据添加到该链表L中。此时,可以将该新来临的数据以e=yi,g_e=1添加到链表L的最后一位。假设该链表L原本有m项,即链表L中有m个元素及其频次,那么可以将yi作为第m+1个元素添加到该链表L中。进一步地,该添加的元素对应的apx=null,对应的rec是一个空的数组。
如果该链表L的长度已经达到M,即链表的长度等于M,则执行S403。
应理解,此处的“链表L的长度小于M”可以等同于上述的“在M个四元组中,第二项大于零的四元组的数量小于预设的阈值”。此处的“链表L的长度等于M”可以等同于上述的“在M个四元组中,第二项大于零的四元组的数量等于预设的阈值”。其中,预设的阈值等于M。
S403,将链表L的最后一项的元素替换为yi
由于链表L是按照g_e的大小进行降序排列的,可理解,链表L的最后一项即链表L的最后一个四元组,为M个四元组中第二项最小的四元组。
可选地,若链表L的最后一项的元素为e,其频次为g_e,则可以将该元素e替换为yi,即e→yi;并将频次加1,即g_e→g_e+1。
这里,新元素yi的频率被指定为被替换掉的元素的频率加1,这保证了高频元素链表里记录的元素频率一定不小于其真实频率。这样,能够确保所有的高频元素在后续都能被查询到。进一步地,可以为该新元素建立相应的线段生成器apx,具体地该线段生成过程后续再描述。
可见,基于该链表L,如果数据流中的元素e的频率大于或等于
Figure BDA0001047415700000201
那么该链表L中一定存在对应的四元组(e,g_e,apx,rec)。如果用f_e表示该元素e的真实频率,则满足
Figure BDA0001047415700000202
对于一个确定的元素e,其频率f随时间t的变化可以形成一个阶梯频率流,也就是说,元素e的频率随时间的变化也是一个数据流{(t1,f1),(t2,f2),…}。因此,可以用线段来逼近表示高频元素随时间变化的频率。具体地,若架设在t时刻的绝对误差
Figure BDA0001047415700000211
那么可以实时地用一个分段线性函数近似该阶梯频率流,使得在任何时刻t,近似误差都小于
Figure BDA0001047415700000212
作为一例,可以通过前述的确定目标分段线性函数的方法得到该分段线性函数。或者,可以使用J.O.Rourke在“An on-line algorithm for fitting straight linesbetween data ranges”中所描述的方法得到该分段线性函数。或者,可以通过其他类似的方法得到该分段线性函数。本发明对此不限定。
上述所说的分段线性函数生成的方法可以称为线段生成算法,即链表L中的apx。在四元组(e,g_e,apx,rec)中,apx可以不断地生成线段,而rec为数组,用于存储所生成的线段。因此rec也被称为线段数组。可选地,rec的每一项可以为一个二元数组(p,q),或者,可选地,rec的每一项可以为一个三元数组(e,p,q),其中,e表示生成这条线段对应的四元组中的元素,p和q表示其中的一条线段的两个端点。其中,端点p和q的横坐标为时间,纵坐标为频率。
下面将结合上述S401-S403,对apx以及rec的更新过程进行较为详细的描述。
1、当一个新的四元组(e,g_e,apx,rec)被添加到链表L中时,其中,e和g_e如上述S402所述。此时,rec是一个空的数组。apx构造如下:
如果
Figure BDA0001047415700000213
则立即为元素e新建一个线段生成器,存入apx;
否则,apx=null。
2、当链表L中的一个四元组(e,g_e,apx,rec)中的(e,g_e)需要被替换为(yi,g_e+1)时,如上述S403所述。则相应地新的四元组为(yi,g_e+1,apx’,rec)。而线段生成器apx的更新如下:
如果apx!=null时,立即结束apx,并输出对应线段pq(其中p,q为该线段的起点和终点),即将(e,p,q)顺序存入rec。最后设置apx’=null。
否则,直接设置apx’=null。
3、当链表L中的一个四元组(e,g_e,apx,rec)中的频率g_e发生跳变(即元素e的频率被更新)时,进行如下更新:
当四元组中的频率在时刻t跳变为g_e后,即在t时刻产生了一个频率变化,可以认为是阶梯频率流中进入了一个新的数据点(t,g_e)。那么,
a).如果apx=null(例如该元素是一个新元素)且
Figure BDA0001047415700000221
(即该元素是一个高频元素。这是可能的,因为每次高频链表的最后一个元素被替换是其频率被计算道新元素的频率当中),新建一个线段生成器apx,并将新的频率数据点(t,g_e)喂给元素e的线段生成器apx,让其调整线段去逼近(t,g_e)。
b).如果apx!=null,将(t,g_e)喂给apx,使其进行更新:
I.当apx仍可以近似(t,g_e),我们什么都不做。
II.当apx无法近似(t,g_e)时,让apx输出一条线段pq来近似(t,g_e)之前的接受的数据,并将线段(e,p,q)顺序存入数组rec中。
i.如果
Figure BDA0001047415700000222
则重新建立一个线段生成模块apx,并让其更新点(t,g_e);
ii.否则,我们设置apx=null。
c).否则,什么都不做。
本发明实施例中,可以将线段生成模块apx理解为前述的确定目标分段线性函数的方法中的可见区域,相应地,基于线段生成模块apx所确定的rec可以为可见区域的生成线段。即rec中的任意一个二元数组包括生成线段的起点,以及生成线段的终点。此时也可以将所有四元组中的rec的集合称为线段存储器。
相应地,可以理解,apx=null是指即将开始一个新的数据窗口。例如可以是上述S400中新来临的元素,或者可以是确定了上一个可见区域的关闭窗口即将开始下一个数据窗口。
可见,基于上述的链表L,可以获取链表L的每个四元组中的rec,并基于该rec的集合生成三元数组的集合。
对于链表L中的一个四元组(e,g_e,apx,rec),线段数组rec可以为二元数组,该二元数组的第一项和第二项可以组成按照时间先后顺序排列的一系列相互不重叠的线段。
应注意,尽管本发明实施例中四元组的第四项为二元数组,本领域技术人员可理解,该四元组的第四项也可以为三元数组,其中,该三元数组的第一项为第一元素,第二项和第三项为上述实施例中的二元数组的两项。也就是说,链表L中的线段数组rec可以为三元数组,该三元数组的第一项均为e,第二项和第三项可以组成按照时间先后顺序排列的一系列相互不重叠的线段。
进一步地,作为一例,在S103中,可以根据与任意一个第一元素对应的所有的三元数组,确定该任意一个第一元素在该数据流中的变化规律。
这样,可以判断该第一元素在该数据流中何时曾出现过异常。从而能够实现对该数据流的全局监测。
可见,本发明实施例中,通过存储三元数组的集合,能够得到该数据流的历史变化规律,从而能够实现对数据流的全局监测。
具体地,S103可以包括:获取任意一个所述第一元素;获取所述集合中与所述任意一个所述第一元素对应的多个三元数组,其中所述与所述任意一个所述第一元素对应的多个三元数组中的每一个三元数组的第一项均为所述任意一个所述第一元素;根据所述与所述任意一个所述第一元素对应的多个三元数组,确定所述任意一个所述第一元素在所述数据流中出现的次数随时间的变化规律。
其中,与所述任意一个所述第一元素对应的多个三元数组可以为与所述任意一个所述第一元素对应的所有三元数组或部分三元数组。
举例来说,可以包括:获取第一元素A3;并获取该三元数组的集合中与第一元素A3对应的M1个三元数组,其中,该M1个三元数组中的每一个三元数组的第一项均为第一元素A3;根据M1个三元数组,确定第一元素A3在所述数据流中出现的次数随时间的变化规律。
具体地,根据M1个三元数组的第二项与第三项,确定第一元素A3在所述数据流中出现的次数随时间的变化规律。
其中,M1个三元数组可以为该集合中与第一元素A3对应的所有三元数组,或者,M1个三元数组可以为该集合中与第一元素A3对应的部分三元数组。
假设该集合中与第一元素A3对应的所有三元数组包括M0个三元数组,即该集合中有且仅有M0个三元数组的第一项为第一元素A3。那么,此处的M1可以小于或等于M0。可理解,M0和M1均为正整数。
若M1=M0,则可以较为精确地确定与第一元素A3对应的变化规律;若M1<M0,则可以更快速地确定与第一元素A3对应的变化规律。
本发明实施例对从M0个三元数组中选择M1个三元数组的方式不作限定。例如,可以将M0个三元数组按照第一时刻的大小进行顺序排列,并将该M0个三元数组中位于奇数(或偶数)位的三元数组作为M1个三元数组。
另外,可理解,若三元数组的集合包括与多个第一元素一一对应的多个子集。那么,S103可以包括:获取第一元素A3;并获取与第一元素A3对应的子集,其中,该子集中的每一个三元数组的第一项均为第一元素A3;根据该子集,确定第一元素A3在所述数据流中出现的次数随时间的变化规律。
其中,可以根据该子集中的所有三元数组(如M0个三元数组),确定该变化规律。或者,可以根据该子集中的部分三元数组(如M1个三元数组),确定该变化规律。
同样地,M0和M1均为正整数。若M1=M0,则可以较为精确地确定与第一元素A3对应的变化规律;若M1<M0,则可以更快速地确定与第一元素A3对应的变化规律。
本发明实施例对从M0个三元数组中选择M1个三元数组的方式不作限定。例如,可以将M0个三元数组按照第一时刻的大小进行顺序排列,并将该M0个三元数组中位于奇数(或偶数)位的三元数组作为M1个三元数组。
进一步地,作为另一例,在S103中,可以确定特定时刻的高频元素。
寻找数据流中的高频数据是信号检测的经典问题,其中,高频数据也称为高频元素(heavy hitter)。在实际中有重要应用,如网络监控、病毒检测、趋势预测、异常分析等。随着互联网、移动终端、采集设备的流行及普及,各种与用户相关的记录(位置、行为、社交、健康)、各种科学数据(设备告警、网络流量、天气预报、空气质量、股票价格)等大规模数据被快速收集,挖掘这些高速的大规模数据中的高频元素对提高相关服务的关键绩效指标(Key Performance Indicators,KPI)具有重要指导作用。
其中,高频元素是指数据流中出现的次数高于一定频率的元素。对于数据流S={(t1,y1),(t2,y2),…,(ti,yi),…}。若指定一个高频级别为
Figure BDA0001047415700000241
其中
Figure BDA0001047415700000242
那么,在该数据流S中,假设当前时刻该数据流S中的元素数量为N个,则当且仅当v在该N个元素的数据流中的频率(即出现的次数)大于或等于
Figure BDA0001047415700000243
时,元素v是当前时刻的高频元素。
在通常应用中,一般只考虑当前时刻的高频元素;历史时刻的高频元素如果当时没有及时记录下来,当前时刻无法查询,造成信息损失。比如我们可以通过观察新浪微博排名前100的热词来了解当下社会热点问题;如果我们和历史某个时刻(比如一年前)的社会热点问题作比较,则需要了解一年前排名前100的热词。那么就需要全局检测高频元素的技术。
全局检测高频元素的技术是指:对给定一个数据流S,指定的高频级别
Figure BDA0001047415700000254
和任给的查询时刻t(当前时刻或之前),回答在查询时刻t所有的高频元素。
显然,由于查询时刻t可以是之前任意的一个时刻,这赋予了该技术尤其重要的意义。它允许我们,可以近似地知道历史上出现过的所有热词的频率变化曲线。正是由于这样的时间全局性的特征,该技术被称为全局监测的技术。在当前时刻查询以往任何时刻(包括当前时刻)的高频元素,或简称全局检测高频元素,是近年随着大数据的出现才兴起的问题。
可见,全局检测高频元素需要知道“每个时刻”的高频元素及其频率,从而需要巨大的空间开销。因此实际的方案将是在允许的误差范围内近似地确定某个时刻的高频元素。最关键的挑战是如何设计一种在空间和时间上高效的数据流的压缩和储存方式,使得其任意时刻的高频元素信息均被保留,并且可以被高效查询。
一种思路是采用基于计数器的方法来计算当前的高频元素;每当一个计数器变化达到某个阈值时,将该计数器的数值和变化时刻一起存储起来。但是,由于计数器每变化一定范围就需要记录一个值,从而需要记录的数据量很大,存储开销随时间线性增长。
本发明实施例提出了一个高效的全局检测高频元素的技术方案,如上述实施例所示,通过三元数组的集合,用于存储数据流中的任意时刻的高频元素信息,能够使得在当前时刻,可以查询之前任意时刻的高频元素。并且,该方法的空间开销低,易于实现。
本发明实施例中,假设数据流为S={(t1,y1),(t2,y2),…,(ti,yi),…},其中ti表示第i个数据点的来临时刻(即采集时刻),yi表示第i个数据点的元素。假设用户指定的高频阈值参数为
Figure BDA0001047415700000251
其中
Figure BDA0001047415700000252
那么,一个元素在t时刻被认为是一个高频元素,是指,该元素截止t时刻出现的次数不小于
Figure BDA0001047415700000253
其中,N(t)表示截止t时刻的数据点的总数,也就是说,N(t)表示截止t时刻的数据流的长度。或者,可以说,N(t)表示截止t时刻的数据流中的所有数据点的数量。
具体地,S103可以包括:获取对高频元素的查询指令,所述查询指令包括查询时刻和查询频率;确定截止所述查询时刻时所述数据流中的所有数据点的数量;根据所述查询时刻,从所述集合中获取第一三元数组,其中,所述查询时刻位于所述第一三元数组的第一时刻与第二时刻之间;根据所述第一三元数组,确定与所述查询时刻对应的第四次数;如果所述第四次数大于或等于所述查询频率与所述数量的乘积,则确定与所述第一三元数组对应的第一元素为所述查询时刻的高频元素。
应理解,这里的查询时刻可以是任意时刻,例如可以是当前时刻,即该数据流的最后一个数据点的采集时刻;或者,例如可以为当前时刻之前的任一时刻。本发明对此不限定。应理解,这里的查询频率为小于1的正数。可理解,某个第一元素为高频元素,表明截止查询时刻,该第一元素在数据流中的概率大于或等于该查询频率。关于高频元素的理解将会在本说明书后续部分进行描述。
其中,确定截止查询时刻时该数据流中的所有数据点的数量,可以在从所述集合中获取第一三元数组之后执行,该步骤包括:根据与查询时刻相关的所有的第一三元数组,确定数据点的数量。
具体地,可以将所有个相关的第一三元数组的第三项的第二次数求和,并将该和作为数据点的数量。或者,可以将所有相关的三元数组的第二项的第一次数与第二次数求和后取平均,并将平均后的结果作为数据点的数量。
本发明实施例中,可以假设截止查询时刻,该数据流中的所有数据点的数量为N(T)。
可选地,如果S102中的集合包括与多个第一元素一一对应的多个子集,那么,根据所述查询时刻,从所述集合中获取第一三元数组,可以包括:获取多个第一三元数组,该多个第一三元数组的数量可以等于或小于多个子集的数量。也就是说,每个子集中最多可以获取一个第一三元数组。
如前所述,若假设该集合中的多个第一元素的数量为K1,则此处所获取的第一三元数组的数量可以等于或小于K1。一般地,该数量小于K1。
其中,根据所述第一三元数组,确定与所述查询时刻对应的第四次数,可以包括:根据第一三元数组的第二项与第三项,计算该第四次数。
举例来说,假设查询时刻表示为T,查询频率表示为
Figure BDA0001047415700000261
截止查询时刻T时数据流中的所有数据点的数量为N(T)。根据查询时刻所确定的某一个第一三元数组为(e,(Ti,fi),(Tj,fj))。该第一三元数组的第一项为e,第二项为(Ti,fi),第三项为(Tj,fj);即e表示第一元素,Ti表示第一时刻,Tj表示第二时刻,fi表示第一次数,fj表示第二次数,且满足Ti<T≤Tj或Ti≤T<Tj。
根据该第一三元数组,可以确定在查询时刻T,该第一元素e的第四次数。例如,可以确定第四次数为
Figure BDA0001047415700000271
这里所确定的第四次数可以为整数或非整数。
进一步地,可以将第四次数(记为F01)与查询频率与数量的乘积(记为
Figure BDA0001047415700000272
进行比较。或者,可以将第四次数进行四舍五入后的整数(记为F11)与查询频率与数量的乘积进行四舍五入后的整数(记为F12)进行比较。或者,可以将第四次数(记为F01)与查询频率与数量的乘积进行四舍五入后的整数(记为F12)进行比较。或者,可以将第四次数进行四舍五入后的整数(记为F11)与查询频率与数量的乘积(记为F02)进行比较。
如果比较的结果为F01大于或等于F02,或比较的结果为F11大于或等于F12,或比较的结果为F01大于或等于F12,或比较的结果为F11大于或等于F02,则说明该第一元素e为查询时刻T的高频元素。
据此,可以根据多个第一三元数组,得到在该查询时刻满足查询频率的所有的高频元素。
例如,用户需要查询的指定时刻为T,T可以是当前时刻,也可以是在当前时刻之前的任一时刻。并且可以得到截止查询时刻T时数据流中的所有数据点的数量为N(T)。
例如,查询频率可以为
Figure BDA0001047415700000273
一般地,可以满足
Figure BDA0001047415700000274
例如,
Figure BDA0001047415700000275
可选地,可以在线段存储器(即三元数组的集合)中,搜索与查询时刻T对应的线段数组。本发明实施例中,可以使用二分查找,定位查询时刻T对应的线段数组。
可理解,此时,可以定位到多个三元数组。例如,可以在三元数组的集合中,从每个子集中找到一个三元数组,从而从与多个第一元素一一对应的多个子集中找到多个三元数组。
假设其中的一个三元数组为第一三元数组,表示为(e,(Ti,fi),(Tj,fj)),且满足Ti≤T≤Tj。并且,一般还满足Ti<Tj,fi<fj。
基于所找到的三元数组,可以分别确定在该查询时刻T对应的第一元素在数据流中出现的次数。从而可以判断得出对应的第一元素是否为高频元素。
以第一三元数组为例,如果
Figure BDA0001047415700000276
则可以认为该第一三元数组的第一项的元素e不是查询时刻T的高频元素。如果
Figure BDA0001047415700000277
则可以先计算在查询时刻T该元素e的第三次数。例如,可以确定第三次数为
Figure BDA0001047415700000281
将上述确定的第三次数进行四舍五入后的整数,与
Figure BDA0001047415700000282
进行比较。如果该四舍五入后的整数大于或等于
Figure BDA0001047415700000283
说明该第一元素e为查询时刻T的高频元素。
据此,可以从三元数组的集合中类似地获取所有的满足该查询频率的三元数组,进而能够得到在该查询时刻满足查询频率的所有的高频元素。
如果
Figure BDA0001047415700000284
根据上述链路L的建立过程,可以理解,若在查询时刻T实际的高频元素的数量为N2,那么本发明实施例所得到的高频元素的数量不小于N2,且所查询到的高频元素包括实际应该包括的N2个高频元素。
举例来说,假设实际的高频元素集合为{a,b,c},本发明实施例所确定的高频元素集合可能为{a,a1,b,b1,c}。
即本发明实施例中能够查询到所有的高频元素,即recall=1。但是同时,本发明实施例可能将不是高频元素的数据确定为高频元素,即precision<1。
图10是本发明实施例的一个数据处理的装置的结构框图。该装置10包括获取单元110、生成单元120和处理单元130。
获取单元110,用于接收数据流,所述数据流包括多个数据点,每个数据点的数据信息包括采集所述数据点的采集时刻以及在所述采集时刻所采集的元素;
生成单元120,用于根据所述获取单元110接收的所述数据流生成三元数组的集合,所述集合中的每个三元数组均包括三项,其中第一项为所述数据流中的第一元素,第二项包括所述第一元素在所述数据流中出现的第一时刻以及与所述第一时刻对应的第一次数,第三项包括所述第一元素在所述数据流中出现的第二时刻以及与所述第二时刻对应的第二次数;
处理单元130,用于根据所述生成单元120生成的所述三元数组的集合对所述数据流进行数据处理。
可选地,作为一个实施例,生成单元120具体用于:根据所述数据流,建立与所述多个第一元素一一对应的多个阶梯频率流,其中,所述多个阶梯频率流中的每个阶梯频率流包括多个第一元素数据点,每个第一元素数据点包括第三时刻以及第三次数,所述第三时刻为所述第一元素在所述数据流中出现的时刻,所述第三次数为截止所述第三时刻所述第一元素在所述数据流中出现的次数;根据与所述多个第一元素一一对应的多个阶梯频率流,生成所述三元数组的集合。
其中的阶梯频率流也是一种数据流,其所包括的第一元素数据点的数量远远小于数据流中的数据点的数量。
可选地,作为另一个实施例,生成单元120具体用于:根据所述数据流建立M个四元组,所述M个四元组中的每个四元组的第一项为所述第一元素,第二项为截止当前时刻所述第一元素在所述数据流中出现的次数,第三项为基于所述数据流确定第四项的算法,所述第四项包括多个二元数组,每个二元数组的第一项为所述第一时刻以及所述第一次数,第二项为所述第二时刻以及所述第二次数;根据所述M个四元组,生成所述三元数组的集合。
可选地,生成单元120具体用于:根据所述数据流中新获取的数据点,对所述M个四元组进行更新。
可选地,生成单元120对所述M个四元组进行更新,具体用于:判断所述M个四元组中是否存在所述新获取的数据点的第二元素;如果所述M个四元组中的第一四元组的第一项为所述第二元素,将所述第一四元组进行更新,如果所述M个四元组中的第一项均不存在所述第二元素,则将所述第二元素增加到所述M个四元组中的第二四元组。
其中,生成单元120将所述第一四元组进行更新,具体用于:将所述第一四元组的第二项加一,更新为所述第二元素的新的次数;将所述新获取的数据点的采集时刻以及所述新的次数输入所述第三项的算法。
其中,生成单元120将所述第二元素增加到所述M个四元组中的第二四元组,具体用于:如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项等于零的四元组。如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项最小的四元组。
如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则所述生成单元120更新所述第二四元组,包括:将所述M个四元组中第二项等于零的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项更新为1,第三项包括由所述第二元素的采集时刻以及所述次数为1构成的数据点,第四项为空。
如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则所述生成单元120更新所述第二四元组,包括:根据所述M个四元组中第二项最小的四元组,输出对应的多个三元数组;将所述M个四元组中第二项最小的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项加1更新为新的次数,第三项包括由所述第二元素的采集时刻以及所述新的次数构成的数据点,第四项为空。
可选地,所述M个四元组按照每个四元组的第二项的大小进行排序。这样,能够在后续进行数据处理的过程中,能够快速方便地进行查找定位。
可选地,作为一个实施例,所述获取单元110,还用于获取对高频元素的查询指令,所述查询指令包括查询时刻和查询频率。所述处理单元130,还用于确定截止所述查询时刻时所述数据流中的所有数据点的数量。所述获取单元110,还用于根据所述查询时刻,从所述集合中获取第一三元数组,其中,所述查询时刻位于所述第一三元数组的第一时刻与第二时刻之间。所述处理单元130,还用于根据所述第一三元数组,确定与所述查询时刻对应的第四次数;如果所述第四次数大于或等于所述查询频率与所述数量的乘积,则确定与所述第一三元数组对应的第一元素为所述查询时刻的高频元素。这样,能够根据查询指令,基于三元数组的集合,得到在任意查询时刻满足查询频率的数据流中的高频元素。
可选地,作为另一个实施例,所述获取单元110,还用于获取任意一个所述第一元素,还用于获取所述集合中与所述任意一个所述第一元素对应的多个第二三元数组,其中所述多个第二三元数组中的每一个第二三元数组的第一项均为所述任意一个所述第一元素。所述处理单元130,还用于根据所述多个第二三元数组,确定所述任意一个所述第一元素在所述数据流中出现的次数随时间的变化规律。
这样,可以根据三元数组的集合,得到其中任意一个第一元素在数据流中的出现频率的变化规律,从而能够方便地实现对数据流的全局诊断等。
应注意,本发明实施例中,获取单元110可以由接收器实现,生成单元120和处理单元130可以由处理器实现,如图12所示,该数据处理的装置20可以包括处理器210、收发器220和存储器230。其中,收发器220可以从其他的设备或装置能接收数据流;存储器230可以用于存储处理器210执行的代码等,存储器230还可以用于存储三元数组的集合等。
该装置20中的各个组件通过总线系统240耦合在一起,其中总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
图11所示的装置10或图12所示的装置20能够实现前述图1至图10的方法实施例中的数据处理的各个过程,为避免重复,这里不再赘述。
可以理解,本发明实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本发明实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (24)

1.一种数据处理的方法,其特征在于,包括:
接收数据流,所述数据流包括多个数据点,每个数据点的数据信息包括采集所述数据点的采集时刻以及在所述采集时刻所采集的元素;
根据所述数据流生成三元数组的集合,所述集合中的每个三元数组均包括三项,其中第一项为所述数据流中的第一元素,第二项包括所述第一元素在所述数据流中出现的第一时刻以及与所述第一时刻对应的第一次数,第三项包括所述第一元素在所述数据流中出现的第二时刻以及与所述第二时刻对应的第二次数,其中,所述第二时刻晚于所述第一时刻,所述第一次数用于表示所述第一元素截止到所述第一时刻在所述数据流中出现的次数,所述第二次数用于表示所述第一元素截止到所述第二时刻在所述数据流中出现的次数;
根据所述三元数组的集合对所述数据流进行数据处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据流生成三元数组的集合,包括:
根据所述数据流,建立与所述多个第一元素一一对应的多个阶梯频率流,其中,所述多个阶梯频率流中的每个阶梯频率流包括多个第一元素数据点,每个第一元素数据点包括第三时刻以及第三次数,所述第三时刻为所述第一元素在所述数据流中出现的时刻,所述第三次数为截止所述第三时刻所述第一元素在所述数据流中出现的次数;
根据与所述多个第一元素一一对应的多个阶梯频率流,生成所述三元数组的集合。
3.根据权利要求1所述的方法,其特征在于,所述根据所述数据流生成三元数组的集合,包括:
根据所述数据流建立M个四元组,所述M个四元组中的每个四元组的第一项为所述第一元素,第二项为截止当前时刻所述第一元素在所述数据流中出现的次数,第三项为基于所述数据流确定第四项的算法,所述第四项包括多个二元数组,每个二元数组的第一项为所述第一时刻以及所述第一次数,第二项为所述第二时刻以及所述第二次数;
根据所述M个四元组,生成所述三元数组的集合。
4.根据权利要求3所述的方法,其特征在于,所述根据所述数据流建立M个四元组,包括:
根据所述数据流中新获取的数据点,对所述M个四元组进行更新。
5.根据权利要求4所述的方法,其特征在于,所述根据所述数据流中新获取的数据点,对所述M个四元组进行更新,包括:
判断所述M个四元组中是否存在所述新获取的数据点的第二元素;
如果所述M个四元组中的第一四元组的第一项为所述第二元素,将所述第一四元组进行更新,
如果所述M个四元组中的第一项均不存在所述第二元素,则将所述第二元素增加到所述M个四元组中的第二四元组。
6.根据权利要求5所述的方法,其特征在于,所述将所述第一四元组进行更新,包括:
将所述第一四元组的第二项加一,更新为所述第二元素的新的次数;
将所述新获取的数据点的采集时刻以及所述新的次数输入所述第三项的算法。
7.根据权利要求5所述的方法,其特征在于,所述将所述第二元素增加到所述M个四元组中的第二四元组,包括:
如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项等于零的四元组,
如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项最小的四元组。
8.根据权利要求7所述的方法,其特征在于,如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项等于零的四元组,包括:
将所述M个四元组中第二项等于零的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项更新为1,第三项包括由所述第二元素的采集时刻以及所述次数为1构成的数据点,第四项为空。
9.根据权利要求7所述的方法,其特征在于,如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项最小的四元组,包括:
根据所述M个四元组中第二项最小的四元组,输出对应的多个三元数组;
将所述M个四元组中第二项最小的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项加1更新为新的次数,第三项包括由所述第二元素的采集时刻以及所述新的次数构成的数据点,第四项为空。
10.根据权利要求3所述的方法,其特征在于,所述M个四元组按照每个四元组的第二项的大小进行排序。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述根据所述三元数组的集合对所述数据流进行数据处理,包括:
获取对高频元素的查询指令,所述查询指令包括查询时刻和查询频率;
确定截止所述查询时刻时所述数据流中的所有数据点的数量;
根据所述查询时刻,从所述集合中获取第一三元数组,其中,所述查询时刻位于所述第一三元数组的第一时刻与第二时刻之间;
根据所述第一三元数组,确定与所述查询时刻对应的第四次数;
如果所述第四次数大于或等于所述查询频率与所述数量的乘积,则确定与所述第一三元数组对应的第一元素为所述查询时刻的高频元素。
12.根据权利要求1至10任一项所述的方法,其特征在于,所述根据所述三元数组的集合对所述数据流进行数据处理,包括:
获取任意一个所述第一元素;
获取所述集合中与所述任意一个所述第一元素对应的多个第二三元数组,其中所述多个第二三元数组中的每一个第二三元数组的第一项均为所述任意一个所述第一元素;
根据所述多个第二三元数组,确定所述任意一个所述第一元素在所述数据流中出现的次数随时间的变化规律。
13.一种数据处理的装置,其特征在于,包括:
获取单元,用于接收数据流,所述数据流包括多个数据点,每个数据点的数据信息包括采集所述数据点的采集时刻以及在所述采集时刻所采集的元素;
生成单元,用于根据所述获取单元接收的所述数据流生成三元数组的集合,所述集合中的每个三元数组均包括三项,其中第一项为所述数据流中的第一元素,第二项包括所述第一元素在所述数据流中出现的第一时刻以及与所述第一时刻对应的第一次数,第三项包括所述第一元素在所述数据流中出现的第二时刻以及与所述第二时刻对应的第二次数,其中,所述第二时刻晚于所述第一时刻,所述第一次数用于表示所述第一元素截止到所述第一时刻在所述数据流中出现的次数,所述第二次数用于表示所述第一元素截止到所述第二时刻在所述数据流中出现的次数;
处理单元,用于根据所述生成单元生成的所述三元数组的集合对所述数据流进行数据处理。
14.根据权利要求13所述的装置,其特征在于,所述生成单元,具体用于:
根据所述数据流,建立与所述多个第一元素一一对应的多个阶梯频率流,其中,所述多个阶梯频率流中的每个阶梯频率流包括多个第一元素数据点,每个第一元素数据点包括第三时刻以及第三次数,所述第三时刻为所述第一元素在所述数据流中出现的时刻,所述第三次数为截止所述第三时刻所述第一元素在所述数据流中出现的次数;
根据与所述多个第一元素一一对应的多个阶梯频率流,生成所述三元数组的集合。
15.根据权利要求13所述的装置,其特征在于,所述生成单元,具体用于:
根据所述数据流建立M个四元组,所述M个四元组中的每个四元组的第一项为所述第一元素,第二项为截止当前时刻所述第一元素在所述数据流中出现的次数,第三项为基于所述数据流确定第四项的算法,所述第四项包括多个二元数组,每个二元数组的第一项为所述第一时刻以及所述第一次数,第二项为所述第二时刻以及所述第二次数;
根据所述M个四元组,生成所述三元数组的集合。
16.根据权利要求15所述的装置,其特征在于,所述生成单元,具体用于:
根据所述数据流中新获取的数据点,对所述M个四元组进行更新。
17.根据权利要求16所述的装置,其特征在于,所述生成单元,具体用于:
判断所述M个四元组中是否存在所述新获取的数据点的第二元素;
如果所述M个四元组中的第一四元组的第一项为所述第二元素,将所述第一四元组进行更新,
如果所述M个四元组中的第一项均不存在所述第二元素,则将所述第二元素增加到所述M个四元组中的第二四元组。
18.根据权利要求17所述的装置,其特征在于,所述生成单元将所述第一四元组进行更新,具体用于:
将所述第一四元组的第二项加一,更新为所述第二元素的新的次数;
将所述新获取的数据点的采集时刻以及所述新的次数输入所述第三项的算法。
19.根据权利要求17所述的装置,其特征在于,所述生成单元将所述第二元素增加到所述M个四元组中的第二四元组,具体用于:
如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项等于零的四元组,
如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则更新所述第二四元组,其中所述第二四元组为所述M个四元组中第二项最小的四元组。
20.根据权利要求19所述的装置,其特征在于,如果在所述M个四元组中,其中第二项大于零的四元组的数量小于预设的阈值,则所述生成单元更新所述第二四元组,包括:
将所述M个四元组中第二项等于零的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项更新为1,第三项包括由所述第二元素的采集时刻以及所述次数为1构成的数据点,第四项为空。
21.根据权利要求19所述的装置,其特征在于,如果在所述M个四元组中,其中第二项大于零的四元组的数量等于预设的阈值,则所述生成单元更新所述第二四元组,包括:
根据所述M个四元组中第二项最小的四元组,输出对应的多个三元数组;
将所述M个四元组中第二项最小的四元组作为所述第二四元组,且将所述第二四元组的第一项更新为所述第二元素,将第二项加1更新为新的次数,第三项包括由所述第二元素的采集时刻以及所述新的次数构成的数据点,第四项为空。
22.根据权利要求15所述的装置,其特征在于,所述M个四元组按照每个四元组的第二项的大小进行排序。
23.根据权利要求13至22任一项所述的装置,其特征在于,
所述获取单元,还用于获取对高频元素的查询指令,所述查询指令包括查询时刻和查询频率;
所述处理单元,还用于确定截止所述查询时刻时所述数据流中的所有数据点的数量;
所述获取单元,还用于根据所述查询时刻,从所述集合中获取第一三元数组,其中,所述查询时刻位于所述第一三元数组的第一时刻与第二时刻之间;
所述处理单元,还用于根据所述第一三元数组,确定与所述查询时刻对应的第四次数;如果所述第四次数大于或等于所述查询频率与所述数量的乘积,则确定与所述第一三元数组对应的第一元素为所述查询时刻的高频元素。
24.根据权利要求13至22任一项所述的装置,其特征在于,
所述获取单元,还用于获取任意一个所述第一元素;
所述获取单元,还用于获取所述集合中与所述任意一个所述第一元素对应的多个第二三元数组,其中所述多个第二三元数组中的每一个第二三元数组的第一项均为所述任意一个所述第一元素;
所述处理单元,还用于根据所述多个第二三元数组,确定所述任意一个所述第一元素在所述数据流中出现的次数随时间的变化规律。
CN201610548411.3A 2016-07-12 2016-07-12 数据处理的方法及装置 Active CN107612765B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201610548411.3A CN107612765B (zh) 2016-07-12 2016-07-12 数据处理的方法及装置
EP17826801.7A EP3474494B1 (en) 2016-07-12 2017-04-07 Data processing method and device
PCT/CN2017/079781 WO2018010462A1 (zh) 2016-07-12 2017-04-07 数据处理的方法及装置
US16/245,717 US11005737B2 (en) 2016-07-12 2019-01-11 Data processing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610548411.3A CN107612765B (zh) 2016-07-12 2016-07-12 数据处理的方法及装置

Publications (2)

Publication Number Publication Date
CN107612765A CN107612765A (zh) 2018-01-19
CN107612765B true CN107612765B (zh) 2020-12-25

Family

ID=60952474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610548411.3A Active CN107612765B (zh) 2016-07-12 2016-07-12 数据处理的方法及装置

Country Status (4)

Country Link
US (1) US11005737B2 (zh)
EP (1) EP3474494B1 (zh)
CN (1) CN107612765B (zh)
WO (1) WO2018010462A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920708B (zh) * 2018-07-20 2021-04-27 新华三技术有限公司 一种数据处理方法及装置
CN110955529B (zh) * 2020-02-13 2020-10-02 北京一流科技有限公司 内存资源静态部署系统及方法
CN111782709A (zh) * 2020-06-30 2020-10-16 北京百度网讯科技有限公司 异常数据确定方法和装置
CN112632151B (zh) * 2020-12-25 2023-02-10 南京邮电大学 一种基于二分过滤的移动对象传染行为挖掘方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1301462A (zh) * 1998-05-20 2001-06-27 麦克罗维西恩公司 用于有选择地进行数据块处理的方法及装置
US7747465B2 (en) * 2000-03-13 2010-06-29 Intellions, Inc. Determining the effectiveness of internet advertising
CN102509062A (zh) * 2011-11-14 2012-06-20 无锡南理工科技发展有限公司 一种基于滑动窗口的rfid数据流多标签清洗方法
US8339974B1 (en) * 2005-06-22 2012-12-25 Sprint Communications Company L.P. Method and system for detecting and mitigating RTP-based denial of service attacks
US8477648B2 (en) * 2010-02-16 2013-07-02 Vss Monitoring, Inc. Systems, apparatus, and methods for monitoring network capacity
CN103970602A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向x86多核处理器的数据流程序调度方法
WO2016046929A1 (ja) * 2014-09-25 2016-03-31 株式会社日立製作所 データ集積装置、及び、データ集積方法
CN105680868A (zh) * 2014-11-17 2016-06-15 华为技术有限公司 压缩流数据的方法及设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738349B1 (en) * 2000-03-01 2004-05-18 Tektronix, Inc. Non-intrusive measurement of end-to-end network properties
CN101496017A (zh) * 2006-07-28 2009-07-29 皇家飞利浦电子股份有限公司 用于个人健康系统的分布式共享数据空间
US7911975B2 (en) * 2008-08-26 2011-03-22 International Business Machines Corporation System and method for network flow traffic rate encoding
CN102722542B (zh) * 2012-05-23 2016-07-27 无锡成电科大科技发展有限公司 一种资源描述框架图模式匹配方法
EP2880818A1 (en) * 2012-08-02 2015-06-10 Telefonaktiebolaget L M Ericsson (Publ) Manipulation of streams of monitoring data
WO2014145153A2 (en) * 2013-03-15 2014-09-18 Neeley John Automatic recording and graphing of measurement data
CN103729429A (zh) * 2013-12-26 2014-04-16 浪潮电子信息产业股份有限公司 一种基于HBase压缩方法
CN104809134B (zh) * 2014-01-27 2018-03-09 国际商业机器公司 检测数据序列中的异常子序列的方法和设备
US10400755B2 (en) 2014-03-25 2019-09-03 Ntn Corporation State monitoring system
CA2947158A1 (en) * 2014-05-01 2015-11-05 Coho Data, Inc. Systems, devices and methods for generating locality-indicative data representations of data streams, and compressions thereof

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1301462A (zh) * 1998-05-20 2001-06-27 麦克罗维西恩公司 用于有选择地进行数据块处理的方法及装置
US7747465B2 (en) * 2000-03-13 2010-06-29 Intellions, Inc. Determining the effectiveness of internet advertising
US8339974B1 (en) * 2005-06-22 2012-12-25 Sprint Communications Company L.P. Method and system for detecting and mitigating RTP-based denial of service attacks
US8477648B2 (en) * 2010-02-16 2013-07-02 Vss Monitoring, Inc. Systems, apparatus, and methods for monitoring network capacity
CN102509062A (zh) * 2011-11-14 2012-06-20 无锡南理工科技发展有限公司 一种基于滑动窗口的rfid数据流多标签清洗方法
CN103970602A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向x86多核处理器的数据流程序调度方法
WO2016046929A1 (ja) * 2014-09-25 2016-03-31 株式会社日立製作所 データ集積装置、及び、データ集積方法
CN105680868A (zh) * 2014-11-17 2016-06-15 华为技术有限公司 压缩流数据的方法及设备

Also Published As

Publication number Publication date
US20190149438A1 (en) 2019-05-16
CN107612765A (zh) 2018-01-19
WO2018010462A1 (zh) 2018-01-18
EP3474494A4 (en) 2019-04-24
EP3474494A1 (en) 2019-04-24
US11005737B2 (en) 2021-05-11
EP3474494B1 (en) 2020-03-25

Similar Documents

Publication Publication Date Title
CN107612765B (zh) 数据处理的方法及装置
US9703852B2 (en) Systems and methods for quantile determination in a distributed data system using sampling
US9507833B2 (en) Systems and methods for quantile determination in a distributed data system
CN107291785A (zh) 一种数据查找方法及装置
EP2975538B1 (en) Computer-implemented method and apparatus for determining relevance of a node in a network
US11200257B2 (en) Classifying social media users
WO2021076324A1 (en) Multi-faceted trust system
Still et al. Optimal causal inference: Estimating stored information and approximating causal architecture
CN109582289B (zh) 规则引擎中规则流的处理方法、系统、存储介质和处理器
Alizadeh et al. Inverse 1-center location problems with edge length augmentation on trees
CN110554877A (zh) 一种json数据解析方法、装置、设备及储存介质
Simard et al. Computing betweenness centrality in link streams
CN113807926A (zh) 推荐信息生成方法、装置、电子设备和计算机可读介质
US20240134892A1 (en) Information generation method, apparatus, electronic device, and computer -readable medium
US8140539B1 (en) Systems, devices, and/or methods for determining dataset estimators
US20170031891A1 (en) Determining incident codes using a decision tree
Deep et al. A novel hybrid genetic algorithm for constrained optimization
Kang Outgoing call recommendation using neural network
Xu et al. Dm-KDE: dynamical kernel density estimation by sequences of KDE estimators with fixed number of components over data streams
Lecoutre et al. New results for computing Blaker’s exact confidence interval for one parameter discrete distributions
CN112069532B (zh) 一种基于差分隐私的轨迹隐私保护方法与装置
Liu et al. Variations and estimators for self-similarity parameter of sub-fractional Brownian motion via Malliavin calculus
CN107977378A (zh) 一种分布式数据聚合方法和装置
CN112069812A (zh) 一种分词方法、装置、设备及计算机存储介质
US20190020743A1 (en) Data transmitting apparatus, data receiving apparatus and method thereof

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
GR01 Patent grant
GR01 Patent grant