用于分布式图计算的方法与设备与流程

文档序号:11063559阅读:260来源:国知局
用于分布式图计算的方法与设备与制造工艺

本申请涉及计算机领域,尤其涉及一种用于分布式图计算的技术。



背景技术:

随着图规模的膨胀,单机、单线程的图处理算法受到系统资源和计算时间的限制,无法保证算法成功而有效地运行。因此将图处理过程并行化、分布式化是解决问题的途径。



技术实现要素:

本申请的目的是提供一种用于分布式图计算的方法与设备。

根据本申请的一个方面,提供了一种用于分布式图计算的方法,其中,所述方法包括:

获取原始图数据;

根据图算法,处理所述原始图数据以获得所述图算法对应的规整图数据;

将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作。

根据本申请的另一个方面,提供了一种用于分布式图计算的设备,其中,所述设备包括:

第一装置,用于获取原始图数据;

第二装置,用于根据图算法,处理所述原始图数据以获得所述图算法对应的规整图数据;

第三装置,用于将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作。

与现有技术相比,本申请先获取原始图数据,然后根据图算法处理所述原始图数据以获得所述图算法对应的规整图数据,以便于适配不同种类的图算法,接着将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作,切断数据依赖,减少重复计算量,提高处理效率。进一步地,本申请在对图数据进行聚合操作及连接操作之前,先对其进行合并操作,从而提高运算效率,减轻网络传输压力。进一步地,本申请采用一种数据序列化和反序列化的方法,以便于计算过程中的产生的中间数据在计算节点之间传递。进一步地,本申请实现了通过SQL语句启动图算法,并且通过改进处理逻辑,使得进入图算法的数据是完整的图数据。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种用于分布式图计算的方法流程图;

图2示出根据本申请一个优选实施例的一种将图算法对应的计算任务分发至多个计算节点的示意图;

图3示出根据本申请另一个优选实施例的一种用于分布式图计算的方法流程图;

图4示出根据本申请另一个方面的一种用于分布式图计算的设备示意图;

图5示出根据本申请又一个优选实施例的一种用于分布式图计算的设备示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本发明作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

图1示出根据本申请一个方面的一种用于分布式图计算的方法流程图,其中,所述方法包括步骤S11、步骤S12和步骤S13。

具体地,在步骤S11中,设备1获取原始图数据;在步骤S12中,设备1根据图算法,处理所述原始图数据以获得所述图算法对应的规整图数据;在步骤S13中,设备1将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作。

在此,所述设备1包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、平板电脑、笔记本电脑等,所述移动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在步骤S11中,设备1获取原始图数据。

在此,所述原始图数据包括图的点数据和边数据;其中,边数据可以包括出发点和到达点的信息,还可以包括任何图算法所需的信息;如果是权重图,则边数据还带有权重数据。

在步骤S12中,设备1根据图算法,处理所述原始图数据以获得所述图算法对应的规整图数据。

例如,图算法往往需要一些参数来控制精度、运算次数等关键信息;所述图算法的种类可能有多种,对于不同的图算法,其参数也可能不同。在此,通过处理所述原始图数据,得到对应的规整图数据,以适配不同种类的图算法。

优选地,在步骤S12中,设备1还将所述规整图数据存储于分布式文件系统。

例如,所述分布式文件系统可以包括Hadoop分布式文件系统(Hadoop Distributed File System,HDFS);为了增加处理的并行度,在优选的实施例中,本申请将图数据存储于Hadoop分布式文件系统。

当然,本领域应能理解上述Hadoop分布式文件系统仅为举例,其他现有的或今后可能出现的分布式文件系统如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在优选的实施例中,采用了Hadoop分布式文件系统进行存储,还采用Hive作为交互工具;在实际应用场景中,除了数据外,通常还需要将一些Hive的配置传递给运算节点。在此,Hive是基于Hadoop的数据仓库工具,通过Hive可以将SQL语言应用于大数据场景,一方面兼容传统数据应用,另一方面屏蔽复杂的分布式编程细节。Hive支持多种计算引擎,其中Spark作为计算引擎拥有丰富的计算模型和算子,可以用于实现图算法。

