CN114327363A - 图数据处理方法、装置、计算设备、存储介质和程序产品 - Google Patents
图数据处理方法、装置、计算设备、存储介质和程序产品 Download PDFInfo
- Publication number
- CN114327363A CN114327363A CN202111075644.3A CN202111075644A CN114327363A CN 114327363 A CN114327363 A CN 114327363A CN 202111075644 A CN202111075644 A CN 202111075644A CN 114327363 A CN114327363 A CN 114327363A
- Authority
- CN
- China
- Prior art keywords
- node
- radix
- counter
- graph data
- nodes
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种图数据处理方法,包括:获取有向图数据;基于所获取的图数据,在参数服务器上为每个节点创建相关联的基数计数器;基于每个节点的节点信息初始化相关联的基数计数器;迭代更新基数计数器,直至达到期望迭代轮次数,在每轮次迭代中:针对每个源节点,从参数服务器获取与该源节点相关联的基数计数器,并将该基数计数器传送至与该源节点相关的所有尾节点,针对每个尾节点,基于该基数计数器更新参数服务器上的与该尾节点相关联的基数计数器;基于迭代更新后的基数计数器,确定多个节点中的至少一个节点的期望阶数的邻域内的节点数量。本申请可以用于能够抽象成图数据进行处理的多个应用,包括金融、社交、车辆交通等领域。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种图数据处理方法、图数据处理装置、计算设备、计算机可读存储介质和计算机程序产品。
背景技术
随着计算机网络的不断普及和发展,人们越来越多地参与到各种网络关系中,例如社交网络、金融交易网络、车联网等。典型地,可以使用图(Graph)来描述这些网络关系。具体而言,图中的节点可以对应于网络关系中的各个参与方,边可以对应于不同参与方之间存在的网络关联,例如,在社交网络中,边可以对应于不同参与方之间的好友关系、通信关系等,或者,在金融交易网络中,边可以对应于不同参与方之间的支付或转账关系等。再例如,在车联网中,边可以对应于不同车辆之间的距离、速度、方位关系。
在一些情境中,人们可能对与一个或多个参与方直接或间接存在网络关联的参与方的数目感兴趣,例如以便监控该一个或多个参与方是否存在异常活动等。这可以通过统计图中对应节点的某个邻域内的不重复的节点的数目来确定。然而,在当前大多数网络关系中,往往存在巨大数量的参与方,不同参与方之间可以存在错综复杂的网络关联,由此,用于描述这些网络关系的图也将包含海量的数据。在一般处理器或计算引擎中,基于这种包含海量数据的图执行上述统计将占用较大的数据存储空间和计算资源,并在处理器或计算引擎内部导致较高的数据交互压力。
发明内容
有鉴于此,本申请提供了一种图数据处理方法、图数据处理装置、计算设备、计算机可读存储介质以及计算机程序产品,可以缓解、减轻或甚至消除上述问题。
根据本申请的一方面,提供了一种图数据处理方法,其特征在于,包括:获取有向图数据,有向图数据包括与多个节点相关的多项边数据,其中每项边数据表示一条从源节点指向尾节点的边,并包括相应的源节点标识和尾节点标识;基于所获取的有向图数据,在参数服务器上为每个节点创建相关联的基数计数器,每个基数计数器被配置为基于被添加至该基数计数器的节点标识来确定基数估算值;基于每个节点的节点信息初始化与该节点相关联的基数计数器,节点信息包括节点标识;迭代更新基数计数器,直至达到期望迭代轮次数,在每轮次迭代中执行以下迭代操作:针对每个源节点,从参数服务器获取与该源节点相关联的基数计数器,并将所获取的基数计数器传送至与该源节点相关的所有尾节点;针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的基数计数器更新参数服务器上的与该尾节点相关联的基数计数器;基于迭代更新后的基数计数器,确定多个节点中的至少一个节点的期望阶数的邻域内的节点数量,其中期望阶数与期望迭代轮次数相等。
在一些实施例中,获取有向图数据包括:接收无向图数据,无向图数据包括与多个节点相关的多项边数据,其中每项边数据表示一条连接两个节点的边,并包括相应的两个节点标识;基于无向图数据中的每项边数据,交换两个节点标识的位置,以生成附加边数据;将无向图数据中的多项边数据和所生成的多项附加边数据的组合作为有向图数据。
在一些实施例中,节点信息还包括节点标签,并且其中,基于每个节点的节点信息初始化相关联的基数计数器包括:当该节点的节点标签属于目标标签时,将该节点的节点标识添加至相关联的基数计数器,以便将该基数计数器的基数估算值初始化为1;当该节点的节点标签不属于目标标签时,不将该节点的节点标识添加至相关联的基数计数器,以便将该基数计数器的基数估算值初始化为0。
在一些实施例中,基于所接收的来自所有相关源节点的基数计数器更新参数服务器上的与该尾节点相关联的基数计数器包括:对所接收的来自所有相关源节点的基数计数器进行去重合并,以生成更新基数计数器;基于所生成的更新基数计数器更新参数服务器上的与该尾节点相关联的基数计数器。
在一些实施例中,基于所生成的更新基数计数器更新参数服务器上的与该节点相关联的基数计数器包括:将所生成的更新基数计数器推送至参数服务器,其中,参数服务器被配置为在接收到更新基数计数器后,对与同一节点相关联的更新基数计数器和基数计数器进行去重合并,以作为更新后的基数计数器。
在一些实施例中,该图数据处理方法还包括:针对有向图数据,基于源节点标识,对具有相同源节点的尾节点进行聚合,以得到与每个源节点对应的尾节点集合,并且其中,将所获取的基数计数器传送至与该源节点相关的所有尾节点包括:将所获取的基数计数器传送至与该源节点对应的尾节点集合中的所有尾节点。
在一些实施例中,该图数据处理方法还包括:将有向图数据划分为多组图数据;其中,在每轮次迭代中执行迭代操作包括:在每轮次迭代中,并行地针对各组图数据执行迭代操作。
在一些实施例中,基于每个节点的节点信息初始化相关联的基数计数器包括:并行地基于各组图数据中的每个节点的节点信息初始化相关联的基数计数器。
在一些实施例中,在参数服务器上为每个节点创建相关联的基数计数器包括:在参数服务器上为每个节点创建相关联的第一基数计数器和第二基数计数器,并且其中,并行地针对各组图数据执行迭代操作包括:针对每组图数据,将该组图数据进一步划分为多个数据批次;依次针对每一数据批次,执行以下操作:针对该数据批次中的每个源节点,从参数服务器获取与该源节点相关联的第一基数计数器,并将所获取的第一基数计数器传送至与该源节点相关的所有尾节点,针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的第一基数计数器更新参数服务器上的与该尾节点相关联的第二基数计数器,其中,参数服务器被配置为在每轮次迭代结束时,基于每个节点的第二基数计数器更新第一基数计数器。
在一些实施例中,基数计数器被配置为:利用预设哈希函数确定与被添加至该基数计数器的每个节点标识对应的比特串;基于每个比特串中至少部分比特位中首次出现1的位次估算基数值。
在一些实施例中,有向图数据包括金融交易图数据,每个节点标识包括交易方标识,并且每项边数据表示从源交易方指向尾交易方的交易支付关系。
根据本申请的另一方面,提供了一种图数据处理装置,其特征在于,包括:获取模块,被配置为获取有向图数据,有向图数据包括与多个节点相关的多项边数据,其中每项边数据表示一条从源节点指向尾节点的边,并包括相应的源节点标识和尾节点标识;创建模块,被配置为基于所获取的有向图数据,在参数服务器上为每个节点创建相关联的基数计数器,每个基数计数器被配置为基于被添加至该基数计数器的节点标识来确定基数估算值;初始化模块,被配置为基于每个节点的节点信息初始化与该节点相关联的基数计数器,节点信息包括节点标识;迭代模块,被配置为迭代更新基数计数器,直至达到期望迭代轮次数,在每轮次迭代中执行以下迭代操作:针对每个源节点,从参数服务器获取与该源节点相关联的基数计数器,并将所获取的基数计数器传送至与该源节点相关的所有尾节点;针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的基数计数器更新参数服务器上的与该尾节点相关联的基数计数器;确定模块,被配置为基于迭代更新后的基数计数器,确定多个节点中的至少一个节点的期望阶数的邻域内的节点数量,其中期望阶数与期望迭代轮次数相等。
根据本申请的另一方面,提供了一种计算设备,其特征在于,包括:存储器,其被配置成存储计算机可执行指令;处理器,其被配置成当计算机可执行指令被处理器执行时执行根据前述方面所描述的图数据处理方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,当计算机可执行指令被执行时,执行根据前述方面所描述的图数据处理方法。
根据本申请的另一方面,提供了一种计算机程序产品,包括计算机指令,计算机指令在被处理器执行时实现根据前述方面所描述的图数据处理方法的步骤。
在本申请提供的图数据处理方案中,可以基于所获取的图数据在参数服务器上为每个节点创建相关联的基数计数器,基于每个节点的节点信息初始化相关联的基数计数器,并在各个迭代轮次中通过在各个尾节点处会聚相关源节点的基数计数器来更新参数服务器上的相应基数计数器,当达到期望迭代轮次数时,可以基于参数服务器上的各个基数计数器确定相应节点的期望阶数的邻域内的节点数量。通过引入参数服务器来存储和更新与各个节点相关联的基数计数器,可以降低对执行该方案的处理器或计算引擎的存储空间以及计算资源的占用。此外,参数服务器可以允许高并行度的数据交互,相比于在处理器或计算引擎本地存储基数计数器,引入参数服务器有助于提高数据交互效率,降低数据交互压力,这进而有利于提高整体方案的执行效率。
根据在下文中所描述的实施例,本申请的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本申请的更多细节、特征和优点被公开,在附图中:
图1示意性示出了可以应用本申请提供的技术方案的示例应用场景;
图2A和2B分别示意性示出了无向图和有向图的示例;
图3示意性示出了根据相关技术的图数据处理架构;
图4A示意性示出了根据本申请的一些实施例的图数据处理方法的示例流程图;
图4B示意性示出了根据本申请的一些实施例的图数据处理方法的另一示例流程图;
图4C示意性示出了根据本申请的一些实施例的图数据处理方法的又一示例流程图;
图5示意性示出了根据本申请的一些实施例的从无向图至有向图的转化示例;
图6示意性示出了根据本申请的一些实施例的示例图数据处理架构;
图7示意性示出了根据本申请的一些实施例的图数据处理装置的示例框图;
图8示意性示出了根据本申请的一些实施例的计算设备的示例框图。
具体实施方式
在详细介绍本申请的实施例之前,首先对一些相关的概念进行解释:
图(Graph):在计算机技术领域中,图可以理解为一些节点(也称为顶点或交点)的集合,这些节点通过一系列边(也称为链接)连接。如前文所提到的,图可以用于描述各种网络关系,例如社交网络、金融交易网络等。根据边是否具有方向性,图可以分为无向图和有向图;根据是否存在不同类型的节点和/或边,图可以分为同构图和异构图。在计算机中,图通常可以通过邻接表或邻接矩阵来描述。在邻接表中,每条边可以通过一对节点标识来表示;在邻接矩阵中,行和列可以表示节点,由两个节点决定的矩阵中的对应元素表示该两个节点之间是否存在边。一般而言,当图比较稀疏时,即相对于节点总数而言,每个节点仅与较少的节点相连接,使用邻接表来描述图可能是更优选的;相反,当图比较密集时,即每个节点都与大多数节点相连接,使用邻接矩阵来描述图可能是更优选的。此外,由于邻接表形式的数据更便于切分,因此其更适用于大规模图数据的分布式存储。
无向图:若图中的边仅指示连接关系,而不具有方向性,则该图可以被称为无向图。无向图通常可以用于描述参与方之间的关联不具有方向性的网络关系。例如,在社交网络中,边可以用于指示参与方之间的好友关系,这种好友关系可以被认为是不具有方向性的关联,因此这种网络关系可以通过无向图来描述。
有向图:若图中的边具有方向性,则该图可以被称为有向图。有向图通常可以用于描述参与方之间的关联具有方向性的网络关系。例如,在金融交易网络中,边可以用于指示一个参与方向另一个参与方的转账关系,这种转账关系可以被认为是具有方向性的关联,因此这种网络关系可以通过有向图来描述。
r阶邻域节点集:假设在图G(V,E)中,V表示节点集合,E表示边集合,对于任意两个节点x,y∈V,从x到y的最短路径长度可以表示为d(x,y),该最短路径长度可以通过路径所包含的边的数目来计量,那么,节点x的r阶(r≥1)邻域节点集可以定义为Nr(x)={y│y∈V,d(y,x)≤r},即:图G中到达节点x的最短路径不大于r的节点所组成的集合,该集合包括节点x本身。
基数(Cardinality):指一个集合中不重复元素的个数,确定邻域节点的个数可以理解为确定该邻域节点集的基数。在相关技术中,存在诸如基于B树(B tree)的基数计数、基于bitmap的基数计数等精确确定基数的方法,也存在诸如Linear Counting(LC)、LogLogCounting(LLC)、HyperLogLog Counting(HLLC)及Adaptive Counting(AC)等基数估算方法。一般而言,在处理海量数据时,可以使用上述基数估算方法确定基数的估算值,以便在计数精度和时间消耗以及存储资源、计算资源的利用效率之间达到平衡。
基数估算值:指基数的估计值,即对一个集合中不重复元素的个数的一个估算的值。
参数服务器(Parameter Server,PS):指用于存放参数的服务器,其通常采用分布式方式来存储参数,并允许所存储的参数被调用或存储新参数。
图1示意性示出了可以应用本申请的图数据处理方案的示例应用场景100。
如图1所示,场景100可以包括服务器110,本申请所提供的图数据处理方案可以部署于服务器110,并用于处理图数据以确定一个或多个节点的期望阶数的邻域节点集的基数或基数估算值。这些服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。此外,可选地,这些服务器仅作为示例被示出,实际也可以替代地使用其他具有计算能力及存储能力的设备或设备的组合来提供相应的服务。
可选地,用户130可以通过终端设备120经由网络150访问服务器110,以便获取服务器110所提供的服务。例如,用户130可以通过终端设备120提供的用户接口来输入指令,以便启动部署于服务器110上的图数据处理方案、获取处理结果等。示例性地,终端设备130包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。
可选地,服务器110可以与外部数据库140相链接,以便例如从数据库140获取待处理的图数据或将处理结果存放至数据库140等。示例性地,数据库140可以是独立的数据存储设备或设备群,或者也可以是与其他在线服务(诸如提供社交、金融交易等功能的在线服务)相关的后端数据存储设备或设备群。
此外,在本申请中,网络140可以是经由诸如电缆、光纤等连接的有线网络,也可以是诸如2G、3G、4G、5G、Wi-Fi、蓝牙、ZigBee、Li-Fi等的无线网络。
图2A和2B分别示意性示出了无向图和有向图的示例。
如图2A所示,无向图200A包括节点A-H,这些节点之间的连线可以表示边,每条边仅表示节点之间的连接关系,而不具有方向性。示例性地,可以使用邻接表形式的图数据来描述该无向图200A,图数据例如可以包括边数据(A,B)、(B,C)、(C,D)、(C,E)等,其中A-H可以视为节点标识,各项边数据中的节点标识的次序并不指示边的方向性。可选地,也可以使用其他类型的节点标识,诸如数字编号等。
如图2B所示,有向图200B包括节点A-H,这些节点之间的带箭头的连线表示节点之间的连接关系,并具有方向性。示例性地,可以使用邻接表形式的图数据来描述该有向图200B,图数据例如可以包括边数据(A,B)、(B,A)、(C,B)、(B,E)等,其中A-H可以视为节点标识,各项边数据中的节点标识的次序指示边的方向性,例如边数据(A,B)表示从节点A指向节点B的边,而边数据(B,A)表示从节点B指向节点A的边。示例性地,可以使用数字编号作为节点标识以便后续处理。
在图2B中,由节点D至节点G存在2条路径,分别是(D,G)和(D,H)-(H,G),因此,由节点D至节点G的最短路径为1。类似地,可以定义其他节点之间的最短路径。进一步地,以节点E为例,其0阶邻域节点集仅包括节点E自身,1阶邻域节点集包括节点B、C、E、F和G(这些节点与节点E之间的最短路径均小于或等于1),2阶邻域节点集包括节点A、B、C、D、E、F、G和H(这些节点与节点E之间的最短路径均小于或等于2)。类似地,可以定义其他节点、其他阶数的邻域节点集。
图3示意性示出了根据相关技术的图数据处理架构300。如图3所示,该架构300包括驱动器310和执行器320,可选地,可以存在多个执行器320。在这种架构下,驱动器310可以负责资源申请、任务分配和监控等,而执行器320可以负责执行所分配的任务。示例性地,当执行诸如图数据处理的应用程序时,驱动器310可以向资源管理模块申请存储和/或计算资源,启动一个或多个执行器320,并将任务分配至各个执行器320,例如向各个执行器发送相应应用程序和文件数据等。各个执行器320可以执行所分配的任务,并在执行结束后将执行结果返回至驱动器。架构300可以通过处理器或计算引擎来实现。示例性地,架构300可以通过诸如Spark的适合大规模数据处理的计算引擎来实现。
然而,申请人发现,在利用图数据处理架构300处理图数据以确定节点的期望阶数的邻域内的节点数量的过程中,往往需要在驱动器310上存储与每个节点相关的计数器,并需要在多轮次迭代过程中不断合并不同计数器并更新各个计数器。当处理大规模或超大规模(例如百亿、千亿或更高数量级)的图数据时,在驱动器310上存储计数器将占用大量存储空间,并且在每轮次迭代过程中,驱动器310需要向各个执行器发送计数器,并收集针对各个计数器的更新,这种发送和收集将耗费大量时间,并占用大量通信资源,从而容易遇到驱动器的单点网络瓶颈,影响整体的处理性能。并且,在合并不同计数器以及更新各个计数器的过程中可能涉及大量的数据重组,在数据量较大的情况下,这些数据重组也会带来巨大的通信及计算资源开销。此外,在诸如Spark的计算引擎中,其计算一般基于RDD(ResilientDistributed Datasets,抽象弹性分布式数据集)来完成,RDD是一种容错的、并行的数据结构,其有利于实现更高的数据处理效率,但是,由于RDD的不可变性(或只读性),当涉及大量更新操作时,只能通过额外新建并存储RDD来实现,这会进一步加剧对存储和/或计算资源的消耗。
基于上述考虑,申请人提出了一种基于参数服务器的图数据处理方法,其更加适用于在超大规模的图数据上实现优越的处理性能。图4A示意性示出了根据本申请的一些实施例的图数据处理方法400A的示例流程图。示例性地,该方法400A可以通过诸如应用程序等形式部署于图1的应用场景100中的服务器110上。
在步骤410,可以获取有向图数据,所获取的有向图数据可以包括与多个节点相关的多项边数据,其中每项边数据表示一条从源节点指向尾节点的边,并包括相应的源节点标识和尾节点标识。在此处以及本申请的其他表述中,源节点和尾节点分别表示一项边数据所代表的有向边的起点和终点,在相关技术领域中,源节点也可能被称为头节点等,尾节点也可能被称为目标节点等。示例性地,该有向图数据可以类似于参考图2B描述的有向图数据,但是可以包括与不同数量的节点相关的不同数量的边数据,例如可以涉及数量大得多的节点和边数据。该有向图数据例如可以是由用户通过终端设备的用户接口输入的,或者也可以是从其他在线服务的存储器获取的,或者也可以是通过对其他初始数据进行预处理而获取的。
在步骤420,可以基于所获取的有向图数据,在参数服务器上为每个节点创建相关联的基数计数器,每个基数计数器可以被配置为基于被添加至该基数计数器的节点标识来确定基数估算值。参数服务器可以是任何已有的或自行开发的参数服务器,其可以提供分布式参数存储服务,并允许并行的、异步的参数存取操作。示例性地,所创建的基数计数器可以被存放在参数服务器的不同存储分区中。基数计数器可以根据任何已知的或自行开发的基数确定或估算算法来确定基数估算值,例如前文提到的基于B树或bitmap的基数计数方法或者诸如LC、LLC、HLLC及AC的基数估算方法等。示例性地,当一个或多个节点标识被添加至基数计数器时,该基数计数器可以根据相应算法确定所添加的节点标识的基数,也即所添加的节点标识中存在多少个不同的节点标识。当图数据规模较大时,为了降低计算复杂度,提高计数效率和节约资源,可以采用基于基数估算方法的基数计数器。
在步骤430,可以基于每个节点的节点信息初始化与该节点相关联的基数计数器,其中节点信息可以包括节点标识。在一些实施例中,与各个节点相关联的基数计数器可以全部被初始化为1,即在各个节点的0阶邻域内,仅存在该节点本身,因为各个节点的0阶邻域节点集的基数可以被确定为1。在另一些实施例中,可以选择性地将与各个节点相关联的基数计数器初始化为0或者1,这种选择性的初始化可以基于有关节点信息的预设条件来执行,例如节点标识是否属于某个预设集合、节点是否具有某些预设属性等。
在步骤440,可以迭代更新基数计数器,直至达到期望迭代轮次数。具体地,在每轮次迭代中可以执行以下迭代操作:针对每个源节点,从参数服务器获取与该源节点相关联的基数计数器,并将所获取的基数计数器传送至与该源节点相关的所有尾节点;针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的基数计数器更新参数服务器上的与该尾节点相关联的基数计数器。示例性地,可以创建一个迭代序数来记录迭代轮次。一般地,在迭代开始之前,该迭代序数可以被初始化为0或1,并在每轮次迭代开始或结束时令迭代序数加1,当迭代序数指示已完成的迭代轮次达到期望迭代轮次时,可以结束迭代。示例性地,在第i个迭代轮次中,每个尾节点可以获取到所有相关源节点的经过i-1次迭代更新的基数计数器,当经过i-1次迭代更新的基数计数器中的基数表示对应节点的i-1阶邻域中的不重复的节点数目(或其估算值)时,通过对所获取的所有相关源节点的经过i-1次迭代更新的基数计数器和与该尾节点相关联的经过i-1次迭代更新的基数计数器(存储在参数服务器上)进行去重合并,更新存储在参数服务器上的与该尾节点相关联的基数计数器,则第i个迭代轮次结束后,存储在参数服务器上的各个基数计数器中的基数表示对应节点的i阶邻域中的不重复的节点数目(或其估算值)。换言之,每当多执行一个迭代轮次,参数服务器上的与各个节点相关联的基数计数器中的基数所对应的节点邻域的阶数将加1。由于参数服务器上的各个基数计数器在迭代开始前基于相应节点的0阶邻域(即相应节点本身)被初始化,因此进行了期望轮次的迭代后,参数服务器上的各个基数计数器中的基数可以反映相应节点的对应阶数的邻域内的不重复的节点数目。
在步骤450,可以基于迭代更新后的基数计数器,确定多个节点中的至少一个节点的期望阶数的邻域内的节点数量,其中期望阶数与上述期望迭代轮次数相等。示例性地,可以通过读取参数服务器上的基数计数器来确定对应节点的期望阶数的邻域内的节点数量,该数量可以是误差容许范围内的估算量。
根据图数据处理方法400获取节点的期望阶数的邻域内的节点数量,通过引入参数服务器来存储和更新与各个节点相关联的基数计数器,可以降低对执行该方案的处理器或计算引擎的存储空间以及计算资源的占用。此外,参数服务器可以允许高并行度的数据交互,相比于在处理器或计算引擎本地存储基数计数器,引入参数服务器有助于提高数据交互效率,降低数据交互压力,这进而有利于提高整体方案的执行效率。另外,由于节点的期望阶数的邻域内的节点数量是基于确定基数估算值的基数计数器来实现的,这将特别适合于大数据背景下的图数据处理,在大数据背景下,精确计数往往是非常困难的,并将耗费大量的计算和/或存储资源。
在一些实施例中,上述有向图数据可以包括金融交易图数据,其中每个节点标识可以是交易方标识,并且每项边数据可以表示从源交易方指向尾交易方的交易支付关系。示例性地,每个节点标识可以是交易方的身份标识或者交易账号标识,交易支付关系可以是转账关系、其他类型物资的转移关系等。通过确定交易方节点的某阶邻域内的不重复交易方的数量,可以用于或辅助例如监控交易方是否存在异常活动等。
在一些实施例中,上述有向图数据可以包括交通车辆数据,其中每个节点标识可以是道路上的车辆节点标识,并且每项边数据可以表述从一个车辆节点到另一个车辆节点的距离。在这样的实施例中,可以通过上述方法确定某个车辆节点的某阶邻域内的不重复车辆节点的数量,以供后续分析使用。
在一些实施例中,上述有向图数据可以基于无向图数据来获取。示例性地,图5示意性示出了根据本申请的一些实施例的从无向图510至有向图520的转化过程。
首先,可以接收无向图数据,所接收的无向图数据可以包括与多个节点相关的多项边数据,其中每项边数据表示一条连接两个节点的边,并包括相应的两个节点标识。示例性地,所接收的无向图数据可以用于描述与无向图510类似的无向图,但是其所涉及的节点和边的数目可以比无向图510大得多。以无向图510为例,其具有节点A-D,用于描述其的图数据可以包括边数据(A,B)、(B,C)、(C,D)、(C,E)和(D,E)。
然后,可以基于无向图数据中的每项边数据,交换两个节点标识的位置,以生成附加边数据。继续以无向图510为例,可以交换边数据(A,B)中两个节点标识的位置,生成附加边数据(B,A)。类似地,可以基于其他边数据生成新的边数据(C,B)、(D,C)、(E,C)和(E,D)。
由此,可以将无向图数据中的多项边数据和所生成的多项附加边数据的组合视作上述有向图数据。继续以无向图510为例,其图数据中的边数据和所生成的边数据的组合可以包括边数据(A,B)、(B,A)、(B,C)、(C,B)、(C,D)、(D,C)、(C,E)、(E,C)、(D,E)和(E,D)。组合后的边数据可以作为上述步骤410中的有向图数据,其中每项边数据表示一条从源节点指向尾节点的边。换言之,将组合后的边数据视为有向图数据后,该有向图数据实际上描述了图5所示的有向图520。
通过允许将无向图数据转化为有向图数据来执行参考图4A描述的图数据处理方法400A,使得本申请所提供的图数据处理方法可以兼容无向图和有向图,从而有助于扩大该方法的使用范围和应用场景。
示例性地,如前文所提及的,在社交网络中,可以利用图数据来描述不同用户之间的好友关系,这种好友关系以及类似的其他关系不具有方向性,因此所涉及的图数据往往是无向图数据。在将其转化为有向图数据后,可以根据参考图4A描述的方法400A来确定用户节点的某阶邻域内的不重复的用户节点数量,这例如可以用于分析或辅助分析用户的社交活跃度、人际关系复杂度等,并可以进而辅助实现其他分析目的。
示例性地,在车辆通信网络中,可以利用图数据来描述不同车辆之间的可通信关系,例如处于通信范围内的车辆之间可以存在可通信关系(通常是无向的)。在这种示例中,可以根据参考图4A描述的方法400A来确定车辆节点的某阶邻域内的不重复的车辆节点数量,从而例如可以辅助进行车辆密度分析等。
在一些实施例中,参考图4A描述的方法400A中的步骤430中的初始化可以基于除节点标识之外的更多节点信息来实现。示例性地,节点信息还可以包括节点标签,并且,基于每个节点的节点信息初始化相关联的基数计数器可以包括:当该节点的节点标签属于目标标签时,将该节点的节点标识添加至相关联的基数计数器,以便将该基数计数器的基数估算值初始化为1;或者,当该节点的节点标签不属于目标标签时,不将该节点的节点标识添加至相关联的基数计数器,以便将该基数计数器的基数估算值初始化为0。可以理解,由于对各阶邻域内节点的计数都是在各节点对应的初始化的基数计数器的基础上执行的,当某个节点的基数计数器被初始化为0后,该节点实际上未参与计数,因此,通过基于节点标签对节点的基数计数器进行初始化,实际上实现了对参与邻域节点计数的节点的筛选。换言之,在这种实施例中,对节点的期望阶数的邻域内的节点数目的确定仅计入具有属于目标标签的节点标签的节点,而不计入不具有这种节点标签的节点。
通过基于节点标签对节点的基数计数器进行初始化,有助于增加图处理方法在应用中的灵活性,并有助于拓宽其应用范围。
示例性地,在金融交易网络中,部分交易节点可能具有指示其涉及非法借贷、套现、多头借贷、赌博或其他恶意交易活动的标签,假设将指示这种恶意活动中的一种或多种的标签设置为目标标签,则可以确定各个节点的期望阶数的邻域内的涉及某种或某几种恶意交易活动的节点数量。进而,若某节点的某阶或某几阶邻域内涉及某种恶意交易活动的节点数量明显较多,则该节点涉及相应或相关恶意交易活动的几率可能较高。或者,示例性地,在社交网络中,部分用户节点可能具有指示其涉及非正常社交活动的标签,例如频繁发表不正当言论、频繁被其他用户投诉或举报等,假设将这种标签设置为目标标签,可以确定各个节点的期望阶数的邻域内涉及非正常社交活动的用户节点的数量。进而,类似地,若某用户节点的某阶或某几阶邻域内涉及非正常社交活动的用户节点数量明显较多,则该用户节点涉及参与非正常社交活动的几率可能较高。
此外,在一些网络关系中,可能存在不同类型的节点。例如,在金融交易网络中,可能涉及自然人账号节点、政府账号节点、企业账号节点、个体商户账号节点等。这些不同类型的节点也可以被转化为不同的节点标签,并根据上述基于节点标签对节点的基数计数器进行初始化的实施例来对目标类型的节点进行计数。示例性地,若根据上述实施例确定某个自然人账户节点的一阶、二阶、三阶或更高阶邻域内存在大量借贷服务类型的账号节点,则该自然人涉及高风险金融活动或者甚至非法金融活动的几率可能较高。
在一些实施例中,图4A所示的方法400A可以包括如图4B所示的可选步骤460。在步骤460,针对所获取的有向图数据,可以基于源节点标识,对具有相同源节点的尾节点进行聚合,以得到与每个源节点对应的尾节点集合。在这样的实施例中,如步骤440’所示,在后续每轮次迭代中,每个源节点可以将从参数服务器获取的与其自身相关联的基数计数器传送至对应尾节点集合中的所有尾节点。这有助于进一步优化图数据的处理效率。
进一步地,在一些实施例中,附加地,可以将独立的节点-标签表与有向图数据或无向图数据一起作为输入数据。在这样的实施例中,在基于源节点标识聚合得到对应的尾节点集合后,可以将对源节点-尾节点集合构成的表与节点-标签表进行聚合,得到(源节点,源节点标签,尾节点集)的表,其中,源节点标签可以作为节点信息参与相关源节点的基数计数器的初始化。这在前文中也已经详细描述,在此不再赘述。
在一些实施例中,图4A所示的方法400A可以包括如图4C所示的可选步骤470。在步骤470,可以将所获取的有向图数据划分为多组图数据。在这样的实施例中,如步骤440”所示,在每轮次迭代中,可以并行地针对各组图数据执行如步骤440所示的迭代操作。可选地,图数据可以被随机、均匀地划分为多组图数据,各组图数据可以分别存储在不同处理装置上,在每个迭代轮次中,不同处理装置可以并行地根据上述迭代操作处理所存储的图数据。如此,通过分布式并行的数据处理方式,有助于提高图数据的处理效率。
在一些实施例中,前述基数计数器可以被配置为基于概率算法(例如LC、LLC、HLLC及AC等)来确定被添加至该基数计数器的节点标识的基数估算值。示例性地,前述基数计数器可以被配置为:利用预设哈希函数确定与被添加至该基数计数器的每个节点标识对应的比特串;基于每个比特串中至少部分比特位中首次出现1的位次估算基数值。预设哈希函数可以被配置为将原始数据(例如节点标识)转换为满足均匀分布或基本上满足均匀分布的哈希数组,其中每个原始数据可以被转换为一个比特串,该比特串中每个比特位为0或为1可以被视为等概率事件。根据伯努利过程原理,通过以比特串的最高位或最低位为起点,检查各个比特串首次出现1的位次,基于该位次的最大值可以估算原始数据的基数。进一步地,为了提高估算精度,可以将各个比特串中的部分比特位视为桶编号,例如将比特串中的前几个比特位视为桶编号,针对每个桶在剩余比特位中检查首次出现1的最大位次,并对每个桶所得到的最大位次取平均值,例如算数平均值、几何平均值、调和平均值等。此外,可选地,还可以增加修正项以进一步提高估算精度。
通过使基数计数器根据上述算法确定基数估算值,可以在保证估算精度的同时降低对存储及计算资源的消耗,并提高整体方案的执行效率。
应理解,虽然图4A、4B或4C有次序地示出各个步骤,但其中一些步骤可以以与所示顺序相反的顺序执行,或者其中一种步骤可以并行执行。例如,图4B所示的步骤460和步骤420可以以相反顺序执行或并行执行,图4C所示的步骤470和步骤420可以以相反顺序执行或并行执行,等等。
在一些实施例中,在参考图4A、4B或4C描述的步骤440、400’或400”的迭代操作中,可以通过以下步骤来更新参数服务器上的基数计数器。具体地,在各个源节点将从参数服务器获取的基数计数器传送至所有相关尾节点后,各尾节点可以将所接收的来自所有相关源节点的基数计数器进行去重合并,以生成更新基数计数器。然后,可以基于所生成的更新基数计数器更新参数服务器上的与该尾节点相关联的基数计数器。在一些实施例中,基于所生成的更新基数计数器更新参数服务器上的与该尾节点相关联的基数计数器可以包括:将针对各尾节点生成的更新基数计数器推送至参数服务器,其中,参数服务器可以被配置为在接收到更新基数计数器后,对与同一节点相关联的更新基数计数器和基数计数器进行去重合并,以作为更新后的基数计数器。将两个基数计数器进行去重合并可以指如下过程:假设基数计数器C1用于确定并存储集合A中元素的基数,基数计数器C2用于确定并存储集合B中元素的基数,则将基数计数器C1和基数计数器C2进行去重合并后的基数计数器C3可以确定并存储集合A与集合B构成的集合C中元素的基数。在相关技术中,去重合并也可能被称为融合。
图6示意性示出了根据本申请的一些实施例的示例图数据处理架构600。该架构600例如可以部署于图1所示的服务器110上,并可用于执行根据图4A、4B或4C描述的图处理方法400A、400B或400C。
如图6所示,图数据处理架构600可以包括驱动器610、一个或多个执行器620以及参数服务器630。示例性地,在步骤410获取的有向图数据可以存储在一个或多个执行器620上。可选地,如前文所提到的,有向图数据可以是基于初始获取的无向图数据生成的。示例性地,一个或多个执行器620可以首先获取无向图数据,然后调用无向图-有向图转化模块640,来将无向图数据转化为有向图数据。该转化过程已在前文中参考图5详细描述,在此不再赘述。
在具有多个执行器620的实施例中,如参考图4C描述的方法400C,所获取的有向图数据或无向图数据可以被划分为多组图数据,使得图数据可以被分布式存储在各个执行器620上。随后,各个执行器620可以分布式地并行处理各自所存储的图数据。例如,各个执行器620可以并行地基于各组图数据中的每个节点的节点信息初始化相关联的基数计数器,和/或在每轮次迭代中,并行地针对各组图数据执行参考图4A所描述的步骤440中的迭代操作。具体地,在迭代开始前,各个执行器620可以基于其所存储的图数据组分布式并行地向参数服务器申请初始化对应的基数计数器,该初始化过程可以通过前文所描述的各种实施例来完成。在各轮次迭代中,各个执行器620可以基于其所存储的图数据组,从参数服务器拉取该图数据组所包含的所有源节点的基数计数器,并将针对每个源节点所拉取的基数计数器传送至在该图数据组中与该源节点相关的所有尾节点,随后可以针对各个尾节点基于所接收到的所有基数计数器更新存储在参数服务器上的与该尾节点相关联的基数计数器。该更新过程可以根据前述实施例描述的过程来实现,在此不再赘述。
在一些实施例中,在迭代开始之前,例如在图4A所示的步骤420,可以由驱动器610向参数服务器630申请创建与各个节点相关联的基数计数器631,例如,可以由驱动器610向参数服务器630上的对应客户端申请创建基数计数器矩阵,以存储与各个节点相关联的基数计数器。示例性地,可以创建基于前述概率算法的基数计数器,例如可以创建HyperLogLog类型的基数计数器等。进一步示例性地,针对例如HyperLogLog类型的基数计数器,可以使用用于向基数计数器添加元素的指令来向基数计数器添加节点标识;可以使用用于将两个基数计数器所涉及的元素进行汇聚并去重的融合指令来将两个或更多个基数计数器去重合并;可以使用用于输出基数计数器所存储的基数的指令来查看基数计数器中的基数;等等。
在一些实施例中,为了进一步提高执行效率,降低对计算资源的需求,可以进一步将存储在各个执行器620上的图数据组划分为多个数据批次。在这种实施例中,为了保证在每次迭代过程中从参数服务器拉取的基数计数器的一致性,在创建基数计数器时,可以如图6所示那样在参数服务器630上为每个节点创建相关联的第一基数计数器和第二基数计数器。并且,在每个迭代轮次中,针对每组图数据,可以根据预设标准将该组图数据进一步划分为多个数据批次,例如可以预先设定每批次数据的数据量,然后在每个迭代轮次中,可以根据预先设定的数据量分批次处理图数据,直至所存储的图数据被处理完毕。针对每一数据批次,可以执行以下操作:针对该数据批次中的每个源节点,从参数服务器获取与该源节点相关联的第一基数计数器,并将所获取的第一基数计数器传送至与该源节点相关的所有尾节点,针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的第一基数计数器更新参数服务器上的与该尾节点相关联的第二基数计数器,该更新过程可以根据前述实施例来执行,在此不再赘述。参数服务器可以被配置为在每轮次迭代结束时,基于每个节点的第二基数计数器更新第一基数计数器,例如可以令第一基数器与第二基数计数器相同来更新第一基数计数器。由此,在每轮次迭代中,第二基数计数器会随着对不同数据批次和/或图数据组的处理而发生变化,而第一基数计数器在这一过程中可以保持不变,直至所有图数据组中的所有数据批次均处理完毕,才将第二基数计数器中的存储内容传递给第一基数计数器以更新第一基数计数器。通过上述机制,在每轮次迭代过程中,可以保证针对各个源节点拉取的基数计数器均是上一迭代轮次结束时的基数计数器,而未受当前迭代轮次的影响,从而可以在提高执行效率以及降低计算资源占用的同时,不影响图数据方法的执行精度。
可选地,图数据处理架构600可以借助诸如前文提到的Spark计算引擎和参数服务器的组合来实现,其中参数服务器例如可以是类似Angel的参数服务器。通过引入参数服务器,可以解决前文所提到的有关Spark计算引擎的各种不足,例如,借助参数服务器来存储和更新基数计数器,可以避免额外新建和存储RDD,同时可以避免在更新基数计数器时涉及的大量数据重组所带来的巨大网络开销的问题,从而有效提升图数据处理的性能。
图7示意性示出了根据本申请的一些实施例的图数据处理装置700的示例框图。示例性地,图数据处理装置700可以部署在图1所示的服务器110上,以及可以用于执行前文所描述的图数据处理方法。如图7所示,图数据处理装置700包括获取模块710、创建模块720、初始化模块730、迭代模块740以及确定模块750。
具体地,获取模块710可以被配置为获取有向图数据,该有向图数据包括与多个节点相关的多项边数据,其中每项边数据表示一条从源节点指向尾节点的边,并包括相应的源节点标识和尾节点标识;创建模块720可以被配置为基于所获取的有向图数据,在参数服务器上为每个节点创建相关联的基数计数器,每个基数计数器被配置为基于被添加至该基数计数器的节点标识来确定基数估算值;初始化模块730可以被配置为基于每个节点的节点信息初始化与该节点相关联的基数计数器,其中节点信息包括节点标识;迭代模块740可以被配置为迭代更新基数计数器,直至达到期望迭代轮次数,在每轮次迭代中执行以下迭代操作:针对每个源节点,从参数服务器获取与该源节点相关联的基数计数器,并将所获取的基数计数器传送至与该源节点相关的所有尾节点;针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的基数计数器更新参数服务器上的与该尾节点相关联的基数计数器;确定模块750可以被配置为基于迭代更新后的基数计数器,确定多个节点中的至少一个节点的期望阶数的邻域内的节点数量,其中期望阶数与期望迭代轮次数相等。
应理解,装置700可以以软件、硬件或软硬件相结合的方式实现。多个不同模块可以在同一软件或硬件结构中实现,或者一个模块可以由多个不同的软件或硬件结构实现。
此外,装置700可以用于实施前文所描述的方法400A,其相关细节已经在前文中详细描述,为简洁起见,在此不再重复。装置700可以具有与关于前述方法描述的相同的特征和优势。
图8示意性示出了根据本申请的一些实施例的计算设备800的示例框图。例如其可以代表图1中的服务器110或可以用于部署本申请提供的装置700的其他类型的计算设备。
如图所示,示例计算设备800包括彼此通信耦合的处理***801、一个或多个计算机可读介质802以及一个或多个I/O接口803。尽管未示出,但是计算设备800还可以包括将各种组件彼此耦合的***总线或其他数据和命令传送***。***总线可以包括不同总线结构的任何一个或组合,所述总线结构可以是诸如存储器总线或存储器控制器、***总线、通用串行总线和/或利用各种总线架构中的任何一种的处理器或局部总线,或者还可以包括诸如控制和数据线。
处理***801代表使用硬件执行一个或多个操作的功能。因此,处理***801被图示为包括可被配置为处理器、功能块等的硬件元件804。这可以包括在硬件中实现专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件804不受其形成材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质802被图示为包括存储器/存储装置805。存储器/存储装置805表示与一个或多个计算机可读介质相关联的存储器/存储装置。存储器/存储装置805可以包括易失性存储介质(诸如随机存取存储器(RAM))和/或非易失性存储介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置805可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。示例性地,存储器/存储装置805可以用于存储上文实施例中提及的有向图或无向图数据、与各节点相关联的基数计数器等。计算机可读介质802可以以下面进一步描述的各种其他方式进行配置。
一个或多个输入/输出接口803代表允许用户向计算设备800键入命令和信息并且还允许使用各种输入/输出设备将信息呈现给用户和/或发送给其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)、网卡、接收机等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、触觉响应设备、网卡、发射机等。示例性地,在上文描述的实施例中,可以通过输入设备允许用户输入有向图或无向图数据、或者输入获取有向图或无向图数据的路径等,可以通过输出设备允许用户查看图数据处理进度及处理结果,例如查看某一个或多个节点的期望阶数的邻域内的不重复节点个数等。
计算设备800还包括图数据处理应用806。图数据处理应用806可以作为计算程序指令存储在存储器/存储装置805中。图数据处理应用806可以连同处理***801等一起实现关于图7描述的装置700的各个模块的全部功能。
本文可以在软件、硬件、元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”、“功能”等一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备800访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备800的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。作为示例而非限制,信号介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
如前所述,硬件元件801和计算机可读介质802代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上***、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件801体现的一个或多个指令和/或逻辑。计算设备800可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理***的计算机可读存储介质和/或硬件元件801,可以至少部分地以硬件来实现将模块实现为可由计算设备800作为软件执行的模块。指令和/或功能可以由例如一个或多个计算设备800和/或处理***801执行/可操作以实现本文所述的技术、模块和示例。
本文描述的技术可以由计算设备800的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。
应当理解,为清楚起见,参考不同的功能单元对本申请的实施例进行了描述。然而,将明显的是,在不偏离本申请的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其它功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本申请可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
本申请提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令在被执行时实现上述图数据处理方法。
本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述各种实施例中提供的图数据处理方法。
通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除其他元件或步骤,并且“一”或“一个”不排除多个。在相互不同的从属权利要求中记载某些措施的纯粹事实并不表明这些措施的组合不能用来获利。
Claims (15)
1.一种图数据处理方法,其特征在于,包括:
获取有向图数据,所述有向图数据包括与多个节点相关的多项边数据,其中每项边数据表示一条从源节点指向尾节点的边,并包括相应的源节点标识和尾节点标识;
基于所获取的有向图数据,在参数服务器上为每个节点创建相关联的基数计数器,每个基数计数器被配置为基于被添加至该基数计数器的节点标识来确定基数估算值;
基于每个节点的节点信息初始化与该节点相关联的基数计数器,所述节点信息包括节点标识;
迭代更新所述基数计数器,直至达到期望迭代轮次数,在每轮次迭代中执行以下迭代操作:针对每个源节点,从所述参数服务器获取与该源节点相关联的基数计数器,并将所获取的基数计数器传送至与该源节点相关的所有尾节点;针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的基数计数器更新所述参数服务器上的与该尾节点相关联的基数计数器;
基于迭代更新后的基数计数器,确定所述多个节点中的至少一个节点的期望阶数的邻域内的节点数量,其中所述期望阶数与所述期望迭代轮次数相等。
2.根据权利要求1所述的方法,其中,所述获取有向图数据包括:
接收无向图数据,所述无向图数据包括与多个节点相关的多项边数据,其中每项边数据表示一条连接两个节点的边,并包括相应的两个节点标识;
基于所述无向图数据中的每项边数据,交换两个节点标识的位置,以生成附加边数据;
将所述无向图数据中的多项边数据和所生成的多项附加边数据的组合作为所述有向图数据。
3.根据权利要求1所述的方法,其中,所述节点信息还包括节点标签,并且其中,所述基于每个节点的节点信息初始化相关联的基数计数器包括:
当该节点的节点标签属于目标标签时,将该节点的节点标识添加至相关联的基数计数器,以便将该基数计数器的基数估算值初始化为1;
当该节点的节点标签不属于目标标签时,不将该节点的节点标识添加至相关联的基数计数器,以便将该基数计数器的基数估算值初始化为0。
4.根据权利要求1-3中任一项所述的方法,其中,所述基于所接收的来自所有相关源节点的基数计数器更新所述参数服务器上的与该尾节点相关联的基数计数器包括:
对所接收的来自所有相关源节点的基数计数器进行去重合并,以生成更新基数计数器;
基于所生成的更新基数计数器更新所述参数服务器上的与该尾节点相关联的基数计数器。
5.根据权利要求4所述的方法,其中,所述基于所生成的更新基数计数器更新所述参数服务器上的与该节点相关联的基数计数器包括:
将所生成的更新基数计数器推送至所述参数服务器,其中,所述参数服务器被配置为在接收到更新基数计数器后,对与同一节点相关联的更新基数计数器和基数计数器进行去重合并,以作为更新后的基数计数器。
6.根据权利要求1-3中任一项所述的方法,还包括:
针对所述有向图数据,基于源节点标识,对具有相同源节点的尾节点进行聚合,以得到与每个源节点对应的尾节点集合,
并且其中,所述将所获取的基数计数器传送至与该源节点相关的所有尾节点包括:将所获取的基数计数器传送至与该源节点对应的尾节点集合中的所有尾节点。
7.根据权利要求1-3中任一项所述的方法,还包括:
将所述有向图数据划分为多组图数据;
其中,在每轮次迭代中执行所述迭代操作包括:在每轮次迭代中,并行地针对各组图数据执行所述迭代操作。
8.根据权利要求7所述的方法,其中,所述基于每个节点的节点信息初始化相关联的基数计数器包括:
并行地基于各组图数据中的每个节点的节点信息初始化相关联的基数计数器。
9.根据权利要求7所述的方法,其中所述在参数服务器上为每个节点创建相关联的基数计数器包括:
在参数服务器上为每个节点创建相关联的第一基数计数器和第二基数计数器,
并且其中,所述并行地针对各组图数据执行所述迭代操作包括:
针对每组图数据,将该组图数据进一步划分为多个数据批次;
依次针对每一数据批次,执行以下操作:针对该数据批次中的每个源节点,从所述参数服务器获取与该源节点相关联的第一基数计数器,并将所获取的第一基数计数器传送至与该源节点相关的所有尾节点,针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的第一基数计数器更新所述参数服务器上的与该尾节点相关联的第二基数计数器,其中,所述参数服务器被配置为在每轮次迭代结束时,基于每个节点的第二基数计数器更新第一基数计数器。
10.根据权利要求1所述的方法,其中,基数计数器被配置为:
利用预设哈希函数确定与被添加至该基数计数器的每个节点标识对应的比特串;
基于每个比特串中至少部分比特位中首次出现1的位次估算所述基数值。
11.根据权利要求1所述的方法,其中,所述有向图数据包括金融交易图数据,每个节点标识包括交易方标识,并且每项边数据表示从源交易方指向尾交易方的交易支付关系。
12.一种图数据处理装置,其特征在于,包括:
获取模块,被配置为获取有向图数据,所述有向图数据包括与多个节点相关的多项边数据,其中每项边数据表示一条从源节点指向尾节点的边,并包括相应的源节点标识和尾节点标识;
创建模块,被配置为基于所获取的有向图数据,在参数服务器上为每个节点创建相关联的基数计数器,每个基数计数器被配置为基于被添加至该基数计数器的节点标识来确定基数估算值;
初始化模块,被配置为基于每个节点的节点信息初始化与该节点相关联的基数计数器,所述节点信息包括节点标识;
迭代模块,被配置为迭代更新所述基数计数器,直至达到期望迭代轮次数,在每轮次迭代中执行以下迭代操作:针对每个源节点,从所述参数服务器获取与该源节点相关联的基数计数器,并将所获取的基数计数器传送至与该源节点相关的所有尾节点;针对每个尾节点,基于所接收的来自该尾节点的所有相关源节点的基数计数器更新所述参数服务器上的与该尾节点相关联的基数计数器;
确定模块,被配置为基于迭代更新后的基数计数器,确定所述多个节点中的至少一个节点的期望阶数的邻域内的节点数量,其中所述期望阶数与所述期望迭代轮次数相等。
13.一种计算设备,其特征在于,包括:
存储器,其被配置成存储计算机可执行指令;
处理器,其被配置成当所述计算机可执行指令被处理器执行时执行根据权利要求1至11中的任一项所述的方法。
14.一种计算机可读存储介质,其存储有计算机可执行指令,当所述计算机可执行指令被执行时,执行根据权利要求1至11中的任一项所述的方法。
15.一种计算机程序产品,包括计算机指令,所述计算机指令在被处理器执行时实现权利要求1-11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111075644.3A CN114327363A (zh) | 2021-09-14 | 2021-09-14 | 图数据处理方法、装置、计算设备、存储介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111075644.3A CN114327363A (zh) | 2021-09-14 | 2021-09-14 | 图数据处理方法、装置、计算设备、存储介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327363A true CN114327363A (zh) | 2022-04-12 |
Family
ID=81044992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111075644.3A Pending CN114327363A (zh) | 2021-09-14 | 2021-09-14 | 图数据处理方法、装置、计算设备、存储介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327363A (zh) |
-
2021
- 2021-09-14 CN CN202111075644.3A patent/CN114327363A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822975B2 (en) | Systems and methods for synthetic data generation for time-series data using data segments | |
US10103942B2 (en) | Computer processing method and system for network data | |
CN104809242B (zh) | 一种基于分布式结构的大数据聚类方法和装置 | |
US10778707B1 (en) | Outlier detection for streaming data using locality sensitive hashing | |
JP6768681B2 (ja) | 分散データからの学習 | |
CN104809244B (zh) | 一种大数据环境下的数据挖掘方法和装置 | |
CN104820708B (zh) | 一种基于云计算平台的大数据聚类方法和装置 | |
CN104077723B (zh) | 一种社交网络推荐***及方法 | |
US20230056760A1 (en) | Method and apparatus for processing graph data, device, storage medium, and program product | |
US11556595B2 (en) | Attribute diversity for frequent pattern analysis | |
CN111949720B (zh) | 基于大数据和人工智能的数据分析方法及云端数据服务器 | |
CN113630476B (zh) | 应用于计算机集群的通信方法及通信装置 | |
CN114327363A (zh) | 图数据处理方法、装置、计算设备、存储介质和程序产品 | |
CN114756714A (zh) | 一种图数据的处理方法、装置以及存储介质 | |
CN112036418A (zh) | 用于提取用户特征的方法和装置 | |
US11625420B2 (en) | System and method for identifying approximate k-nearest neighbors in web scale clustering | |
US20220398416A1 (en) | System and method for identifying approximate k-nearest neighbors in web scale clustering | |
US20240012857A1 (en) | Asserted Relationships Matching in an Identity Graph Data Structure | |
CN113590721B (zh) | 一种区块链地址分类方法和装置 | |
US20230125509A1 (en) | Bayesian adaptable data gathering for edge node performance prediction | |
US20230061914A1 (en) | Rule based machine learning for precise fraud detection | |
Shivalkar et al. | Rough set based green cloud computing in emerging markets | |
Rong et al. | Distributed structural clustering on large graph | |
CN113282415A (zh) | 分布式环境下的带标签图模式匹配方法 | |
CN117853767A (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 |