CN115202765B - 流数据处理方法和流数据处理系统 - Google Patents

流数据处理方法和流数据处理系统 Download PDF

Info

Publication number
CN115202765B
CN115202765B CN202210668119.0A CN202210668119A CN115202765B CN 115202765 B CN115202765 B CN 115202765B CN 202210668119 A CN202210668119 A CN 202210668119A CN 115202765 B CN115202765 B CN 115202765B
Authority
CN
China
Prior art keywords
data
operator
complex
data source
instances
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
CN202210668119.0A
Other languages
English (en)
Other versions
CN115202765A (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.)
Zhejiang Zhiyu Technology Co ltd
Original Assignee
Zhejiang Zhiyu Technology 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 Zhejiang Zhiyu Technology Co ltd filed Critical Zhejiang Zhiyu Technology Co ltd
Priority to CN202210668119.0A priority Critical patent/CN115202765B/zh
Publication of CN115202765A publication Critical patent/CN115202765A/zh
Application granted granted Critical
Publication of CN115202765B publication Critical patent/CN115202765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Development Economics (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种流数据处理方法、流数据处理系统、计算机系统和计算机可读存储介质。其中,该方法包括:获取数据源和用于处理所述数据源的复杂算子的描述信息;根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系;判断所述数据源的数据类型是批量数据还是实时流数据;按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例;使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。通过本申请,解决了相关技术中的流数据处理系统无法实现复杂的高频因子计算的问题,实现了复杂的高频因子的计算。

Description

流数据处理方法和流数据处理系统
技术领域
本申请涉及流数据处理领域,尤其是涉及一种流数据处理方法、流数据处理系统、计算机系统和计算机可读存储介质。
背景技术
批量数据又称为批式数据,也称为历史大数据,是指对实时流数据进行记录形成的批量数据,其特点是可以有很大的数据量,例如数吉比特,数据可以具有很大的时间跨度例如数小时或者数天。而实时流数据通常是实时产生的流数据,其特点是数据量比较小,例如数比特,数据的时间跨度很小,一般在数毫秒至数秒内。在金融、电信、应急处置等要求实时响应的领域中,实时流数据的处理应用非常广泛。
Python pandas是相关技术中的一种金融高频因子计算的解决方案。每个金融高频因子基于多个有状态或无状态算子来实现。pandas对历史面板数据处理有非常成熟的解决方案,而且内置了大部分高频因子计算需要用到的算子,可快速开发高频因子。但由于python仅支持全量计算,不支持增量计算,所以无法达到实时计算的性能要求。为生产环境中的性能考虑,很多机构会用C++重新实现研究(历史数据)代码。不过,这种方法需要维护两套代码,开发成本会大幅增加。此外,还要耗费大量精力确保两套系统的结果完全一致。
Flink支持SQL和窗口函数,金融高频因子用到的基本算子在Flink中已经内置实现。但Flink无法实现复杂的高频因子计算。如需要多个窗口函数的嵌套,无法直接用Flink实现。
发明内容
本申请提供一种流数据处理方法、流数据处理系统、计算机系统和计算机可读存储介质,以至少解决相关技术中的流数据处理系统无法实现复杂的高频因子计算的问题。
一种流数据处理方法,包括:获取数据源和用于处理所述数据源的复杂算子的描述信息;判断所述数据源的数据类型是批量数据还是实时流数据;根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系,其中,所述简单算子包括无状态简单算子和有状态简单算子,且各所述有状态简单算子均包括预先配置的第一接口和第二接口,所述第一接口用于批量数据的运算,所述第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果;按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例,其中,当所述数据源的数据类型为所述批量数据时,基于所述第一接口实例化所述有状态简单算子的算子实例,当所述数据源的数据类型为所述实时流数据时,基于所述第二接口实例化所述有状态简单算子的算子实例;使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。
在其中的一些实施例中,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例包括:生成与所述复杂算子对应的缓存空间;生成与所述多个简单算子对应的多个算子实例,并根据所述嵌套关系在所述缓存空间中为各所述算子实例分配用于存储算子实例的输入数据、中间结果和运算结果的固定存储空间。
在其中的一些实施例中,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例还包括:删除所述多个算子实例中相同的算子实例。
在其中的一些实施例中,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:当所述数据源的数据类型为所述批量数据时,采用批处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果;当所述数据源的数据类型为所述实时流数据时,采用流处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果。
在其中的一些实施例中,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:获取输入数据,并将所述输入数据写入到所述缓存空间中相应的固定存储空间;当检测到所述缓存空间的任一用于存储输入数据的固定存储空间的数据发生变化时,使用与发生变化的固定存储空间对应的目标算子实例处理所述输入数据,得到与所述输入数据对应的中间结果和运算结果,并将该中间结果和运算结果存储到用于存储所述目标算子实例的中间结果和运算结果的固定存储空间;其中,用于存储某一算子实例的运算结果的固定存储空间与用于存储另一算子实例的输入数据的固定存储空间相同。
一种流数据处理系统,包括:获取模块,用于获取数据源和用于处理所述数据源的复杂算子的描述信息;解析模块,用于根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系,其中,所述简单算子包括无状态简单算子和有状态简单算子,且各所述有状态简单算子均包括预先配置的第一接口和第二接口,所述第一接口用于批量数据的运算,所述第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果;判断模块,用于判断所述数据源的数据类型是批量数据还是实时流数据;实例化模块,用于按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例,其中,当所述数据源的数据类型为所述批量数据时,基于所述第一接口实例化所述有状态简单算子的算子实例,当所述数据源的数据类型为所述实时流数据时,基于所述第二接口实例化所述有状态简单算子的算子实例;运算模块,用于使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。
在其中的一些实施例中,所述运算模块包括批处理引擎和流处理引擎,其中,所述批处理引擎,用于当所述数据源的数据类型为所述批量数据时,加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果;所述流处理引擎,用于当所述数据源的数据类型为所述实时流数据时,加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果。
在其中的一些实施例中,所述流数据处理系统还包括简单算子库,其中,所述简单算子库中存储有所述无状态简单算子和所述有状态简单算子。
一种计算机系统,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述的流数据处理方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的流数据处理方法的步骤。
上述的流数据处理方法、流数据处理系统、计算机系统和计算机可读存储介质,实现了复杂的高频因子的计算。
附图说明
图1是本申请实施例提供的一种金融交易数据订阅系统的结构示意图。
图2是本实施例提供的一种流数据处理系统的结构示意图。
图3是本实施例提供的一种流数据处理系统的优选结构示意图一。
图4是本实施例提供的一种流数据处理系统的优选结构示意图二。
图5是本实施例提供的一种流数据处理系统的优选结构示意图三。
图6是本实施例提供的一种流数据处理系统的优选结构示意图四。
图7是本实施例提供的一种流数据处理方法的流程图。
图8是本实施例提供的一种复杂算子的嵌套关系的示意图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。然而,本领域的普通技术人员应该明白,可以在没有这些细节的情况下实施本申请。在一些情形下,为了避免不必要的描述使本申请的各方面变得晦涩难懂,对已经在较高的层次上描述了众所周知的方法、过程、系统、组件和/或电路将不作过多赘述。对于本领域的普通技术人员来说,显然可以对本申请所公开的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请不限于所示的实施例,而是符合与本申请所要求保护的范围一致的最广泛范围。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。本申请所使用的术语仅出于描述特定实施例的目的,而不旨在于对本申请的限制。如本申请所使用的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。
在本申请中所涉及的“多个”是指两个或两个以上。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
本申请所涉及的术语“系统”、“引擎”、“单元”、“模块”和/或“块”是一种用于按级别区分不同级别的不同组件、元件、零件、部件、装配件、或功能的一种方法。这些术语可以被其他能够达到相同目的的表达替换。通常,本申请涉及的“模块”、“单元”或“块”是指硬件或者固件中体现的逻辑或软件指令的集合。本申请描述的“模块”、“单元”或“块”可以作为软件和/或硬件实现,并且在作为软件实现的情形下,他们可以被存储在任何类型的非易失性计算机可读存储介质或存储设备中。
在一些实施例中,软件模块/单元/块可以被编译并被链接到可执行程序中。将意识到,软件模块可以是可从其他模块/单元/块或从其自身调用的,和/或可以响应于检测到的事件或中断而被调用。配置为在计算设备上执行的软件模块/单元/块可以设置在计算机可读存储介质上,例如光盘、数字视频盘、闪存驱动器、磁盘、或任何其他有形媒体,或作为数字下载(并且可以最初以压缩或可安装的格式存储,该格式需要在执行之前进行安装、解压或解密)。这样的软件代码可以部分地或全部地存储在正在执行的计算设备的存储设备上,并应用在计算设备的操作之中。软件指令可以被嵌入到固件,例如EPROM中。还将意识到,硬件模块/单元/块可以被包括在连接的逻辑组件中,例如门和触发器,和/或可以被包括在可编程单元中,例如可编程门阵列或处理器。本文描述的模块/单元/块或计算设备功能可以被实现为软件模块/单元/块,还可以以硬件或固件来表示。通常,本文描述的模块/单元/块,它们可以与其他模块/单元/块组合,或者尽管它们是物理组织或存储的,但也可以被划分为子模块/子单元/子块。该描述可以适用于系统、引擎或其一部分。
将理解的是,当单元、引擎、模块或块被称为在另一单元、引擎、模块或块“上”、“连接”或“耦合至”另一单元、引擎、模块或块时,其可以直接在其它单元、引擎、模块或块上,与其连接或耦合或与之通信,或者可以存在中间单元、引擎、模块或块,除非上下文另有明确说明。在本申请中,术语“和/或”可包括任何一个或以上相关所列条目或其组合。
本实施例提供了一种流数据处理系统,该流数据处理系统可以应用于金融、电信或者应急管理相关系统中,实现批量数据的全量计算或实时流数据的增量计算。图1是本申请实施例提供的一种金融交易数据订阅系统的结构示意图,如图1所示,该金融交易数据订阅系统可以包括金融交易实时数据生产者11、流数据表12、数据仓库13、流数据处理系统14、报表系统15、分析系统16、数据可视化平台17、应用程序订阅者18和业务系统19。
金融交易实时数据生产者11实时产生金融交易数据的流数据,流数据可以直接以规定格式注入到流数据表12中。流数据表12中的实时流数据还可以被诸如C++、Java、Python等应用程序订阅者18订阅。
数据仓库13通过订阅流数据表12中的流数据的方式,将所有的流数据保存为历史数据,即批量数据。数据仓库13中的批量数据也可以通过重放机制(replay)还原成实时流数据并被注入到流数据表中。
流数据处理系统14也可以通过订阅流数据表12中的流数据的方式,对实时流数据进行增量计算,获得计算结果。计算结果可以被业务系统19订阅从而进行事件处理;计算结果可以提供给数据可视化平台17查询;计算结果还可以持久化到数据仓库13中。
数据仓库13中存储的批量数据和计算结果可以提供给报表系统15查询以及提供给分析系统16进行相关的分析计算。
此外,本实施例提供的流数据处理系统14除了能够通过订阅流数据表中的实时流数据或者经重放机制形成的实时流数据实现增量计算之外,还可以直接从数据仓库13获取批量数据并对批量数据进行全量计算得到计算结果。
图2是本实施例提供的一种流数据处理系统的结构示意图,如图2所示,该流数据处理系统包括:
获取模块21,用于获取数据源和用于处理数据源的复杂算子的描述信息。
其中,数据源包括从数据仓库获取的批量数据或者从实时数据生产者获取的实时流数据。复杂算子是指包括多个简单算子,且多个简单算子中的至少一部分算子具有一层或者多层嵌套关系的算子。简单算子是指预先设置的算子。其中,算子状态的作用限定为算子任务,这意味着由同一并行任务所处理的所有数据都可以访问到相同的状态,状态对于同一任务而言是共享的。算子状态包括有状态和无状态两种。无状态简单算子用于计算和观察每个独立事件,并根据最后一个事件输出结果。有状态简单算子则会基于多个事件输出结果。
复杂算子的描述信息用于描述当前的流数据处理任务的任务内容、运算规则等。复杂算子的描述信息可以表达为函数式形式,也可以采用各种结构化语言描述,例如可扩展标记语言(XML)、JS对象简谱(JSON)等。
解析模块22,耦合至获取模块21,用于根据复杂算子的描述信息解析复杂算子,得到与复杂算子对应的多个简单算子及多个简单算子的嵌套关系。
在本实施例中,预先设置的简单算子中,各有状态简单算子均包括预先配置的第一接口和第二接口,第一接口用于批量数据的运算,第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果。
判断模块23,耦合至获取模块21,用于判断数据源的数据类型是批量数据还是实时流数据。
实例化模块24,分别耦合至判断模块23和解析模块22,用于按照嵌套关系实例化多个简单算子,得到多个算子实例。
其中,当数据源的数据类型为批量数据时,基于第一接口实例化有状态简单算子的算子实例,当数据源的数据类型为实时流数据时,基于第二接口实例化有状态简单算子的算子实例。
运算模块25,耦合至实例化模块24和获取模块21,用于使用多个算子实例处理数据源,得到复杂算子的运算结果。
通过上述流数据处理系统,根据复杂算子的描述信息获得组成复杂算子的简单算子及其嵌套关系,实现了对复杂的高频因子的计算。并且,在上述流数据处理系统中,每个有状态简单算子都包括预先配置的两个接口,可以根据数据源的数据类型实例化有状态简单算子,使得流数据处理系统能够兼容批量数据和实时流数据的处理,实现了对批量数据和实时流数据的一体化处理。由于上述流数据处理系统既可以处理批量数据也可以处理实时流数据,因此在进行流数据处理系统开发时,生产环境和开发环境可以采用相同的语言代码来实现,而不必维护两套不同的代码。并且,基于上述流数据处理系统对每个有状态算子配置的两个对相同的数据源有相同运算结果的接口,从算子层面对运算结果进行了统一,使得流数据处理系统层面对于相同描述信息的复杂算子处理相同的数据源也能够得到完全相同的运算结果,能够降低维护成本。
图3是本实施例提供的一种流数据处理系统的优选结构示意图一,如图3所示,在其中的一些实施例中,流数据处理系统的实例化模块24包括:
第一生成单元241,用于生成与复杂算子对应的缓存空间。
第二生成单元242,用于生成与多个简单算子对应的多个算子实例,并根据嵌套关系在缓存空间中为各算子实例分配用于存储算子实例的输入数据、中间结果和运算结果的固定存储空间。
图4是本实施例提供的一种流数据处理系统的优选结构示意图二,如图4所示,在其中的一些实施例中,流数据处理系统的实例化模块24还可以包括:删除单元243,用于删除多个算子实例中相同的算子实例。
图5是本实施例提供的一种流数据处理系统的优选结构示意图三,如图5所示,在其中的一些实施例中,流数据处理系统的运算模块25包括:
批处理引擎251,用于当数据源的数据类型为批量数据时,加载多个算子实例以处理数据源,得到复杂算子的运算结果。
流处理引擎252,用于当数据源的数据类型为实时流数据时,加载多个算子实例以处理数据源,得到复杂算子的运算结果。
图6是本实施例提供的一种流数据处理系统的优选结构示意图四,如图6所示,该流数据处理系统的运算模块25包括:
获取单元253,用于获取输入数据,并将输入数据写入到缓存空间中相应的固定存储空间。
运算单元254,用于当检测到缓存空间的任一用于存储输入数据的固定存储空间的数据发生变化时,使用与发生变化的固定存储空间对应的目标算子实例处理输入数据,得到与输入数据对应的中间结果和运算结果,并将该中间结果和运算结果存储到用于存储目标算子实例的中间结果和运算结果的固定存储空间。
其中,用于存储某一算子实例的运算结果的固定存储空间与用于存储另一算子实例的输入数据的固定存储空间可以相同。
下面结合方法实施例对本申请实施例进行描述和说明。
本实施例提供了一种流数据处理方法,图7是本实施例提供的一种流数据处理方法的流程图,如图7所示,该流程包括如下步骤:
步骤S701,获取数据源和用于处理数据源的复杂算子的描述信息。
步骤S702,判断数据源的数据类型是批量数据还是实时流数据。
步骤S703,根据复杂算子的描述信息解析复杂算子,得到与复杂算子对应的多个简单算子及多个简单算子的嵌套关系。
其中,简单算子包括无状态简单算子和有状态简单算子,且各有状态简单算子均包括预先配置的第一接口和第二接口,第一接口用于批量数据的运算,第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果。
对于上述每个有状态简单算子预先配置的第一接口和第二接口,不同的有状态简单算子实现上述两个接口的方式各不相同。举例来说,以用于求取平均数的AVERAGE算子为例,在进行批量运算时,例如计算包含1000条数据的批量数据的平均数,则将这1000条数据累加后除以1000即可得到运算结果,基于该运算逻辑即可实现AVERAGE算子的第一接口。例如同样是计算1000条实时流数据的平均数,由于实时流数据是一条一条到达的,因此,在运算第n条流数据时平均数等于前n条流数据的和除以n。为了能够在第n+1条流数据到达时能够流式计算前n+1条流数据的平均数,则可以将第n条流数据的中间结果(例如前n条流数据的和以及序号n)记录下来,在得到第n+1条流数据后,在前n条流数据的和之上再加上第n+1条流数据的数值,并将得到的和值除以n+1即可得到当前流式运算的运算结果。基于该运算逻辑即可实现AVERAGE算子的第二接口。可以看到,上述第一接口和第二接口对于内容相同的数据源有相同的运算结果,需要说明的是上述内容相同的数据源是指数据源包含的流数据内容相同的数据源,内容相同的数据源可以是不同数据类型的数据源,例如一个为批量数据的数据源,一个为实时流数据的数据源,如果批量数据能够经过重放机制得到上述实时流数据,则可以认为二者是内容相同的数据源。
其他算子的两个接口的实现逻辑在此不再赘述。
关于复杂算子中简单算子的嵌套关系,图8是本实施例提供的一种复杂算子的嵌套关系的示意图。该复杂算子包括两种算子,一种为sum_diff,一种为ema算子。其中,sum_diff为无状态简单算子,ema为有状态简单算子。如图8所示,上述的sum_diff算子和ema算子进行了多重嵌套,需要说明的是,图8中的a、b、d和e虽然都是相同的算子,但是由于具有不同的参数,因此在将算子实例化之后,将会分别表示为4个算子实例。
步骤S704,按照嵌套关系实例化多个简单算子,得到多个算子实例。
其中,步骤S704包括如下步骤:
步骤S7041,当数据源的数据类型为批量数据时,基于第一接口实例化有状态简单算子的算子实例。
步骤S7042,当数据源的数据类型为实时流数据时,基于第二接口实例化有状态简单算子的算子实例。
步骤S705,使用多个算子实例处理数据源,得到复杂算子的运算结果。
通过上述步骤,根据复杂算子的描述信息获得组成复杂算子的简单算子及其嵌套关系,实现了对复杂的高频因子的计算。并且,在上述方法中,每个有状态简单算子都包括预先配置的两个接口,可以根据数据源的数据类型实例化有状态简单算子,使得流数据处理系统能够兼容批量数据和实时流数据的处理,实现了对批量数据和实时流数据的一体化处理。由于上述流数据处理系统既可以处理批量数据也可以处理实时流数据,因此在进行流数据处理系统开发时,生产环境和开发环境可以采用相同的语言代码来实现,而不必维护两套不同的代码。并且,基于上述流数据处理方法中对每个有状态算子配置的两个对相同的数据源有相同运算结果的接口,从算子层面对运算结果进行了统一,使得流数据处理系统层面对于相同描述信息的复杂算子处理相同的数据源也能够得到完全相同的运算结果,能够降低维护成本。
在其中的一些实施例中,步骤S704包括如下步骤:生成与复杂算子对应的缓存空间;生成与多个简单算子对应的多个算子实例,并根据嵌套关系在缓存空间中为各算子实例分配用于存储算子实例的输入数据、中间结果和运算结果的固定存储空间。
继续以图8所示的复杂算子为例,在步骤S704中,将会为复杂算子生成对应的缓存空间,并将每个类型不同、参数不同的简单算子实例化为不同的算子实例,每个算子实例具有唯一身份标识。在缓存空间中,为每个不同的算子实例分配了用于存储算子实例的输入数据、中间结果和运算结果的固定存储空间。并且在进行固定存储空间的分配时,考虑各个算子之间的嵌套关系,例如,对于图8中的sum_diff算子实例而言,用于存储sum_diff算子实例的运算结果的固定存储空间,同时也将是用于存储d和e所示的算子实例的输入数据的固定存储空间,d和e所示的算子实例中常量例如数值10和数值20,也可以在缓存空间中分配固定存储空间。
本实施例中,为每个复杂算子生成缓存空间,为每个算子实例分配固定存储空间,使得不同算子实例之间的嵌套的运算可以基于固定存储空间的联结来实现,并且基于缓存空间存储输入数据、中间结果和运算结果,在一些实施例中可以基于固定存储空间中数据的变化状态来实现链式计算,从而提高了运算效率。
需要说明的是,上述的缓存空间包括但不限于随机存取存储器提供的存储空间。上述的固定存储空间是指相关的数据具有相同的变量名。
对于实例化得到的相同的算子实例,即算子类型和算子参数均相同的算子实例,在步骤S704中,还可以删除多个算子实例中相同的算子实例,从而避免对相同的算子实例进行重复的运算,提高运算效率。
在其中的一些实施例中,使用多个算子实例处理数据源,得到复杂算子的运算结果包括:当数据源的数据类型为批量数据时,采用批处理引擎加载多个算子实例以处理数据源,得到复杂算子的运算结果;当数据源的数据类型为实时流数据时,采用流处理引擎加载多个算子实例以处理数据源,得到复杂算子的运算结果。
在本实施例中,上述的批处理引擎和流处理引擎可以是基于相同的或者不同的编程语言实现的数据处理引擎,例如批处理引擎可以是SQL引擎。较优地,在批处理引擎和流处理引擎采用相同的编程语言实现的情况下,维护人员只需要维护一套代码语言,能够降低维护成本。本实施例中上述的批处理引擎和流处理引擎之所以不限于何种编程语言,关键在于本实施例中的简单算子是预先设置且共享给两个引擎使用的,尤其是对于无状态简单算子均预先设置了两个接口,这两个接口分别用于实现批量运算和流式运算,因而不必要求批处理引擎实现流式运算,也不必要求流处理引擎实现批处理运算。
采用本实施例的两个数据处理引擎,基于数据源的不同数据类型加载对应的算子实例进行数据处理,且各个算子实例在两个数据处理引擎间共享输入数据、中间结果和运算结果,因此,整个数据处理系统能够灵活地实现批量数据和流数据的一体化处理,而摆脱了生产环境和研发环境中数据源的数据类型不同的差异性,也使得数据处理系统能够随时基于批量数据实现全量计算以及基于流式数据实现增量计算。例如,即使在流数据处理系统完全损毁的情形下,可以基于持久化的批量数据进行全量计算后,在基于新产生的实时流数据进行增量计算,可以实现流数据处理系统的快速恢复,而不必忍受对批量数据进行重放机制导致的效率下降的问题。
本实施例中所称的链式运算,类似于excel中的单元格链式计算,在单元格链式运算中,当一个单元格的数据发生变化时,相关联的单元格将依次发生变化。在本实施例中与单元格链式计算类似的,在步骤S705中,获取输入数据,并将输入数据写入到缓存空间中相应的固定存储空间;当检测到缓存空间的任一用于存储输入数据的固定存储空间的数据发生变化时,使用与发生变化的固定存储空间对应的目标算子实例处理输入数据,得到与输入数据对应的中间结果和运算结果,并将该中间结果和运算结果存储到用于存储目标算子实例的中间结果和运算结果的固定存储空间;其中,用于存储某一算子实例的运算结果的固定存储空间与用于存储另一算子实例的输入数据的固定存储空间可以相同。通过上述的方式,实现了链式计算。
本实施例还提供了一种计算机系统,该计算机系统包括存储器和处理器,存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行本实施例提供的任一流数据处理方法。
本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本实施例提供的任一流数据处理方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种流数据处理方法,其特征在于包括:
获取数据源和用于处理所述数据源的复杂算子的描述信息;
判断所述数据源的数据类型是批量数据还是实时流数据;
根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系,其中,所述简单算子包括无状态简单算子和有状态简单算子,且各所述有状态简单算子均包括预先配置的第一接口和第二接口,所述第一接口用于批量数据的运算,所述第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果;
按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例,其中,当所述数据源的数据类型为所述批量数据时,基于所述第一接口实例化所述有状态简单算子的算子实例,当所述数据源的数据类型为所述实时流数据时,基于所述第二接口实例化所述有状态简单算子的算子实例;
使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。
2.根据权利要求1所述的流数据处理方法,其特征在于,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例包括:
生成与所述复杂算子对应的缓存空间;
生成与所述多个简单算子对应的多个算子实例,并根据所述嵌套关系在所述缓存空间中为各所述算子实例分配用于存储算子实例的输入数据、中间结果和运算结果的固定存储空间。
3.根据权利要求1所述的流数据处理方法,其特征在于,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例还包括:
删除所述多个算子实例中相同的算子实例。
4.根据权利要求1所述的流数据处理方法,其特征在于,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:
当所述数据源的数据类型为所述批量数据时,采用批处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果;
当所述数据源的数据类型为所述实时流数据时,采用流处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果。
5.根据权利要求2所述的流数据处理方法,其特征在于,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:
获取输入数据,并将所述输入数据写入到所述缓存空间中相应的固定存储空间;
当检测到所述缓存空间的任一用于存储输入数据的固定存储空间的数据发生变化时,使用与发生变化的固定存储空间对应的目标算子实例处理所述输入数据,得到与所述输入数据对应的中间结果和运算结果,并将该中间结果和运算结果存储到用于存储所述目标算子实例的中间结果和运算结果的固定存储空间;其中,用于存储某一算子实例的运算结果的固定存储空间与用于存储另一算子实例的输入数据的固定存储空间相同。
6.一种流数据处理系统,其特征在于包括:
获取模块,用于获取数据源和用于处理所述数据源的复杂算子的描述信息;
解析模块,用于根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系,其中,所述简单算子包括无状态简单算子和有状态简单算子,且各所述有状态简单算子均包括预先配置的第一接口和第二接口,所述第一接口用于批量数据的运算,所述第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果;
判断模块,用于判断所述数据源的数据类型是批量数据还是实时流数据;
实例化模块,用于按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例,其中,当所述数据源的数据类型为所述批量数据时,基于所述第一接口实例化所述有状态简单算子的算子实例,当所述数据源的数据类型为所述实时流数据时,基于所述第二接口实例化所述有状态简单算子的算子实例;
运算模块,用于使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。
7.根据权利要求6所述的流数据处理系统,其特征在于,所述运算模块包括批处理引擎和流处理引擎,其中,
所述批处理引擎,用于当所述数据源的数据类型为所述批量数据时,加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果;
所述流处理引擎,用于当所述数据源的数据类型为所述实时流数据时,加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果。
8.根据权利要求6所述的流数据处理系统,其特征在于,所述流数据处理系统还包括简单算子库,其中,所述简单算子库中存储有所述无状态简单算子和所述有状态简单算子。
9.一种计算机系统,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至5中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
CN202210668119.0A 2022-06-14 2022-06-14 流数据处理方法和流数据处理系统 Active CN115202765B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210668119.0A CN115202765B (zh) 2022-06-14 2022-06-14 流数据处理方法和流数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210668119.0A CN115202765B (zh) 2022-06-14 2022-06-14 流数据处理方法和流数据处理系统

Publications (2)

Publication Number Publication Date
CN115202765A CN115202765A (zh) 2022-10-18
CN115202765B true CN115202765B (zh) 2023-03-28

Family

ID=83575759

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210668119.0A Active CN115202765B (zh) 2022-06-14 2022-06-14 流数据处理方法和流数据处理系统

Country Status (1)

Country Link
CN (1) CN115202765B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391719A (zh) * 2017-07-31 2017-11-24 南京邮电大学 一种云环境中分布式流数据处理方法及系统
US20180225158A1 (en) * 2015-08-06 2018-08-09 Hewlett Packard Enterprise Development Pl Distributed event processing
CN110674174A (zh) * 2019-09-24 2020-01-10 北京九章云极科技有限公司 一种数据实时处理方法及数据实时处理系统
CN112214517A (zh) * 2020-11-04 2021-01-12 微医云(杭州)控股有限公司 流数据处理方法及装置、电子设备、存储介质
CN113760983A (zh) * 2021-01-20 2021-12-07 北京沃东天骏信息技术有限公司 数据处理方法、系统及非瞬时性计算机可读存储介质
CN114328695A (zh) * 2021-12-31 2022-04-12 北京安天网络安全技术有限公司 Etl数据处理方法、装置、计算设备及存储介质
CN114564547A (zh) * 2022-02-10 2022-05-31 阿里云计算有限公司 数据处理方法、装置、设备和存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180225158A1 (en) * 2015-08-06 2018-08-09 Hewlett Packard Enterprise Development Pl Distributed event processing
CN107391719A (zh) * 2017-07-31 2017-11-24 南京邮电大学 一种云环境中分布式流数据处理方法及系统
CN110674174A (zh) * 2019-09-24 2020-01-10 北京九章云极科技有限公司 一种数据实时处理方法及数据实时处理系统
CN112214517A (zh) * 2020-11-04 2021-01-12 微医云(杭州)控股有限公司 流数据处理方法及装置、电子设备、存储介质
CN113760983A (zh) * 2021-01-20 2021-12-07 北京沃东天骏信息技术有限公司 数据处理方法、系统及非瞬时性计算机可读存储介质
CN114328695A (zh) * 2021-12-31 2022-04-12 北京安天网络安全技术有限公司 Etl数据处理方法、装置、计算设备及存储介质
CN114564547A (zh) * 2022-02-10 2022-05-31 阿里云计算有限公司 数据处理方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN115202765A (zh) 2022-10-18

Similar Documents

Publication Publication Date Title
KR101699981B1 (ko) 외래 정보를 분할함에 의한 가상 머신 코드의 메모리 최적화
CN108958729B (zh) 一种数据处理方法、装置及存储介质
CN111190753B (zh) 分布式任务处理方法、装置、存储介质和计算机设备
CN111966760B (zh) 基于Hive数据仓库的测试数据生成方法及装置
US10970109B1 (en) System, method, and computer program for managing a plurality of heterogeneous software robots to automate business processes
CN112379884A (zh) 基于Spark和并行内存计算的流程引擎实现方法及系统
CN112817720A (zh) 一种可视化工作流调度方法、装置及电子设备
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
CA3184650A1 (en) Project management and control method and device, computer equipment and storage medium
KR20150056258A (ko) 생산성을 향상시킬 수 있는 정형 및 비정형의 빅데이터 엔진 및 처리 방법
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
CN115202765B (zh) 流数据处理方法和流数据处理系统
Tran et al. Big Data Processing with Apache Spark
CN112000703B (zh) 数据入库处理方法、装置、计算机设备和存储介质
CN110928941B (zh) 一种数据分片抽取方法及装置
CN115237399A (zh) 用于采集数据的方法、存储介质、处理器及工程车辆
US8140488B2 (en) Reducing memory required for prediction by partial matching models
CN111796993B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN111538491B (zh) 数据事件处理方法、装置、设备和存储介质
CN104462484A (zh) 数据处理方法、数据处理器及系统
US8495033B2 (en) Data processing
CN104268057A (zh) 一种Android平台下的模块化系统的监控系统及方法
CN112116463A (zh) 一种基于Spark引擎的智能分析系统
CN111861381B (zh) 多资金渠道的接入方法及系统
CN117435367B (zh) 用户行为处理方法、装置、设备、存储介质和程序产品

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