优选地,在步骤S12中,设备1还根据所述图算法,对所述规整图数据进行类型检查。

例如,在数据进入图算法前,需要进行类型检查,避免错误数据导致算法出错。具体地,可以先对所述规整图数据进行字段分割,再进行列类型检查。在优选的实施例中,通过GraphOperator算子从Hive处获取输入数据的结构类型检查器StandardStructObjectInspector,该类型检查器囊括了每个字段的元素类型检查器ObjectInspector。

在步骤S13中,设备1将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作。

在优选的实施例中,在计算任务分发的过程中,为了提高处理效率,尽量将每个计算节点分配在存有图数据的HDFS节点上。在计算执行过程复杂而费时的情况下,通过持久化操作保存中间结果可以切断数据依赖,减少重复计算量。

优选地,在步骤S13中,设备1通过资源管理框架创建多个计算节点用于执行所述图算法对应的计算任务。

例如,所述通过资源管理框架可以包括Yarn;参照图2,通过资源管理框架Yarn为所述图算法对应的计算任务创建多个计算节点。

当然,本领域应能理解上述资源管理框架Yarn仅为举例,其他现有的或今后可能出现的资源管理框架如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,在步骤S13中,设备1将所述图算法对应的计算任务分发至分布式计算框架中的多个计算节点执行。

例如,所述分布式计算框架可以包括Spark;参照图2,采用分布式计算框架Spark作为计算引擎,由于数据的计算过程是滞后(lazy)模型,更有利于计算复杂度高的图计算。

当然,本领域应能理解上述分布式计算框架Spark仅为举例,其他现有的或今后可能出现的分布式计算框架如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述持久化条件包括以下至少任一项:所述分布式计算框架的弹性分布式数据集的计算耗时达到对应的时长阈值;所述分布式计算框架的弹性分布式数据集的当前依赖关系长度达到对应的长度阈值。

例如,若采用分布式计算框架Spark,在计算过程中会用到Spark的弹性分布式数据集(Resilient Distributed Datasets,RDD)。当GraphRDD有较长计算时间或依赖关系时(比如可以将计算耗时对应的时长阈值设置为10分钟,当GraphRDD的计算耗时达到10分钟),进行持久化操作,将数据和元素类型检查器ObjectInspector一起写入到本地磁盘中,并将对应的BlockId汇报给Spark Driver。在处理需要多轮迭代运算的图算法时,为了避免计算节点故障造成的数据丢失,持久化操作亦可以将数据写入Hadoop分布式文件系统(HDFS)中。

优选地,所述持久化操作包括以下至少任一项:存储当前计算结果;清除当前依赖关系。

在此,通过持久化(persist)操作可以保存计算结果、清除依赖关系,降低一些被反复使用的复杂变换的计算成本,并提供容错性。

优选地,在步骤S13中,设备1还对键值相同的所述规整图数据进行聚合操作及连接操作。

例如,以图数据的某一列或几列数据作为键值(key),进行聚合(groupBy)操作及连接(join)操作,由一个计算节点处理相同键值(key)的所有数据,因此计算节点间会有大量的数据传输。具体地,通过GraphRDD选取数据的指定字段,将这些字段序列化成键值(key),通过聚合操作及连接操作合并键值(key)相同的数据,并根据图算法的种类不同,施加不同运算。为了减少网络传输压力,在此,通过聚合操作先将数据在每个计算节点上合并一次,再将合并完的结果根据键值(key)传递到其他计算节点上。

在优选的实施中,为了提高连接效率,可以使用一种优化的数据结构和优化策略。当两个数据量庞大的GraphRDD做连接操作时,会对内存产生极大压力。在本实施例中,所采用的数据结构在内存资源紧张时会把数据存入磁盘中,从而避免内存溢出问题。当数据量极小的GraphRDD与数据量极大的GraphRDD做连接操作时,采用将较小数据量的GraphRDD拷贝至每个计算节点的连接优化策略,加快连接速度的同时也减轻了网络压力。

优选地,所述对键值相同的所述规整图数据进行聚合操作及连接操作还包括:进行所述聚合操作之前,在每个所述计算节点上对所述规整图数据进行合并操作。

