流数据处理方法和流数据处理系统技术方案

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

【技术实现步骤摘要】
流数据处理方法和流数据处理系统


[0001]本申请涉及流数据处理领域,尤其是涉及一种流数据处理方法、流数据处理系统、计算机系统和计算机可读存储介质。

技术介绍

[0002]批量数据又称为批式数据,也称为历史大数据,是指对实时流数据进行记录形成的批量数据,其特点是可以有很大的数据量,例如数吉比特,数据可以具有很大的时间跨度例如数小时或者数天。而实时流数据通常是实时产生的流数据,其特点是数据量比较小,例如数比特,数据的时间跨度很小,一般在数毫秒至数秒内。在金融、电信、应急处置等要求实时响应的领域中,实时流数据的处理应用非常广泛。
[0003]Python pandas是相关技术中的一种金融高频因子计算的解决方案。每个金融高频因子基于多个有状态或无状态算子来实现。pandas对历史面板数据处理有非常成熟的解决方案,而且内置了大部分高频因子计算需要用到的算子,可快速开发高频因子。但由于python仅支持全量计算,不支持增量计算,所以无法达到实时计算的性能要求。为生产环境中的性能考虑,很多机构会用C++重新实现研究(历史数据)代码。不过,这种方法需要维护两套代码,开发成本会大幅增加。此外,还要耗费大量精力确保两套系统的结果完全一致。
[0004]Flink支持SQL和窗口函数,金融高频因子用到的基本算子在Flink中已经内置实现。但Flink无法实现复杂的高频因子计算。如需要多个窗口函数的嵌套,无法直接用Flink实现。

技术实现思路

