CN112115289B - 一种图数据采样方法和系统 - Google Patents
一种图数据采样方法和系统 Download PDFInfo
- Publication number
- CN112115289B CN112115289B CN202011038681.2A CN202011038681A CN112115289B CN 112115289 B CN112115289 B CN 112115289B CN 202011038681 A CN202011038681 A CN 202011038681A CN 112115289 B CN112115289 B CN 112115289B
- Authority
- CN
- China
- Prior art keywords
- node
- edge
- data
- data record
- determining
- 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
Links
- 238000005070 sampling Methods 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000009467 reduction Effects 0.000 claims abstract description 96
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims description 92
- 238000010586 diagram Methods 0.000 description 28
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000012549 training Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 241000579895 Chlorostilbon Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000010976 emerald Substances 0.000 description 1
- 229910052876 emerald Inorganic materials 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000010977 jade Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书的实施例公开了一种图数据采样方法和系统。所述方法包括:基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录;输出边的起始点为第一节点、结束点为第二节点;将第一数据记录作为对第一节点进行第一化简操作的输入,确定至少一个第二数据记录;迭代执行第二化简操作直至达到预设迭代次数,并基于迭代数据记录确定采样结果,其中,迭代过程包括:基于上一轮化简操作得到的数据记录,确定第二化简操作的输入数据;其中,第一次执行第二化简操作的输入基于第二数据记录确定;基于输入数据对第一节点执行第二化简操作,确定至少一个迭代数据记录。
Description
技术领域
本申请涉及数据处理领域,特别涉及一种图数据采样方法和系统。
背景技术
随着科技技术的发展,数据收集手段不断丰富,各行各业的数据大量积累,数据规模不断增长,已经达到海量数据级别,例如,数百TB、PB、EB级别。
对于海量数据的分析和管理的一种方式是以图数据的形式进行处理。在现有的图数据的处理中,输入的数据集的规模非常庞大,难以在单个计算设备上完成运算,通常需要从图数据的海量节点和边中去采样一个批量的子图数据。
因此,亟需一种图数据采样的方法和系统。
发明内容
本说明书一个方面提供一种图数据采样方法,所述方法包括:基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录;所述输出边的起始点为第一节点、结束点为第二节点;将所述第一数据记录作为对所述第一节点进行第一化简操作的输入,确定至少一个第二数据记录;其中,所述第二数据记录包括所述第一节点的子图信息和所述输出边的反转边的特征,所述反转边为在第二数据记录中交换了第一节点和第二节点的位置,且边方向与所述输出边的方向一致的边;迭代执行第二化简操作直至达到预设迭代次数,并基于迭代数据记录确定采样结果,其中,迭代过程包括:基于上一轮化简操作得到的数据记录,确定第二化简操作的输入数据;其中,第一次执行所述第二化简操作的输入基于所述第二数据记录确定;基于所述输入数据对所述第一节点执行第二化简操作,确定至少一个所述迭代数据记录。
本说明书另一个方面提供一种图数据采样系统,所述系统包括:第一处理模块,可以用于基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录;所述输出边的起始点为第一节点、结束点为第二节点;第二处理模块,可以用于将所述第一数据记录作为对所述第一节点进行第一化简操作的输入,确定至少一个第二数据记录;其中,所述第二数据记录包括所述第一节点的子图信息和所述输出边的反转边的特征,所述反转边为在第二数据记录中交换了第一节点和第二节点的位置,且边方向与所述输出边的方向一致的边;迭代模块,可以用于迭代执行第二化简操作直至达到预设迭代次数,并基于迭代数据记录确定采样结果,其中,迭代过程包括:
基于上一轮化简操作得到的数据记录,确定第二化简操作的输入数据;其中,第一次执行所述第二化简操作的输入基于所述第二数据记录确定;基于所述输入数据对所述第一节点执行第二化简操作,确定至少一个所述迭代数据记录。
本说明书另一个方面提供一种图数据采样装置,包括至少一个存储介质和至少一个处理器;所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现图数据采样方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的图数据采样系统的示例性应用场景示意图;
图2是根据本说明书一些实施例所示的MapReduce架构的示例性示意图;
图3是根据本说明书一些实施例所示的图数据采样方法的示例性示意图;
图4是根据本说明书一些实施例所示的第二化简操作的示例性流程图;
图5是根据本说明书一些实施例所示的图数据采样系统的示例性模块图;
图6是根据本说明书一些实施例所示的图数据的示例性示意图;
图7A是根据本说明书一些实施例所示的点表的示例性示意图;
图7B是根据本说明书一些实施例所示的边表的示例性示意图;
图8是根据本说明书一些实施例所示的第一数据记录的示例性示意图;
图9是根据本说明书一些实施例所示的第二数据记录的示例性示意图;
图10A是根据本说明书一些实施例所示的第二化简操作的输入数据的示例性示意图;
图10B是根据本说明书一些实施例所示的迭代数据记录的示例性示意图;
图11A是根据本说明书一些实施例所示的第二化简操作的输入数据示例性示意图;
图11B是根据本说明书一些实施例所示的迭代数据记录的示例性示意图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本说明书中所使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图1是根据本说明书一些实施例所示的图数据采样系统的示例性应用场景示意图。
如图1所示,在应用场景100中,图数据采样系统可以包括第一计算设备110、网络120、存储设备130以及第二计算设备150。
图数据采样系统可以应用于各种使用大数据计算服务的场景。例如,物流场景,物流行业中的包裹信息、站点信息、配送员信息等海量数据可以以图数据的形式存储,图数据采样系统可以从中进行数据采样;又例如,电商场景,网络购物图中用户账号信息、商品信息、资金流动信息等海量数据可以以图数据的形式存储;再例如,社交场景,用户关系、聊天记录等海量数据也可以以图数据的形式存储。图数据采样系统可以从图数据中采样得到一个批量的子图数据,采样的子图数据可以用于模型训练、数据分析、数据统计等。
在一个典型的应用场景中,第一计算设备110可以获取全图数据;第一计算设备110可以基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录;第一计算设备110可以将所述第一数据记录作为对所述第一节点进行第一化简操作的输入,确定至少一个第二数据记录;第一计算设备110可以迭代执行第二化简操作直至达到预设迭代次数,并基于迭代数据记录确定采样结果。采样结果中可以包括所述第一节点的子图信息。在一些实施例中,所述采样结果可以存储在存储设备130中。
第一计算设备110可以是指各类具备计算能力的设备,可以包括各种计算机,比如服务器、个人计算机,也可以是由多台计算机以各种结构连接组成的计算平台。例如,第一计算设备110可以是分布式的,比如第一计算设备可以包括110-1、110-2、110-3、……。分布式的第一计算设备110可以协同作业以从全图数据中进行采样得到采样结果。在一些实施例中,第一计算设备110-1、110-2、110-3可以相同或不同。
第二计算设备150可以是指各类具备计算能力的设备,可以包括各种计算机,比如服务器、个人计算机,也可以是由多台计算机以各种结构连接组成的计算平台。第二计算设备150可以基于存储设备130中的采样结果获取子图信息140,并将子图信息140用于训练模型152,得到训练后的模型154。子图信息140可以是所述全图数据(全图数据中包括点、边结构)的子图数据,子图信息140可以包括1度子图、2度子图、3度子图……N度子图等,或其任意组合。例如,子图信息140可以是由转账、代付等资金数据构成的图数据中的用户的1度子图,其可以用于表示流向该用户的资金数据。
在一些实施例中,第一计算设备110和第二计算设备150可以相同也可以不同。
模型(例如,模型152或/和模型154)可以指基于处理设备而进行的若干方法的集合。这些方法可以包括大量的参数。在执行模型时,所使用的参数可以是被预先设置好的,也可以是可以动态调整的。一些参数可以通过训练的方法获得,一些参数可以在执行的过程中获得。关于本说明书中涉及模型的具体说明,可参见本说明书的相关部分。
网络120连接系统的各组成部分,使得各部分之间可以进行通讯。在系统中各部分之间的网络可以包括有线网络和/或无线网络。例如,网络120可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。每两个部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。
存储设备130可以用于存储数据和/或指令。存储设备130可以包括一个或多个存储组件,每个存储组件可以是一个独立的设备,也可以是其他设备的一部分。在一些实施例中,存储设备130可包括随机存取存储器(RAM)、只读存储器(ROM)、大容量存储器、可移动存储器、易失性读写存储器等或其任意组合。示例性的,大容量储存器可以包括磁盘、光盘、固态磁盘等。在一些实施例中,所述存储设备130可在云平台上实现。仅作为示例,所述云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。数据指对信息的数字化表示,可以包括各种类型,比如二进制数据、文本数据、图像数据、视频数据等。指令指可控制设备或器件执行特定功能的程序。
图2是根据本说明书一些实施例所示的MapReduce架构的示例性示意图。
在一些实施例中,可以通过基于大数据计算服务的MapReduce架构进行图数据的采样。大数据计算服务(MaxCompute,原名ODPS)可以用于海量级数据的处理,例如,批量结构化数据的存储和计算,提供海量数据仓库的解决方案及分析建模服务等。MapReduce是Google公司提出的一种用于大规模并行编程的软件架构。可以用于大规模数据集(GB、TB、EB等数量集)上的并行运算。概念“Map(映射)”和“Reduce(化简)”及其主要思想,都是从函数式编程语言得来。当前MapReduce的实现通过应用开发者指定一个Map(映射)函数,用来把一组数据映射成一个键值对(key-value pair);此外还要求应用开发者指定一个Reduce(化简)函数,用来对Map函数输出的键值对进行进一步处理。MapReduce架构可用于大规模数据集(大于1TB)的并行运算,并通过把对数据集的大规模操作分发给网络上的多个节点(处理设备)进行并行运算来实现伸缩性。在web访问日志分析、文档聚类、机器学习、数据统计、基于统计的机器翻译等领域有广泛的应用。目前,越来越多的云计算服务商在云计算系统中部署了MapReduce架构。
本说明书实施例所披露的技术方案可以基于如图2所示的MapReduce架构实现,所述MapReduce结构可以包括调度处理设备210、Map处理设备220和Reduce处理设备230。调度处理设备是指用于处理任务(任务在本说明书中也可以被称为步骤、操作)的主要处理设备,可以接收用户所提交的任务,统一调度需要分配的任务,对多个Map处理设备和多个Reduce处理设备进行管理,将用户提交的任务拆分为多个任务,包括Map任务和Reduce任务等,并负责将任务分配给相应的任务处理设备。Map处理设备和Reduce处理设备作为任务或步骤的执行节点设备,执行被分配到的任务或步骤。例如,Map处理设备用于执行Map任务,获取第一数据记录;Reduce处理设备用于执行Reduce(化简操作)任务,获取第二数据记录和/或迭代数据记录。
图3是根据本说明书一些实施例所示的图数据采样方法的示例性示意图。在一些实施例中,流程300可以由处理设备执行。例如,流程300可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程300。流程300可以包括以下操作:
步骤302,基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录;所述输出边的起始点为第一节点、结束点为第二节点。具体地,该步骤302可以由第一处理模块510执行。
全图数据是指可以用于表示人或物之间的连接关系的包括海量数据的数据结构。图数据可以由节点和边构成,各节点之间通过单向的边连接。图数据中信息的传递方向由边的起始点传递至结束点。图数据中的点可以用唯一的标识ID进行标识,在全图数据中可以包括多个子图数据,例如,子图数据可以表示为D——>C——>B——>A。在示例的子图数据中,A、B、C、D分别为子图数据中的节点,D——>C、C——>B、B——>A分别为子图数据中的边。图数据中的点和边以及其连接关系可以用于表示社交人物关系、资金流向关系等。
第一节点是指在从全图数据中进行图数据采样时所针对的主节点。第一节点可以是多个节点的总称,例如,有多个Map处理设备或Reduce处理设备同时执行任务时,其各自所针对的节点都可以被认为是第一节点。采样是指从全图数据中一个节点的所有邻居节点中随机选择特定数量/度数的邻居节点。度数是指节点间的距离,可以用节点之间连接的边的数量进行衡量。例如,仍以上述例子为例,第一节点可以是指A节点,B节点与A节点之间通过一条边连接,则B节点是A节点的的一度邻居、C节点与A节点之间有两条边,则C节点是A节点的的两度邻居,以此类推。
第一节点的节点特征是指第一节点本身所对应的信息。例如,节点的名称,节点对应的内容信息等。比如,在用图数据表示的社交关系中,节点特征可以包括用户的姓名、年龄、性别、职业等。
输出边是指所述第一节点为边的起始点,第二节点为边的结束点的边。其中,第二节点是指在全图数据中与第一节点相邻的节点。例如,参见图6,图6是根据本说明书一些实施例所示的图数据的示例性示意图。在图6,假设A节点为第一节点,一共有C——>A、D——>A和A——>B三条边,其中A——>B为输出边,C——>A和D——>A为邻居边。A节点第一节点,B、C、D均可以被认为是第二节点。
所述输出边的特征是指所述输出边所对应的信息。例如,边的方向、边对应的内容信息等。
第一数据记录是指记载有从所述全图数据中获取的第一节点的节点特征和输出边的特征的数据。第一数据记录可以用多种形式进行表示,例如,键值对、表格或图表等,本实施例对此不作限定。
在一些实施例中,处理设备(例如,第一处理模块510、Map处理设备220)可以通过执行Map任务从所述全图数据中获取所述至少一个第一节点的节点特征以及至少一个输出边的特征,并映射得到所述第一数据记录。
在一些实施例中,处理设备可以从所述全图数据中获取点表和边表。点表是指由节点的特征信息构成的数据的集合,所述点表包括至少一个第一节点ID和对应的节点特征。例如,参见图7A,图7A是根据本说明书一些实施例所示的点表的示例性示意图。第一节点ID表示节点的名称或标识,节点特征为节点对应的特征信息。例如,第一节点的ID为A,第一节点的特征可以是节点特征A。又例如,第一节点的ID可以为张三,第一节点的特征可以是18岁等(图未示)。边表是指由节点和节点间的连接关系构成的边的数据的集合,所述边表包括所至少一条边的第一节点ID、第二节点ID以及对应的边特征。所述边特征可以包括输出边和邻居边。例如,参见图7B,图7B是根据本说明书一些实施例所示的边表的示例性示意图。如710所示,在710的前两行数据中,第一节点ID一列中的节点为A,此时表示主节点为A节点,第二节点为节点A的邻居节点(例如,C和D),其所对应的边为邻居边,比如,C——>A、D——>A。需要特别注意的是,在第三行数据中,可以看出,此时第一节点ID一列对应的节点为B节点,第二节点ID对应的一列中为A节点,此时,A——>B表示一条输出边。由于与以图6所示的形式不同,在图7B所示的边表中,输出边的第一节点的位置与第二节点的位置进行了交换,例如,在710中,A节点作为输出边的起始点时,其在710中的位置为第二节点ID一列,B节点作为输出边的结束点,其在710中的位置为第一节点ID一列。然而在一些实施例中,在710的第三行的数据中,第一节点ID仍然可以是A,第二节点ID为B,边特征为(A——>B)(图未示)。本实施例对于边表中对于输出边的记录形式不作限定。
所述边特征可以是对应的边的特征信息,例如,转账的金额、资金流向等。
图7B中的720、730与710类似,其不同之处在于,710所对应的第一节点为A节点,720所对应的第一节点为C节点,730所对应的第一节点为D节点,可以参考上文对710的描述进行理解,此处不再赘述。
处理设备可以基于所述点表和所述边表,获取至少一个所述第一节点的节点特征和所述至少一个输出边的特征。在一些实施例中,处理设备可以从所述点表和边表中读取相应的数据,并从中分析(例如,根据710中的第三行数据得出所述输出边的起始点为A节点,结束点为B节点)得到相应的节点ID、以及输出边,然后通过调用Map函数的方式将其映射为以键值对的形式保存的数据记录中,得到所述第一数据记录。
参见图8,图8是根据本说明书一些实施例所示的第一数据记录的示例性示意图。在一些实施例中,处理设备可以从所述点表获取得到第一节点的ID(例如,A)和第一节点的节点特征(例如,节点特征A),将所述第一节点的ID填充至数据记录的第一节点ID一列,并记录填充的数据类型为Node(例如,第二列的节点),第一节点的节点特征信息填充至节点特征一列;同时从边表中获取以所述第一节点为起始点,第二节点为结束点的边的信息,例如,A——>B,将第一节点的ID填充至数据记录的第一节点ID一列,数据类型记录为OutEdge(例如,输出边),第二节点的ID填充至第二节点ID一列,将输出边的特征填充至边特征一列,保存输出后即可得到所述第一数据记录。其中,所述第一数据记录中的第一节点ID和所述数据类型为键值对中的键,节点特征和边特征等特征信息为键值对中的值。
处理设备可以通过执行Map操作(任务),得到多个第一数据记录,例如,结合图2,Map处理设备220-1可以对第一节点A进行Map操作,得到第一数据记录810,例如,根据图7A和710得到图8中的810;Map处理设备220-2可以对第一节点C进行Map操作,得到第一数据记录820,例如,例如,根据图7A和720得到图8中的820;以此类推,由Map处理设备对第一节点D进行Map操作可以得到第一数据记录830等。
需要说明的是,图8所示的第一数据记录仅仅是出于示例的目的,在不违背本发明构思的前提下,本领域技术人员可以对其作出更改,例如,将图8中第一节点对应的数据类型中的Node修改为节点,OutEdge修改为输出边等。
步骤304,将所述第一数据记录作为对所述第一节点进行第一化简操作的输入,确定至少一个第二数据记录。其中,所述第二数据记录包括所述第一节点的子图信息和所述输出边的反转边的特征,所述反转边为在第二数据记录中交换了第一节点和第二节点的位置,且边方向与所述输出边的方向一致的边。具体地,该步骤304可以由第二处理模块520执行。
化简操作是指执行MapReduce任务中的Reduce任务。第一化简操作是指基于Map任务输出的第一数据记录第一次执行Reduce操作。
Reduce处理设备(例如,第二处理模块520)在获得第一数据记录后,可以从第一数据记录中读取得到以键值对的形式保存的第一节点的节点特征和输出边的特征,然后Reduce处理设备根据所述输出边的特征,将所述输出边的第一节点和第二节点的位置进行交换,且保持交换后的边的方向与输出边原来的方向不变,得到所述输出边的反转边的特征。其中,所述边的方向不变是指在边的两个节点间的信息传递的方向不变,例如,输出边为A——>B,反转边则为B<——A,虽然A和B的位置发生了交换,但是信息的传递方向仍然是A指向B,即边的方向不变。将所述第一节点的节点特征、输出边的特征、反转边的特征聚合在一起后即可得到所述第二数据记录。聚合可以是指按照一定顺序进行汇聚组合,例如,以第一节点的节点特征为第一行数据、输出边的特征为第二行数据、反转边的特征为第三行数据,组合形成得到表格形式的第二数据记录。
例如,参见图9,图9是根据本说明书一些实施例所示的第二数据记录的示例性示意图。在图9中示出了第二数据记录910、第二数据记录920以及第二数据记录930。其中,第二数据记录910可以是由Reduce处理设备230-1以A节点为第一节点进行第一化简操作得到;第二数据记录920可以是由Reduce处理设备230-2以C节点为第一节点进行第一化简操作得到;第二数据记录930可以是由Reduce处理设备230-3以D节点为第一节点进行第一化简操作得到。可以理解,以上例子仅出于示例的目的,在实际应用中可以由更多的Reduce处理设备以更多的节点(例如,E、G、F、H等)作为第一节点进行第一化简操作得到更多的第二数据记录。
结合图8可以看出,每一个第一数据记录中的第一节点的ID都是不同的,例如,第一数据记录810中的第一节点ID可以A节点,第一数据记录820中的第一节点ID为C节点;第一数据记录830中的第一节点ID为D节点。不同的第一数据记录进入到不同的Reduce处理设备执行第一化简操作后,得到的是对应的第一节点的第二数据记录,例如,将第一数据记录输入至Reduce处理设备230-1执行第一化简操作后,得到的是第二数据记录910,数据记录中的第一节点,即执行化简操作的主节点都是A。
关于执行第一化简操作的具体过程,其与本说明书图4所描述的执行第二化简操作的过程类型,其区别仅在于第一化简操作的输入中未包括第一节点的邻居边的特征,因此,关于化简操作的更多细节可以参见图4的相关描述,此处不再赘述。
步骤306,迭代执行第二化简操作直至达到预设迭代次数,基于迭代数据记录确定采样结果。具体地,该步骤306可以由迭代模块530执行。
第二化简操作是指由Reduce处理设备执行的第二次以后的化简操作。其中,第二化简操作与第一化简操作的区别之处在于,第一化简操作的输入为Map任务的输出,第二化简操作的输入是基于上一次化简操作的输出得到(第二化简操作的输入的确定可以参见下文对图9和图10A的描述),并且第二化简操作的输入数据中还包括了第一节点的邻居边。
迭代数据记录是指迭代执行第二化简操作所得到的数据记录。
预设迭代次数可以是由用户预先设定的次数。迭代次数可以大于等于1次,例如,1次、5次、10次、100次等。迭代次数可以根据用户想要采样的子图信息的邻居度数确定,例如,采样1度邻居,则迭代执行一次第二化简操作;采样5度邻居,则迭代5次。当达到预设迭代次数后,即可以从最后一轮迭代所得的迭代数据记录中得到所述采样结果。
采样结果是指从所述全图信息中采样得到的一部分图数据。采样结果中可以包括第一节点ID、第一节点对应的数据类型、第二节点ID、第一节点的节点特征、边特征、第一节点的子图信息和第二节点的子图信息。其中,第一节点的子图信息是指在对应的行的数据中,第一节点ID下所对应的节点的子图信息,第二节点的子图信息是指在对应行的数据中,第二节点ID下所对应的节点的子图信息,并且第一节点的子图信息只记录在第一节点对应的数据类型为Node所对应的行中,第二节点的子图信息只记录在第一节点对应的数据类型为InEdge所对应的行中,例如,参见图10B,图10B是根据本说明书一些实施例所示的迭代数据记录的示例性示意图。在迭代数据记录中包括了第一节点的子图信息和第二节点的子图信息,例如,仅在第一行和第三行分别记录了第一节点的子图信息A和第二节点的子图信息A。
根据以上所描述的过程可知,整个得到采样结果的过程包括了一次Map操作,一次第一化简操作,迭代的N(N为大于等于1的整数)次第二化简操作,因此,可以根据所迭代的第二化简操作的次数来确定采样结果中所包括的子图信息的邻居度数。
其中,第二化简操作可以包括:
步骤3062,基于上一轮化简操作得到的数据记录,确定第二化简操作的输入数据;其中,第一次执行所述第二化简操作的输入基于所述第二数据记录确定。
上一轮化简操作得到的数据记录,可以包括由多个Reduce处理设备执行化简操作得到的多个数据记录。例如,图9中的第二数据记录910、第二数据记录920、第二数据记录930。
对于第二化简操作,第一次执行第二化简操作的输入可以是从第一化简操作得到的第二数据记录中得到,例如,可以直接将第二数据记录作为第二次执行(即第一次迭代)第二化简操作的输入。第二次以后迭代执行第二化简操作的输入为基于上一次执行的第二化简操作得到的多个迭代数据记录得到。例如,第三次第二化简操作的输入,将是从第二次第二化简操作得到的多个迭代数据记录中获得;第四次第二化简操作的输入,将是从第三次第二化简操作得到的多个迭代数据记录中获得,以此类推。
参见图10A,图10A是根据本说明书一些实施例所示的第二化简操作的输入数据的示例性示意图。从图10A中可以看到,所述输入数据包括四行,第一节点ID对应的列中的节点均为A节点,第二列对应的数据类型包括Node、InEdge和OutEdge,分别对应节点、邻居边和输出边。所述输入数据可以是从上一轮化简操作的输出中获得,例如,图10A对应的上一轮化简操作的输出为图9中所示的第二数据记录。
具体地,确定第二化简操作的输入数据,可以采用以下方式得到:
从上一轮化简操作的数据记录中获取所述第一节点对应的特征数据。所述第一节点对应的特征数据可以包括第一节点的节点特征、第一节点的输出边的特征、所述第一节点的反转边的特征,以及第一节点的邻居边特征。所述邻居边为以所述第一节点为结束点、邻居节点为起始点的边。在上一轮化简操作的多个数据记录中,第一节点对应的特征数据可能是分布于多个数据记录中,例如,参见图9和图10A,图10A的第一行数据和第四行数据源于第二数据记录910;第二行数据源于第二数据记录920;第三行数据源于第二数据记录930。具体地,数据类型为Node和OutEdge的两行数据来自于以第一节点A为主节点进行化简操作的输出,而以A节点为第一节点的InEdge的邻居边的数据信息则是从其他Reduce处理设备执行化简操作的输出中获得。其中,InEdge对应的数据是在化简操作中对第一节点的输出边进行反转得到。具体地,在对所述第一节点的邻居节点进行化简操作时,将该邻居节点的输出边的两个节点的位置进行交换后,且保持边的方向不变,即可以得到以A节点为第一节点,且对应的数据类型为InEdge的邻居边。例如,920中的第三行数据和930中的第三行数据。
汇集所述第一节点对应的特征数据,确定所述第二化简操作的输入数据。汇集是指按照一定顺序从多个数据记录中依次获取数据并进行排列组合。例如,在从多个数据记录中获取得到第一节点的节点特征、邻居边的特征、输出边的特征后,在输入数据中,从上到下将第一节点对应的数据类型按照Node、InEdge、OutEdge的顺序排列后即可得到所述第二化简操作的输入数据。
步骤3064,基于所述输入数据对所述第一节点执行第二化简操作,确定至少一个所述迭代数据记录。
在一些实施例中,处理设备在对第一节点执行第二化简操作时,可以按照输入数据中的节点、邻居边、输出边的顺序依次进行处理,处理后得到的输出结果即为所述迭代数据记录。关于第二化简操作的更多细节,可以参见图4的相关描述,此处不再赘述。
如图2所示,每一次执行化简操作时,都可以是由多个Reduce处理设备在同时对不同的节点执行化简操作,因此,在每一轮执行第二化简操作后,都可以得到多个迭代数据记录,多个迭代数据记录分别对应多个第一节点,例如,第一个Reduce处理设备输出的迭代数据记录对应第一节点A,第二个Reduce处理设备输出的迭代数据记录对应第一节点B,第三个redcue处理设备输出的迭代数据记录对应第一节点C,以此类推。
在上一轮第二化简操作执行完毕后,迭代执行下一轮第二化简操作,处理设备可以从上一轮的化简操作中再次获取输入数据,其获取过程与步骤3062中所描述的方式相同,此处不再赘述。由于在每一轮执行第二化简操作时,都会根据第一节点的邻居节点,即输入数据中邻居边的第二节点构建子图信息,而该第二节点也会同时在其他Reduce处理设备中作为第一节点进行第二化简操作,以此获取得到该第二节点的子图信息,因此,在迭代执行第二化简操作过程中,会不断将第一节点的邻居节点的子图信息传递至第一节点,从而得到第一节点的多层邻居信息。例如,第一次执行第二化简操作可以得到第一节点A的1度邻居信息,在此同时,第一节点A的邻居节点C,会由另一个Reduce处理设备对其执行第二化简操作,得到节点C的1度邻居信息,在第二次执行第二化简操作时,节点C的1度邻居信息会通过C——>A的边传递至节点A,节点C的1度邻居节点即为节点A的2度邻居节点,迭代多次后,即可得到节点A的多层邻居信息。
例如,参见图11A和图11B,图11A是根据本说明书一些实施例所示的第二化简操作的输入数据示例性示意图。
图11A所示的输入数据是从第一次迭代执行第二化简操作的迭代数据记录,例如,图10B所示的迭代数据记录中获取得到。具体地,图11A中的第一行数据和第四行数据图10B所示的迭代数据记录中得到;第二行数据则是从以C节点为第一节点执行第二化简操作得到的迭代数据记录(图未示)中得到;第三行数据则是从以D节点为第一节点执行第二化简操作得到的迭代数据记录(图未示)中得到。结合图11A和图10A,可以看出,在图10A中,第一节点的子图信息为节点特征A,第二节点的子图信息为节点特征C和节点特征D,而在图10B中,第一节点的子图信息为子图信息A,第二节点的子图信息为子图信息C和子图信息D,其原因是节点C和节点D也同时由其他Reduce处理设备对其作为第一节点进行第二化简操作而得到了更新。进而基于图10B中所示的迭代数据记录,即可得到所述图11A中所示的输入数据。此处在图10中仅示出以A节点作为第一节点执行第二化简操作得到的迭代数据记录,以C节点和D节点作为第一节点执行第二化简操作的过程与此类似,此处未进行示例,不再赘述。
图11B是根据本说明书一些实施例所示的迭代数据记录的示例性示意图。结合图11A,在将图11A作为以A节点作为第一节点执行化简操作的输入数据,执行第二化简操作后,可以得到迭代输出数据记录,结合图11B和图10B,可以看出,在图11B中,第一节点的子图信息由图10B中的子图信息A更新至子图信息A1。通过迭代第二化简操作,可以不断更新第一节点的子图信息,例如,从子图信息A1到子图信息A2、子图信息A2到子图信息A3、……,从而获得第一节点的多度子图信息。
在一些实施例中,采样结果可以存储在存储设备(例如,内存、硬盘)中,在使用采样结果时可以从所述存储设备中读取数据,采样结果相对于全图数据,其拥有数据量更小,在使用时存储采样结果的子图数据所需要的存储空间更小。
在一些实施例中,示例性地示出了根据所述采样结果进行多层邻居查找的方法,包括:
可以通过获取模块540获取目标第一节点和所述目标第一节点的目标邻居层数。目标第一节点可以是指所想要获取的子图信息中作为最后结束点的节点。子图信息是指从全图数据中采样得到的包括特定数量的邻居的图数据。由于在获取采样结果时是根据第一节点执行的采样过程,因此在进行查找时,所想要查找的目标第一节点与第一节点相同,例如,都是节点A。目标邻居层数可以是指所想要获取的子图数据的目标第一节点的邻居度数。
可以通过确定模块550基于所述目标第一节点和目标邻居层数,根据所述采样结果进行多层邻居查找,确定所述目标第一节点的目标邻居层数子图信息。
在一些实施例中,处理设备(确定模块550)可以在采样结果中查找得到目标第一节点所对应子图信息,并可以从子图信息获取得到所述目标第一节点的多层邻居。所述子图信息可以用于机器学习模型训练、数据分析、数据统计等多个场景,并由于子图信息在使用时所需要占用的内存空间少,从而可以有效地提升处理设备的计算能力,达到提高任务处理效率的目的。
在本实施例中,基于MapReduce架构,通过映射(Map)操作获取第一数据记录,并将第一数据记录作为第一化简操作(Reduce)的输入,并将第一化简操作的输出作为第一次执行第二化简操作的输入,得到可以用于迭代执行第二化简操作的第二数据记录。在化简操作时,通过将边的起始点和结束点进行交换的方式对第一节点的输出边进行反转,反转得到的反转边可以作为对第一节点迭代执行第二化简操作的输入,以此通过多次迭代执行第二化简操作,即可采样得到包括第一节点的多层邻居的子图信息。采样结果可以保存在硬盘中,在使用时将采样结果加载到内存中进行使用,其所占用的内存空间相对于使用全图数据,占用的内存空间将会得到有效地减少。同时,一次采样的结果可以多次使用,可以极大的节约计算成本。还可以根据需求采样得到不同度数的采样结果,采样的可扩展性得到了有效地提升。
图4是根据本说明书一些实施例所示的第二化简操作的示例性流程图。在一些实施例中,流程400可以由处理设备执行。例如,流程400可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程400。在一些实施例中,流程400可以由位于处理设备上的第二处理模块520或迭代模块530执行。如图4所示,流程400可以包括以下操作。
基于所述输入数据,执行所述第二化简操作可以包括:
步骤402,获取所述第一节点的节点特征数据。
第一节点的节点特征可以是指第一节点对应的数据类型为Node所对应的特征数据。例如,图10A中的第一行数据,例如,可以包括第一节点的ID(A),第一节点对应的数据类型(Node)、第一节点的节点特征(节点特征A)以及第一节点的子图信息(节点特征A)。
在一些实施例中,处理设备可以通过从所述输入数据中读取数据类型为Node对应的行中的数据得到所述第一节点的节点特征数据。
步骤404,获取所述第一节点的邻居边的特征。
所述邻居边为以所述第一节点为结束点、邻居节点(第二节点)为起始点的边。参见图10A,在所述输入数据中,所述第一节点对应的数据类型中,用InEdge表示该行数据对应的边为邻居边,所述邻居边的特征即为第一节点对应的数据类型为InEdge所对应的行中的数据,例如,可以包括第一节点ID(A)、第一节点对应的数据类型(InEdge)、第二节点ID(C、D)、边特征(A<——C、A<——D)以及第二节点的子图信息(节点特征C、节点特征D)。
需要说明的是,本说明书实施例中所描述的第一节点的子图信息节点特征A、第二节点的子图信息节点特征C和节点特征D,在一些实施例中,也可以用子图信息A、子图信息C和子图信息D进行表示,节点特征A、节点特征C和节点特征D可以认为是其对应的0层子图。
在一些实施例中,处理设备可以通过从所述输入数据中读取数据类型为InEdge(邻居边)的数据得到所述第一节点的邻居边的特征。
步骤406,基于所述第一节点的节点特征、所述邻居边的特征,确定所述第一节点的子图信息。
在一些实施例中,处理设备可以基于所述第一节点ID、第二节点ID和第一节点对应的数据类型之间的对应关系,确定所述第一节点的子图信息。例如,在邻居边中,第一节点为边的结束点,第二节点为边的起始点,则可以以第一节点为结束点,将一个或多个第二节点通过边指向所述第一节点,得到所述第一节点的子图信息。例如,参见图6,图6的右边部分C——>A和D——>A部分可以认为是以A节点为第一节点的子图信息。
需要说明的是,图10A仅仅是出于示例的目的,在输入数据中还可以包括更多的邻居边,例如,由第二节点Q(图未示)、第二节点W(图未示)、……、等指向第一节点的边。
步骤408,获取所述第一节点的输出边的特征。
所述输出边为以所述第一节点为起始点的边。参见图10A,在所述输入数据中,所述第一节点对应的数据类型中,用OutEdge表示该行数据对应的边为输出边,例如,边A——>B。输出边的特征可以是指其对应的行中所包括的数据,包括第一节点ID(A)、第一节点对应的数据类型(OutEdge)、第二节点ID(B)、边特征(B<——A)。
在一些实施例中,处理设备可以通过从所述输入数据中读取数据类型为OutEdge的数据得到所述第一节点的邻居边的特征。
需要说明的是,由于当前进行化简操作的主节点为第一节点,因此,在输出边的特征中可以不包括子图信息。具体地,A——>B中,A节点的子图信息为在将B节点作为主节点的化简操作中获得。
步骤410,将所述第一节点的输出边的起始点和结束点的位置进行交换,确定反转边。
反转边是指将原输出边的起始点和结束点的位置进行交换,但边的方向不变的边。参考图10B,在第二行数据中,所述第一节点的输出边的起始点为A,结束点为B,边的方向由A指向B(参见边特征B<——A),A位于第一节点ID对应的列中,B位于第二节点ID对应的列中;将输出边的起始点和结束点的位置进行交换后,可以得到图10B中第三行数据所示的反转边,反转边的起始点仍为A,结束点仍为B,边的方向仍然由A指向B(参见边特征B<——A),不同之处在于B位于第一节点ID对应的列中,A位于第二节点ID对应的列中,并且对应的数据类型由OutEdge替换为InEdge,以此,虽然输出边的起始点和结束的位置进行了交换,但是边的方向仍然保持不变。
步骤412,将所述第一节点的子图信息作为反转边的起始点的子图信息,并基于所述输出边的特征,确定所述反转边的特征。
仍参考图10B,在步骤410中,确定了反转边的起始点、结束点以及对应的数据类型,由于反转边和原来的输出边的方向不变,边的两个点也未变,因此,原输出边的边特征即为所述反转边的边特征。
而如图10B所示,在第一行数据中,第一节点ID为A,其在数据记录中第一节点的子图信息即为A节点的子图信息,因此,可以直接将步骤406中确定的子图信息添加至第一节点的子图信息中,例如,Node行数据中的子图信息A。而在反转边的特征中,A的位置经过交换后在第二节点ID对应的列中,此时则将A节点的子图信息添加至InEdge行、第二节点的子图信息列对应的位置,例如,子图信息A。以此即可得到所述反转边的特征。
步骤414,基于所述第一节点的节点特征数据、所述输出边的特征、所述反转边的特征,确定所述迭代数据记录。
所述迭代数据记录是指包括所述第一节点的节点ID、所述输出边的特征、所述反转边的特征的迭代数据记录。迭代数据记录的形式可以参考图10B和图11B。
需要说明的是,图10B和图11B仅仅是一种表示所述迭代数据记录的形式,在一些实施例中,也可以用其他任意形式进行表示,例如,图形、文字等,本说明书对此不作限定。
图5是根据本说明书一些实施例所示的图数据采样系统的示例性模块图。如图5所示,所述系统可以包括第一处理模块510、第二处理模块520和迭代模块530。
第一处理模块510可以用于基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录。所述输出边的起始点为第一节点、结束点为第二节点。在一些实施例中,第一处理模块510可以通过执行Map任务从所述全图数据中获取所述至少一个第一节点的节点特征以及至少一个输出边的特征,并映射得到所述第一数据记录。在一些实施例中,第一处理模块510可以从所述全图数据中获取点表和边表;其中,所述点表包括至少一个第一节点ID和对应的节点特征,所述边表包括至少一条边的第一节点ID、第二节点ID以及对应的边特征;基于所述点表和所述边表,获取至少一个所述第一节点的节点特征和所述至少一个输出边的特征。
第二处理模块520可以用于将所述第一数据记录作为对所述第一节点进行第一化简操作的输入,确定至少一个第二数据记录。在一些实施例中,所述第二数据记录包括所述第一节点的子图信息和所述输出边的反转边的特征,所述反转边为在第二数据记录中交换了第一节点和第二节点的位置,且边方向与所述输出边的方向一致的边。在一些实施例中,化简操作是指执行MapReduce任务中的Reduce任务。第一化简操作是指基于Map任务输出的第一数据记录第一次执行Reduce操作。第二处理模块520在获得第一数据记录后,可以从第一数据记录中读取得到以键值对的形式保存的第一节点的节点特征和输出边的特征,然后Reduce处理设备根据所述输出边的特征,将所述输出边的第一节点和第二节点的位置进行交换,且保持交换后的边的方向与输出边原来的方向不变,得到所述输出边的反转边的特征。
迭代模块530可以用于迭代执行第二化简操作直至达到预设迭代次数,基于迭代数据记录确定采样结果。第二化简操作是指由Reduce处理设备执行的第二次以后的化简操作。在一些实施例中,迭代模块530可以基于上一轮化简操作得到的数据记录,确定第二化简操作的输入数据;其中,第一次执行所述第二化简操作的输入基于所述第二数据记录确定。确定所述输入数据包括:从所述上一轮化简操作的数据记录中获取所述第一节点对应的特征数据;汇集所述第一节点对应的特征数据,确定所述第二化简操作的输入数据。迭代模块530还用于基于所述输入数据对所述第一节点执行第二化简操作,确定至少一个所述迭代数据记录。所述执行第二化简操作包括:基于所述输入数据:获取所述第一节点的节点特征数据;获取所述第一节点的邻居边的特征;其中,所述邻居边为以所述第一节点为结束点、邻居节点为起始点的边;基于所述第一节点的节点特征、所述邻居边的特征,确定所述第一节点的子图信息;获取所述第一节点的输出边的特征;将所述第一节点的输出边的起始点和结束点的位置进行交换,确定反转边;将所述第一节点的子图信息作为反转边的起始点的子图信息,并基于所述输出边的特征,确定所述反转边的特征;基于所述第一节点的节点特征数据、所述输出边的特征、所述反转边的特征,确定所述迭代的数据记录。
获取模块540可以用于获取目标第一节点和所述目标第一节点的目标邻居层数。目标第一节点可以是指所想要获取的子图信息中作为最后结束点的节点。子图信息是指从全图数据中采样得到的包括特定数量的邻居的图数据。确定模块550可以用于基于所述目标第一节点和目标邻居层数,根据所述采样结果进行多层邻居查找,确定所述目标第一节点的目标邻居层数子图信息。
确定模块550可以用于在采样结果中查找得到目标第一节点所对应子图信息,并可以从子图信息获取得到所述目标第一节点的多层邻居。所述子图信息可以用于机器学习模型训练、数据分析、数据统计等多个场景,并由于子图信息在使用时所需要占用的内存空间少,从而可以有效地提升处理设备的计算能力,达到提高任务处理效率的目的。
关于图数据采样系统的各模块的具体描述,可以参考本说明书流程图部分,例如,图3至图4的相关说明。
应当理解,图5所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于图数据采样系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,第一处理模块510、第二处理模块520、迭代模块530、获取模块540以及确定模块550可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,第一处理模块510和迭代模块530可以是两个模块,也可以是一个模块同时具有处理和迭代功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例还提供一种图数据采样装置,包括至少一个存储介质和至少一个处理器;所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现图数据采样方法。
本说明书实施例可能带来的有益效果包括但不限于:(1)从全图数据采样得到包括子图信息的采样结果,采样结果可以直接采用硬盘存储,减少占用的内存存储空间;(2)一次采样得到的采样结果可以多次使用,减少计算资源的浪费;(3)根据采样结果进行模型训练、数据分析、数据统计等应用时,采样结果的数据量远小于全图数据的数据量,存储子图信息的图存储服务占用的内存空间更小。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (13)
1.一种图数据采样方法,所述方法包括:
基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录;所述输出边的起始点为第一节点、结束点为第二节点;
将所述第一数据记录作为对所述第一节点进行第一化简操作的输入,确定至少一个第二数据记录;其中,所述第二数据记录包括所述第一节点的子图信息和所述输出边的反转边的特征,所述反转边为在第二数据记录中交换了第一节点和第二节点的位置,且边方向与所述输出边的方向一致的边;
迭代执行第二化简操作直至达到预设迭代次数,并基于迭代数据记录确定采样结果,其中,迭代过程包括:
基于上一轮化简操作得到的数据记录,确定第二化简操作的输入数据;其中,第一次执行所述第二化简操作的输入基于所述第二数据记录确定;
基于所述输入数据对所述第一节点执行第二化简操作,确定至少一个所述迭代数据记录。
2.根据权利要求1所述的方法,所述基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,包括:
从所述全图数据中获取点表和边表;其中,所述点表包括至少一个第一节点ID和对应的节点特征,所述边表包括至少一条边的第一节点ID、第二节点ID以及对应的边特征;
基于所述点表和所述边表,获取至少一个所述第一节点的节点特征和所述至少一个输出边的特征。
3.根据权利要求1所述的方法,所述采样结果,包括:
第一节点ID、第一节点对应的数据类型、第二节点ID、第一节点的节点特征、边特征、第一节点的子图信息和第二节点的子图信息。
4.根据权利要求1所述的方法,所述确定第二化简操作的输入数据,包括:
从所述上一轮化简操作的数据记录中获取所述第一节点对应的特征数据;
汇集所述第一节点对应的特征数据,确定所述第二化简操作的输入数据。
5.根据权利要求1所述的方法,基于所述输入数据对所述第一节点执行第二化简操作,确定至少一个迭代数据记录,包括:
基于所述输入数据:
获取所述第一节点的节点特征数据;
获取所述第一节点的邻居边的特征;其中,所述邻居边为以所述第一节点为结束点、邻居节点为起始点的边;
基于所述第一节点的节点特征、所述邻居边的特征,确定所述第一节点的子图信息;
获取所述第一节点的输出边的特征;
将所述第一节点的输出边的起始点和结束点的位置进行交换,确定反转边;
将所述第一节点的子图信息作为反转边的起始点的子图信息,并基于所述输出边的特征,确定所述反转边的特征;
基于所述第一节点的节点特征数据、所述输出边的特征、所述反转边的特征,确定所述迭代的数据记录。
6.根据权利要求1所述的方法,所述方法还包括:
获取目标第一节点和所述目标第一节点的目标邻居层数;
基于所述目标第一节点和目标邻居层数,根据所述采样结果进行多层邻居查找,确定所述目标第一节点的目标邻居层数子图信息。
7.一种图数据采样系统,所述系统包括:
第一处理模块,用于基于全图数据获取至少一个第一节点的节点特征以及至少一个输出边的特征,确定第一数据记录;所述输出边的起始点为第一节点、结束点为第二节点;
第二处理模块,用于将所述第一数据记录作为对所述第一节点进行第一化简操作的输入,确定至少一个第二数据记录;其中,所述第二数据记录包括所述第一节点的子图信息和所述输出边的反转边的特征,所述反转边为在第二数据记录中交换了第一节点和第二节点的位置,且边方向与所述输出边的方向一致的边;
迭代模块,用于迭代执行第二化简操作直至达到预设迭代次数,并基于迭代数据记录确定采样结果,其中,迭代过程包括:
基于上一轮化简操作得到的数据记录,确定第二化简操作的输入数据;其中,第一次执行所述第二化简操作的输入基于所述第二数据记录确定;
基于所述输入数据对所述第一节点执行第二化简操作,确定至少一个所述迭代数据记录。
8.根据权利要求7所述的系统,所述第一处理模块进一步用于:
从所述全图数据中获取点表和边表;其中,所述点表包括至少一个第一节点ID和对应的节点特征,所述边表包括至少一条边的第一节点ID、第二节点ID以及对应的边特征;
基于所述点表和所述边表,获取至少一个所述第一节点的节点特征和所述至少一个输出边的特征。
9.根据权利要求7所述的系统,所述采样结果,包括:
第一节点ID、第一节点对应的数据类型、第二节点ID、第一节点的节点特征、边特征、第一节点的子图信息和第二节点的子图信息。
10.根据权利要求7所述的系统,所述迭代模块进一步用于:
从所述上一轮化简操作的数据记录中获取所述第一节点对应的特征数据;
汇集所述第一节点对应的特征数据,确定所述第二化简操作的输入数据。
11.根据权利要求7所述的系统,所述迭代模块进一步用于:
基于所述输入数据:
获取所述第一节点的节点特征数据;
获取所述第一节点的邻居边的特征;其中,所述邻居边为以所述第一节点为结束点、邻居节点为起始点的边;
基于所述第一节点的节点特征、所述邻居边的特征,确定所述第一节点的子图信息;
获取所述第一节点的输出边的特征;
将所述第一节点的输出边的起始点和结束点的位置进行交换,确定反转边;
将所述第一节点的子图信息作为反转边的起始点的子图信息,并基于所述输出边的特征,确定所述反转边的特征;
基于所述第一节点的节点特征数据、所述输出边的特征、所述反转边的特征,确定所述迭代的数据记录。
12.根据权利要求7所述的系统,所述系统还包括:
获取模块,用于获取目标第一节点和所述目标第一节点的目标邻居层数;
确定模块,用于基于所述目标第一节点和目标邻居层数,根据所述采样结果进行多层邻居查找,确定所述目标第一节点的目标邻居层数子图信息。
13.一种图数据采样装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求1~6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011038681.2A CN112115289B (zh) | 2020-09-28 | 2020-09-28 | 一种图数据采样方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011038681.2A CN112115289B (zh) | 2020-09-28 | 2020-09-28 | 一种图数据采样方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112115289A CN112115289A (zh) | 2020-12-22 |
CN112115289B true CN112115289B (zh) | 2023-11-14 |
Family
ID=73797199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011038681.2A Active CN112115289B (zh) | 2020-09-28 | 2020-09-28 | 一种图数据采样方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112115289B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011151500A1 (en) * | 2010-05-31 | 2011-12-08 | Helsingin Yliopisto | Arrangement and method for finding relationships among data |
CN111275189A (zh) * | 2020-02-25 | 2020-06-12 | 支付宝(杭州)信息技术有限公司 | 一种网络表示学习方法、系统及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9152670B2 (en) * | 2012-12-20 | 2015-10-06 | Teradata Us, Inc. | Estimating number of iterations or self joins required to evaluate iterative or recursive database queries |
CN109785224B (zh) * | 2019-01-29 | 2021-09-17 | 华中科技大学 | 一种基于fpga的图数据处理方法和系统 |
-
2020
- 2020-09-28 CN CN202011038681.2A patent/CN112115289B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011151500A1 (en) * | 2010-05-31 | 2011-12-08 | Helsingin Yliopisto | Arrangement and method for finding relationships among data |
CN111275189A (zh) * | 2020-02-25 | 2020-06-12 | 支付宝(杭州)信息技术有限公司 | 一种网络表示学习方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112115289A (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492128B (zh) | 用于生成模型的方法和装置 | |
Rogers | Doing Web history with the Internet Archive: screencast documentaries | |
CN109376267B (zh) | 用于生成模型的方法和装置 | |
CN110516678B (zh) | 图像处理方法和装置 | |
CN110310299B (zh) | 用于训练光流网络、以及处理图像的方法和装置 | |
Ferraro Petrillo et al. | FASTdoop: a versatile and efficient library for the input of FASTA and FASTQ files for MapReduce Hadoop bioinformatics applications | |
CN106055630A (zh) | 日志存储的方法及装置 | |
Spina et al. | Point cloud segmentation for cultural heritage sites | |
CN112115289B (zh) | 一种图数据采样方法和系统 | |
CN110909072B (zh) | 一种数据表建立方法、装置及设备 | |
CN114691630B (zh) | 一种智慧供应链大数据共享方法及系统 | |
KR20130112303A (ko) | 커뮤니티 서비스 기반의 컨텐츠 추천 시스템 및 컨텐츠 추천 방법 | |
CN109697234A (zh) | 实体的多属性信息存储、查询方法、装置、服务器和介质 | |
CN106250380A (zh) | Hadoop文件系统数据自定义分块方法 | |
CN111666449B (zh) | 视频检索方法、装置、电子设备和计算机可读介质 | |
CN115129945A (zh) | 图结构的对比学习方法、设备及计算机存储介质 | |
CN115659060A (zh) | 一种基于动态图神经网络的信息推荐方法及系统 | |
CN111459917B (zh) | 知识库管理方法、装置及处理设备 | |
US10372694B2 (en) | Structured information differentiation in naming | |
CN105991400B (zh) | 一种群组搜索方法及其设备 | |
Shahid et al. | AI DevOps for Large-Scale HRTF Predition and Evaluation: An End to End Pipeline | |
CN112288586A (zh) | 基于HBase的保险行业数据整合方法及相关设备 | |
CN116610308B (zh) | 代码管理方法及装置、电子设备及存储介质 | |
CN116051964B (zh) | 深度学习网络确定方法、图像分类方法及设备 | |
Lugnegård | Building a high throughput microscope simulator using the Apache Kafka streaming framework |
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 |