在此,进行聚合操作及连接操作之前,在当前计算节点执行数据合并操作,可以减少网络数据的传输量,提高运算效率,从而减轻网络传输压力。

优选地,在步骤S13中,设备1当所述计算节点获取中间数据,先对中间数据进行反序列化,根据所述图算法处理反序列化后的中间数据,再对根据所述图算法处理后的中间数据进行序列化。

例如,图计算过程中会产生各种中间数据,为了能降低计算节点解析数据类型的CPU以及内存开销,本实施例采用一种基于类型检查的数据序列化和反序列化方法,将数据类型解析器随同数据一起传递给计算节点。具体地,GraphOperator将原始数据和元素类型检查器ObjectInspector组合成GraphRDD,作为每个图算法算子的输入数据。当涉及到Shuffle操作时,使用ObjectInspector序列化每个数据,并在其他计算节点反序列化。

优选地,参照图3,所述方法还包括步骤S14’和步骤S15’;在步骤S14’中,设备1获取待执行的SQL语句;在步骤S15’中,设备1解析所述SQL语句以调用对应的图算法。

在现有技术中,因为图算法有复杂的计算过程和大量迭代次数,无法通过SQL实现。

而在本实施例中,将分布式计算框架Spark作为计算引擎,以自定义函数的方式将众多图算法集成于Hive中。从而,可以将图算法与其他SQL语句有机组合,降低处理难度。

优选地,在步骤S15’中,设备1利用自定义函数注册多个图算法,其中,每个图算法对应一个注册函数。

例如,可以利用Hive的UDTF(User Defined Table-Generating Function,用户自定义表生成函数)机制,向Hive注册图算法的实现类名,达到通过SQL语句启动图算法的目的。在此,UDTF是Hive为用户添加自定函数而设计的一种接口,用户可以通过UDTF的process方法,获取一行输入,并将其转换成一行或多行输出。

然而UDTF的“一行输入,多行输出”的模型不能满足图计算的需求。在本实施例中,通过在UDTF基础上添加新的处理逻辑,使得进入图算法的数据是完整的图数据。在此,可以利用UDTF接口,为每个图算法注册一个函数。本实施例实现了基于UDTF的Operator算子,从而解决图计算的需求。具体地,首先实现一个GraphOperator算子,作为所有图算法算子的基类。GraphOperator继承UDTF接口,因此可以通过FunctionRegistry的registerGenericUDTF方法,将不同图算法注册进Hive中。在本实施例改动了Hive的TableScanOperator算子和UDTFOperator算子。UDTFOperator算子从TableScanOperator算子处获取被封装为RDD的输入数据,并传递给GraphOperator算子。每个继承GraphOperator的图算法算子就都可以访问到完整的图数据。

图4示出根据本申请另一个方面的一种用于分布式图计算的设备1,其中,所述设备1包括第一装置11、第二装置12和第三装置13。

具体地,所述第一装置11获取原始图数据;所述第二装置12根据图算法,处理所述原始图数据以获得所述图算法对应的规整图数据;所述第三装置13将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作。

在此,所述设备1包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、平板电脑、笔记本电脑等,所述移动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

所述第一装置11获取原始图数据。

在此,所述原始图数据包括图的点数据和边数据;其中,边数据可以包括出发点和到达点的信息,还可以包括任何图算法所需的信息;如果是权重图,则边数据还带有权重数据。

所述第二装置12根据图算法,处理所述原始图数据以获得所述图算法对应的规整图数据。

例如,图算法往往需要一些参数来控制精度、运算次数等关键信息;所述图算法的种类可能有多种,对于不同的图算法,其参数也可能不同。在此,通过处理所述原始图数据,得到对应的规整图数据,以适配不同种类的图算法。

优选地,所述第二装置12还将所述规整图数据存储于分布式文件系统。

例如,所述分布式文件系统可以包括Hadoop分布式文件系统(Hadoop Distributed File System,HDFS);为了增加处理的并行度,在优选的实施例中,本申请将图数据存储于Hadoop分布式文件系统。