[0005]本申请提供一种流数据处理方法、流数据处理系统、计算机系统和计算机可读存储介质,以至少解决相关技术中的流数据处理系统无法实现复杂的高频因子计算的问题。
[0006]一种流数据处理方法,包括:获取数据源和用于处理所述数据源的复杂算子的描述信息;判断所述数据源的数据类型是批量数据还是实时流数据;根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系,其中,所述简单算子包括无状态简单算子和有状态简单算子,且各所述有状态简单算子均包括预先配置的第一接口和第二接口,所述第一接口用于批量数据的运算,所述第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果;按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例,其中,当所述数据源的数据类型为所述批量数据时,基于所述第一接口实例化所述有状态简单算子的算子实例,当所述数据源的数据类型为所述实时流数据时,基于所述第二接口实例化所述有状态简单算子的算子实例;使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。
[0007]在其中的一些实施例中,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例包括:生成与所述复杂算子对应的缓存空间;生成与所述多个简单算子对应
的多个算子实例,并根据所述嵌套关系在所述缓存空间中为各所述算子实例分配用于存储算子实例的输入数据、中间结果和运算结果的固定存储空间。
[0008]在其中的一些实施例中,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例还包括:删除所述多个算子实例中相同的算子实例。
[0009]在其中的一些实施例中,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:当所述数据源的数据类型为所述批量数据时,采用批处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果;当所述数据源的数据类型为所述实时流数据时,采用流处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果。
[0010]在其中的一些实施例中,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:获取输入数据,并将所述输入数据写入到所述缓存空间中相应的固定存储空间;当检测到所述缓存空间的任一用于存储输入数据的固定存储空间的数据发生变化时,使用与发生变化的固定存储空间对应的目标算子实例处理所述输入数据,得到与所述输入数据对应的中间结果和运算结果,并将该中间结果和运算结果存储到用于存储所述目标算子实例的中间结果和运算结果的固定存储空间;其中,用于存储某一算子实例的运算结果的固定存储空间与用于存储另一算子实例的输入数据的固定存储空间可以相同。
[0011]一种流数据处理系统,包括:获取模块,用于获取数据源和用于处理所述数据源的复杂算子的描述信息;解析模块,用于根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系,其中,所述简单算子包括无状态简单算子和有状态简单算子,且各所述有状态简单算子均包括预先配置的第一接口和第二接口,所述第一接口用于批量数据的运算,所述第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果;判断模块,用于判断所述数据源的数据类型是批量数据还是实时流数据;实例化模块,用于按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例,其中,当所述数据源的数据类型为所述批量数据时,基于所述第一接口实例化所述有状态简单算子的算子实例,当所述数据源的数据类型为所述实时流数据时,基于所述第二接口实例化所述有状态简单算子的算子实例;运算模块,用于使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。
[0012]在其中的一些实施例中,所述运算模块包括批处理引擎和流处理引擎,其中,所述批处理引擎,用于当所述数据源的数据类型为所述批量数据时,加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果;所述流处理引擎,用于当所述数据源的数据类型为所述实时流数据时,加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果。
[0013]在其中的一些实施例中,所述流数据处理系统还包括简单算子库,其中,所述简单算子库中存储有所述无状态简单算子和所述有状态简单算子。
[0014]一种计算机系统,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述的流数据处理方法的步骤。
[0015]一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的流数据处理方法的步骤。
[0016]上述的流数据处理方法、流数据处理系统、计算机系统和计算机可读存储介质,实现了复杂的高频因子的计算。
附图说明
[0017]图1是本申请实施例提供的一种金融交易数据订阅系统的结构示意图。
[0018]图2是本实施例提供的一种流数据处理系统的结构示意图。
[0019]图3是本实施例提供的一种流数据处理系统的优选结构示意图一。
[0020]图4是本实施例提供的一种流数据处理系统的优选结构示意图二。
[0021]图5是本实施例提供的一种流数据处理系统的优选结构示意图三。
[0022]图6是本实施例提供的一种流数据处理系统的优选结构示意图四。
[0023本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种流数据处理方法,其特征在于包括:获取数据源和用于处理所述数据源的复杂算子的描述信息;判断所述数据源的数据类型是批量数据还是实时流数据;根据所述复杂算子的描述信息解析所述复杂算子,得到与所述复杂算子对应的多个简单算子及所述多个简单算子的嵌套关系,其中,所述简单算子包括无状态简单算子和有状态简单算子,且各所述有状态简单算子均包括预先配置的第一接口和第二接口,所述第一接口用于批量数据的运算,所述第二接口用于实时流数据的运算,且相同的有状态简单算子的第一接口和第二接口对内容相同的数据源有相同的运算结果;按照所述嵌套关系实例化所述多个简单算子,得到多个算子实例,其中,当所述数据源的数据类型为所述批量数据时,基于所述第一接口实例化所述有状态简单算子的算子实例,当所述数据源的数据类型为所述实时流数据时,基于所述第二接口实例化所述有状态简单算子的算子实例;使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果。2.根据权利要求1所述的流数据处理方法,其特征在于,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例包括:生成与所述复杂算子对应的缓存空间;生成与所述多个简单算子对应的多个算子实例,并根据所述嵌套关系在所述缓存空间中为各所述算子实例分配用于存储算子实例的输入数据、中间结果和运算结果的固定存储空间。3.根据权利要求1所述的流数据处理方法,其特征在于,按照所述嵌套关系实例化所述多个简单算子,得到所述多个算子实例还包括:删除所述多个算子实例中相同的算子实例。4.根据权利要求1所述的流数据处理方法,其特征在于,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:当所述数据源的数据类型为所述批量数据时,采用批处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果;当所述数据源的数据类型为所述实时流数据时,采用流处理引擎加载所述多个算子实例以处理所述数据源,得到所述复杂算子的运算结果。5.根据权利要求2所述的流数据处理方法,其特征在于,使用所述多个算子实例处理所述数据源,得到所述复杂算子的运算结果包括:获取输入数据,并将所述输入数据写入到所述缓存空间中相应的固定存储空间;当检测到所述缓存空间的任一用于存储输入数据的固定存储空间的数据发生变化时,使用与发生变化的固定存储空间对应的目标算子实例处理所述输入...

【专利技术属性】
技术研发人员:周小华
申请(专利权)人:浙江智臾科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1