当然,本领域应能理解上述Hadoop分布式文件系统仅为举例,其他现有的或今后可能出现的分布式文件系统如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在优选的实施例中,采用了Hadoop分布式文件系统进行存储,还采用Hive作为交互工具;在实际应用场景中,除了数据外,通常还需要将一些Hive的配置传递给运算节点。在此,Hive是基于Hadoop的数据仓库工具,通过Hive可以将SQL语言应用于大数据场景,一方面兼容传统数据应用,另一方面屏蔽复杂的分布式编程细节。Hive支持多种计算引擎,其中Spark作为计算引擎拥有丰富的计算模型和算子,可以用于实现图算法。

优选地,所述第二装置12还根据所述图算法,对所述规整图数据进行类型检查。

例如,在数据进入图算法前,需要进行类型检查,避免错误数据导致算法出错。具体地,可以先对所述规整图数据进行字段分割,再进行列类型检查。在优选的实施例中,通过GraphOperator算子从Hive处获取输入数据的结构类型检查器StandardStructObjectInspector,该类型检查器囊括了每个字段的元素类型检查器ObjectInspector。

所述第三装置13将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作。

在优选的实施例中,在计算任务分发的过程中,为了提高处理效率,尽量将每个计算节点分配在存有图数据的HDFS节点上。在计算执行过程复杂而费时的情况下,通过持久化操作保存中间结果可以切断数据依赖,减少重复计算量。

优选地,所述第三装置13通过资源管理框架创建多个计算节点用于执行所述图算法对应的计算任务。

例如,所述通过资源管理框架可以包括Yarn;参照图2,通过资源管理框架Yarn为所述图算法对应的计算任务创建多个计算节点。

当然,本领域应能理解上述资源管理框架Yarn仅为举例,其他现有的或今后可能出现的资源管理框架如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述第三装置13将所述图算法对应的计算任务分发至分布式计算框架中的多个计算节点执行。

例如,所述分布式计算框架可以包括Spark;参照图2,采用分布式计算框架Spark作为计算引擎,由于数据的计算过程是滞后(lazy)模型,更有利于计算复杂度高的图计算。

当然,本领域应能理解上述分布式计算框架Spark仅为举例,其他现有的或今后可能出现的分布式计算框架如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述持久化条件包括以下至少任一项:所述分布式计算框架的弹性分布式数据集的计算耗时达到对应的时长阈值;所述分布式计算框架的弹性分布式数据集的当前依赖关系长度达到对应的长度阈值。

例如,若采用分布式计算框架Spark,在计算过程中会用到Spark的弹性分布式数据集(Resilient Distributed Datasets,RDD)。当GraphRDD有较长计算时间或依赖关系时(比如可以将计算耗时对应的时长阈值设置为10分钟,当GraphRDD的计算耗时达到10分钟),进行持久化操作,将数据和元素类型检查器ObjectInspector一起写入到本地磁盘中,并将对应的BlockId汇报给Spark Driver。在处理需要多轮迭代运算的图算法时,为了避免计算节点故障造成的数据丢失,持久化操作亦可以将数据写入Hadoop分布式文件系统(HDFS)中。

优选地,所述持久化操作包括以下至少任一项:存储当前计算结果;清除当前依赖关系。

在此,通过持久化(persist)操作可以保存计算结果、清除依赖关系,降低一些被反复使用的复杂变换的计算成本,并提供容错性。

优选地,所述三装置13还对键值相同的所述规整图数据进行聚合操作及连接操作。

例如,以图数据的某一列或几列数据作为键值(key),进行聚合(groupBy)操作及连接(join)操作,由一个计算节点处理相同键值(key)的所有数据,因此计算节点间会有大量的数据传输。具体地,通过GraphRDD选取数据的指定字段,将这些字段序列化成键值(key),通过聚合操作及连接操作合并键值(key)相同的数据,并根据图算法的种类不同,施加不同运算。为了减少网络传输压力,在此,通过聚合操作先将数据在每个计算节点上合并一次,再将合并完的结果根据键值(key)传递到其他计算节点上。

在优选的实施中,为了提高连接效率,可以使用一种优化的数据结构和优化策略。当两个数据量庞大的GraphRDD做连接操作时,会对内存产生极大压力。在本实施例中,所采用的数据结构在内存资源紧张时会把数据存入磁盘中,从而避免内存溢出问题。当数据量极小的GraphRDD与数据量极大的GraphRDD做连接操作时,采用将较小数据量的GraphRDD拷贝至每个计算节点的连接优化策略,加快连接速度的同时也减轻了网络压力。

优选地,所述对键值相同的所述规整图数据进行聚合操作及连接操作还包括:进行所述聚合操作之前,在每个所述计算节点上对所述规整图数据进行合并操作。

在此,进行聚合操作及连接操作之前,在当前计算节点执行数据合并操作,可以减少网络数据的传输量,提高运算效率,从而减轻网络传输压力。

优选地,所述第三装置13当所述计算节点获取中间数据,先对中间数据进行反序列化,根据所述图算法处理反序列化后的中间数据,再对根据所述图算法处理后的中间数据进行序列化。

例如,图计算过程中会产生各种中间数据,为了能降低计算节点解析数据类型的CPU以及内存开销,本实施例采用一种基于类型检查的数据序列化和反序列化方法,将数据类型解析器随同数据一起传递给计算节点。具体地,GraphOperator将原始数据和元素类型检查器ObjectInspector组合成GraphRDD,作为每个图算法算子的输入数据。当涉及到Shuffle操作时,使用ObjectInspector序列化每个数据,并在其他计算节点反序列化。

优选地,参照图5,所述设备1还包括第四装置14’和第五装置15’;所述第四装置14’获取待执行的SQL语句;所述第五装置15’解析所述SQL语句以调用对应的图算法。

在现有技术中,因为图算法有复杂的计算过程和大量迭代次数,无法通过SQL实现。

而在本实施例中,将分布式计算框架Spark作为计算引擎,以自定义函数的方式将众多图算法集成于Hive中。从而,可以将图算法与其他SQL语句有机组合,降低处理难度。

优选地,所述第五装置15’利用自定义函数注册多个图算法,其中,每个图算法对应一个注册函数。

例如,可以利用Hive的UDTF(User Defined Table-Generating Function,用户自定义表生成函数)机制,向Hive注册图算法的实现类名,达到通过SQL语句启动图算法的目的。在此,UDTF是Hive为用户添加自定函数而设计的接口,用户可以通过UDTF的process方法,获取一行输入,并将其转换成一行或多行输出。

然而UDTF的“一行输入,多行输出”的模型不能满足图计算的需求。在本实施例中,通过在UDTF基础上添加新的处理逻辑,使得进入图算法的数据是完整的图数据。在此,可以利用UDTF接口,为每个图算法注册一个函数。本实施例实现了基于UDTF的Operator算子,从而解决图计算的需求。具体地,首先实现一个GraphOperator算子,作为所有图算法算子的基类。GraphOperator继承UDTF接口,因此可以通过FunctionRegistry的registerGenericUDTF方法,将不同图算法注册进Hive中。在本实施例改动了Hive的TableScanOperator算子和UDTFOperator算子。UDTFOperator算子从TableScanOperator算子处获取被封装为RDD的输入数据,并传递给GraphOperator算子。每个继承GraphOperator的图算法算子就都可以访问到完整的图数据。

与现有技术相比,本申请先获取原始图数据,然后根据图算法处理所述原始图数据以获得所述图算法对应的规整图数据,以便于适配不同种类的图算法,接着将所述图算法对应的计算任务分发至多个计算节点执行,其中,在执行过程中当满足持久化条件,进行持久化操作,切断数据依赖,减少重复计算量,提高处理效率。进一步地,本申请在对图数据进行聚合操作及连接操作之前,先对其进行合并操作,从而提高运算效率,减轻网络传输压力。进一步地,本申请采用一种数据序列化和反序列化的方法,以便于计算过程中的产生的中间数据在计算节点之间传递。进一步地,本申请实现了通过SQL语句启动图算法,并且通过改进处理逻辑,使得进入图算法的数据是完整的图数据。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1