图数据抽取方法、装置、存储介质及计算机设备与流程



1.本技术涉及计算机应用技术领域,尤其涉及一种图数据抽取方法、装置、存储介质及计算机设备。


背景技术:



2.随着计算机技术的不断发展和信息化程度的不断提高,数据量在迅速增长,数据结构也在逐渐复杂化,传统的关系型数据库在很多场景下难以使用,因此诞生了各种非关系型数据库。
3.图数据库是非关系型数据库中的一种,用于存储各种关系网络数据,在众多图数据库中,janusgraph是一个分布式图数据库,具有极高的可扩展性,通过扩大集大小线性地提高图存储的上限,可支持超级大的图的存储检索。
4.如果janusgraph使用spark进行图算法,在进行图数据抽取时,需要通过janusgraph的接口传入gremlin查询语句,tinkerpop解析gremlin语句后生成step集合,不同类型的step有不同的处理逻辑,最终再通过与hbase进行api交互获取数据,处理的链路很长,存在很多遍历调用接口的情况,此外,由于受限于各个中间件api的设计,数据抽取的并发效果也比较差,导致图数据抽取效率较低。


技术实现要素:



5.本技术实施例提供了一种图数据抽取方法、装置、存储介质及计算机设备,可以通过简化数据抽取逻辑,提高图数据抽取效率。
6.所述技术方案如下:
7.第一方面,本技术实施例提供了一种图数据抽取方法,所述方法包括:
8.基于spark中的弹性分布式数据集读取所述janusgraph中存储的第一图数据;
9.调用耦合在所述janusgraph的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理,得到第二图数据;
10.保存所述第二图数据到所述spark中的弹性分布式数据集。
11.第二方面,本技术实施例提供了一种图数据抽取装置,所述图数据抽取装置包括:
12.图数据读取模块,用于基于spark中的弹性分布式数据集读取所述janusgraph中存储的第一图数据;
13.反序列化模块,用于调用耦合在所述janusgraph的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理,得到第二图数据;
14.图数据保存模块,用于保存所述第二图数据到所述spark中的弹性分布式数据集。
15.第三方面,本技术实施例提供一种存储介质,所述存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
16.第四方面,本技术实施例提供一种计算机设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步
骤。
17.本技术一些实施例提供的技术方案带来的有益效果至少包括:
18.在本技术实施例中,通过基于spark中的弹性分布式数据集读取janusgraph中存储的第一图数据,然后调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理得到第二图数据,将所述第二图数据保存到spark中的弹性分布式数据集。采用本技术实施例,可以在基于spark+janusgraph架构的图数据抽取中直接抽取janusgraph底层存储的图数据,简化抽取步骤并省去一些不必要的处理逻辑,提高数据抽取效率。
附图说明
19.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本技术实施例提供了一种spark+janusgraph的图数据库架构的举例示意图;
21.图2为本技术实施例提供了一种图数据抽取方法的流程示意图;
22.图3为本技术实施例提供了一种图数据抽取的举例示意图;
23.图4为本技术实施例提供了一种图数据抽取方法的流程示意图;
24.图5为本技术实施例提供了一种图数据抽取装置的结构示意图;
25.图6为本技术实施例提供了一种图数据读取模块11的结构示意图;
26.图7为本技术实施例提供了一种计算机设备的结构示意图;
27.图8为本技术实施例提供了一种操作系统和用户空间的结构示意图;
28.图9是图7中安卓操作系统的架构图;
29.图10是图7中ios操作系统的架构图。
具体实施方式
30.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
31.在本技术的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本技术的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本技术中的具体含义。此外,在本技术的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存
在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
32.为了更清楚的描述本发明实施例的技术方案,在描述之前,对本发明中的一些概念进行详细描述以便更好的理解本方案。随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。图数据库并非是指存储图片的数据库,而是以图这种数据结构进行存储和数据查询。图数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(crud)操作,与其他数据库不同,关系在图数据库中占首要地位,与其他关系数据库或nosql数据库相比,图数据库的数据模型也更加简单,更具表现力。
33.根据存储和图处理引擎的不同,市面上的图数据也有一些区分。一些图数据库使用原生图存储,这类存储是经过优化的,并且是专门为了存储和管理图而设计的,而并不是所有图数据库都是使用原生图存储,也有一些图数据库将图数据序列化,然后保存到关系型数据库或者面向对象数据库,或其他通用数据存储中。如,neo4j就是属于原生图数据库,它使用的后端存储是专门为neo4j这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能,而janusgraph不是原生图数据库,而将数据存储在其他系统上,比如hbase。原生图处理是是处理图数据的最有效方法,因为连接的节点在数据库中物理地指向彼此。
34.请参见图1,为本技术实施例提供了一种spark+janusgraph的图数据库架构的举例示意图。
35.如图1所示,spark graphx是一个分布式图处理框架,它是基于spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,janusgraph是一个分布式图数据库,hbase为janusgraph的底层存储。目前,基于spark graphx对janusgraph底层存储的图数据进行图数据抽取需要通过janusgraph的接口传入gremlin查询语句,由tinkerpop解析gremlin语句后生成step集合,不同类型的step有不同的处理逻辑,最终再通过与hbase进行api交互获取底层图数据,处理的链路很长,存在很多遍历调用接口的情况,效率低。同时,受限于图中各个中间件api的设计,并发效果也比较差,比如hbase原生提供的api对批量数据操作并不友好,批操作底层最终会转化为多个单条数据的操作,并不适用于olap的场景。另外,图中每一步操作都会先全量加载数据,然后再进行下一步的逻辑处理,耦合很松,对资源的消耗比较大。
36.所述弹性分布式数据集(rdd,resilient distributed datasets),是分布式内存的一个抽象概念,rdd提供了一种高度受限的共享内存模型,即rdd是只读的记录分区的集合,只能通过在其他rdd执行确定的转换操作(如map、join和group by)而创建,这些限制使得实现容错的开销很低。所述gremlin是thinkerpop框架下的图遍历语言,gremlin是一种函数式数据流语言,可以使用户使用简洁的方式表述复杂的属性图的遍历或查询。所述thinkerpop是一个开源的图计算框架,针对图数据的数据系统,有些是内存的事务型数据系统,有些是分布式数据系统。只要这些个图数据库系统都是“支持tinkerpop框架的”,那么这些系统可以很方便地进行切换,tinkerpop整体目标在于让不同针对图数据的数据系
统可以方便地整合在一起。如果一个图数据库系统使用图数据作为底层数据模型并能支持使用gremlin图遍历语言对其进行查询,那么该系统被称为“支持tinkerpop框架的”(tinkerpop-enabled)。所述hbase是一个分布式的开源的数据,在本技术实施例,如图1所示,hbase为janusgraph的底端存储。
37.本技术实施例中,针对spark+janusgraph的图数据库架构在图数据抽取时效率较低的问题,重构数据抽取通道,简化数据抽取过程中的处理逻辑,提出了一种高效率、低消耗的图数据抽取方法。
38.请参见图2,为本技术实施例提供了一种图数据抽取方法的流程示意图。如图2所示,所述图数据抽取方法可以包括以下步骤s101~s103。
39.s101,基于spark中的弹性分布式数据集读取janusgraph中存储的第一图数据;
40.具体的,自定义构建弹性分布式数据集,基于自定义构建的弹性分布式数据集读取janusgraph底端存储的第一图数据,所述底端存储可以是hbase数据库,所述第一图数据是指存储在hbase数据库中的字节格式的图数据。
41.所述基于自定义构建的弹性分布式数据集读取janusgraph底端存储的第一图数据可以是按照文件名称或文件类别在磁盘中查第一图数据并读取的过程。
42.不难理解,图数据在存入底端存储的hbase数据库之前需要将图结构序列化为字节结构,序列化就是把对象转换为字节序列,永久存到磁盘中。
43.s102,调用耦合在所述janusgraph的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理,得到第二图数据;
44.具体的,所述第一图数据存储在janusgraph中是以字节序列的形式存在,通过自定义函数程序在janusgraph数据处理流程中将反序列化模块剥离,调用所述反序列化模块将读取到的所述第一图数据反序列化为图结构的第二图数据。
45.所述反序列化是指将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。在本技术实施例中,反序列化是指将字节结构的第一图数据反序列化为具有图结构的所述第二图数据。
46.s103,保存所述第二图数据到所述spark中的弹性分布式数据集。
47.具体的,所述第二图数据是将janusgraph底端存储的字节结构的第一图数据反序列化而来的具有图结构的图数据,将具有图结构的所述第二图数据送入spark的弹性分布式数据集用于图计算。
48.所述弹性分布式数据集是spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。
49.步骤s101~步骤s103请一并参见图3,为本技术实施例提供了一种图数据抽取的举例示意图。
50.如图3所示,spark graphx不需要经过janusgraph一系列复杂的数据处理流程,基于自定义构建的弹性分布式数据集直接读取janusgraph中底端存储hbase数据库中存储的第一图数据,并剥离耦合在janusgraph数据处理流程中的反序列化模块,利用所述反序列化模块将所述第一图数据反序列化为第二图数据,并将所述第二图数据送入定制的弹性分布式数据集中。所示定制rdd即自定义构建的弹性分布式数据集。
51.在本技术实施例中,通过基于spark中的弹性分布式数据集直接读取janusgraph
底层的第一图数据,然后调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第一图数据反序列化为第二图数据,最后将所述第二图数据送入所述弹性分布式数据集进行图计算,简化了图数据抽取过程中的处理逻辑,提高了数据抽取效率并减少了资源消耗。
52.请参见图4,为本技术实施例提供了一种图数据抽取方法的流程示意图。如图4所示,所述图数据抽取方法可以包括以下步骤s201~s205。
53.s201,将spark中的弹性分布式数据集划分成至少一个分区;
54.具体的,将所述弹性分布式数据集划分成预设数量的分区,所述弹性分布式数据集可以指定分区,其中一个分区对应一个处理任务,分区数量决定了任务数量,同时执行的任务数量越多则代表并行度越高。
55.在一种可实现的方式中,所述弹性分布式数据集的分区还可以时通过获取所述janusgraph中存储的第一图数据对应的文件目录,然后将所述弹性分布式数据集划分成与各所述文件目录一一对应的分区。
56.s202,基于各所述分区以迭代的方式批量读取第一格式的第一图数据,对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据;
57.所述第一格式的第一图数据是指在janusgraph底端存储的适应文件系统存储格式的第一图数据文件。
58.具体的,根据分区数量对应的处理任务数量以迭代的方式获取所述第一格式的第一图数据,并将所述第一格式的第一图数据的解析为便于反序列化模块处理的所述第二格式的第一图数据,所述第二格式的第一图数据可以是字符串形式的第一图数据。
59.所述迭代的方式是指按照所述第一格式的第一图数据在目录中的存放顺序读取和解析,例如,可以是一个分区对应于一个所述第一格式的第一图数据的文件目录,所述分区用于处理对应的所述文件目录的所有所述第一格式的第一图数据,处理顺序按照所述第一格式的第一图数据在目录中的排序。
60.s203,调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第二格式的第一图数据进行反序列化处理,得到第二图数据;
61.具体的,所述反序列化模块耦合在janusgraph的数据处理流程中,将所述反序列化模块从原有的数据处理流程中剥离出来,并融入到新构建的数据处理流程中,用于将所述第二格式的第一图数据反序列化为所述第二图数据。
62.s204,基于各分区与文件目录的对应关系,保存所述第二图数据到与所述文件目录对应的分区;
63.由步骤s201可知,所述弹性分布式数据集可通过划分分区增加处理任务的并行度,所述分区可以是自定义划分的,也可以是基于读取到的文件划分的。若所述分区属于自定义划分,则为所述分区分配处理任务,即可以是以文件目录为单位为所述分区分配待处理的文件,一个分区可以对应一个文件目录或多个文件目录。
64.具体的,基于所述第二图数据在反序列化前的存储的文件目录,根据各分区与文件目录的对应关系将所述第二图数据送入对应的分区。
65.s205,根据所述弹性分布式数据集中自定义的图计算处理逻辑对所述第二图数据进行图计算;
66.具体的,用户可根据需要自定义弹性分布式数据集中的图计算处理逻辑,利用所
述第二图数据进行图计算。
67.在本技术实施例中,通过将spark中的弹性分布式数据集进行分区,然后基于各所述分区以迭代的方式批量读取第一格式的第一图数据,并对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据,可以提高数据抽取的并行度,提高数据抽取效率,接着调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第二格式的第一图数据进行反序列化处理,得到第二图数据,再将所述第二图数据送入对应的分区基于自定义的图计算处理逻辑进行图计算,整个数据抽取过程简化了图数据抽取过程中的处理逻辑,提高了数据抽取效率并减少了资源消耗。
68.请参见图5,为本技术实施例提供了一种图数据抽取装置的结构示意图。如图5所示,该图数据抽取装置1可以通过软件、硬件或者两者的结合实现成为终端设备的全部或一部分。根据一些实施例,该图数据抽取装置1包括,图数据读取模块11,反序列化模块12,图数据保存模块13,图数据计算模块14,具体包括:
69.图数据读取模块11,用于基于spark中的弹性分布式数据集读取janusgraph中存储的第一图数据;
70.反序列化模块12,用于调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理,得到第二图数据;
71.图数据保存模块13,用于保存所述第二图数据到所述spark中的弹性分布式数据集;
72.图数据计算模块14,用于根据所述弹性分布式数据集中自定义的图计算处理逻辑对所述第三图数据进行图计算。
73.可选的,如图6所示,为本技术实施例提供了一种图数据读取模块11的结构示意图。
74.所述图数据读取模块11,包括:
75.分区划分单元111,用于将所述弹性分布式数据集划分成至少一个分区;
76.图数据解析单元112,用于基于各所述分区以迭代的方式批量读取第一格式的第一图数据,对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据。
77.可选的,所述分区划分单元111,具体用于:
78.将所述弹性分布式数据集划分成预设数量的分区;或
79.获取所述janusgraph中存储的第一图数据对应的文件目录,将所述弹性分布式数据集划分成与各所述文件目录一一对应的分区。
80.可选的,所述图数据保存模块13,具体用于:
81.基于各分区与文件目录的对应关系,保存所述第二图数据到与所述文件目录对应的分区。
82.需要说明的是,上述实施例提供的图数据抽取装置在执行图数据抽取方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图数据抽取装置与图数据抽取方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
83.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
84.在本技术实施例中,通过将spark中的弹性分布式数据集进行分区,然后基于各所述分区以迭代的方式批量读取第一格式的第一图数据,并对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据,可以提高数据抽取的并行度,提高数据抽取效率,接着调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第二格式的第一图数据进行反序列化处理,得到第二图数据,再将所述第二图数据送入对应的分区基于自定义的图计算处理逻辑进行图计算,整个数据抽取过程简化了图数据抽取过程中的处理逻辑,提高了数据抽取效率并减少了资源消耗。
85.本技术实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1~图4所示实施例的所述图数据抽取方法,具体执行过程可以参见图1~图4所示实施例的具体说明,在此不进行赘述。
86.本技术还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1~图4所示实施例的所述图数据抽取方法,具体执行过程可以参见图1~图4所示实施例的具体说明,在此不进行赘述。
87.请参考图7,其示出了本技术一个示例性实施例提供的计算机设备的结构方框图。本技术中的计算机设备可以包括一个或多个如下部件:处理器110、存储器120、输入装置130、输出装置140和总线150。处理器110、存储器120、输入装置130和输出装置140之间可以通过总线150连接。
88.处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个计算机设备内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行计算机设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器110可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
89.存储器120可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory,rom)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等,该操作系统可以是安卓(android)系统,包括基于android系统深度开发的系统、苹果公司开发的ios系统,包括基于ios系统深度开发的系统或其它系统。存储数据区还可以存储计算机设备在使用中所创建的数据比如电话本、音视频数据、聊天记录数据等。
90.参见图8所示,存储器120可分为操作系统空间和用户空间,操作系统即运行于操作系统空间,原生及第三方应用程序即运行于用户空间。为了保证不同第三方应用程序均能够达到较好的运行效果,操作系统针对不同第三方应用程序为其分配相应的系统资源。
然而,同一第三方应用程序中不同应用场景对系统资源的需求也存在差异,比如,在本地资源加载场景下,第三方应用程序对磁盘读取速度的要求较高;在动画渲染场景下,第三方应用程序则对gpu性能的要求较高。而操作系统与第三方应用程序之间相互独立,操作系统往往不能及时感知第三方应用程序当前的应用场景,导致操作系统无法根据第三方应用程序的具体应用场景进行针对性的系统资源适配。
91.为了使操作系统能够区分第三方应用程序的具体应用场景,需要打通第三方应用程序与操作系统之间的数据通信,使得操作系统能够随时获取第三方应用程序当前的场景信息,进而基于当前场景进行针对性的系统资源适配。
92.以操作系统为android系统为例,存储器120中存储的程序和数据如图9所示,存储器120中可存储有linux内核层320、系统运行时库层340、应用框架层360和应用层380,其中,linux内核层320、系统运行库层340和应用框架层360属于操作系统空间,应用层380属于用户空间。linux内核层320为计算机设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、摄像头驱动、蓝牙驱动、wi-fi驱动、电源管理等。系统运行库层340通过一些c/c++库来为android系统提供了主要的特性支持。如sqlite库提供了数据库的支持,opengl/es库提供了3d绘图的支持,webkit库提供了浏览器内核的支持等。在系统运行时库层340中还提供有安卓运行时库(android runtime),它主要提供了一些核心库,能够允许开发者使用java语言来编写android应用。应用框架层360提供了构建应用程序时可能用到的各种api,开发者也可以通过使用这些api来构建自己的应用程序,比如活动管理、窗口管理、视图管理、通知管理、内容提供者、包管理、通话管理、资源管理、定位管理。应用层380中运行有至少一个应用程序,这些应用程序可以是操作系统自带的原生应用程序,比如联系人程序、短信程序、时钟程序、相机应用等;也可以是第三方开发者所开发的第三方应用程序,比如游戏类应用程序、即时通信程序、相片美化程序、图数据抽取程序等。
93.以操作系统为ios系统为例,存储器120中存储的程序和数据如图10所示,ios系统包括:核心操作系统层420(core os layer)、核心服务层440(core services layer)、媒体层460(media layer)、可触摸层480(cocoa touch layer)。核心操作系统层420包括了操作系统内核、驱动程序以及底层程序框架,这些底层程序框架提供更接近硬件的功能,以供位于核心服务层440的程序框架所使用。核心服务层440提供给应用程序所需要的系统服务和/或程序框架,比如基础(foundation)框架、账户框架、广告框架、数据存储框架、网络连接框架、地理位置框架、运动框架等等。媒体层460为应用程序提供有关视听方面的接口,如图形图像相关的接口、音频技术相关的接口、视频技术相关的接口、音视频传输技术的无线播放(airplay)接口等。可触摸层480为应用程序开发提供了各种常用的界面相关的框架,可触摸层480负责用户在计算机设备上的触摸交互操作。比如本地通知服务、远程推送服务、广告框架、游戏工具框架、消息用户界面接口(user interface,ui)框架、用户界面uikit框架、地图框架等等。
94.在图10所示出的框架中,与大部分应用程序有关的框架包括但不限于:核心服务层440中的基础框架和可触摸层480中的uikit框架。基础框架提供许多基本的对象类和数据类型,为所有应用程序提供最基本的系统服务,和ui无关。而uikit框架提供的类是基础的ui类库,用于创建基于触摸的用户界面,ios应用程序可以基于uikit框架来提供ui,所以它提供了应用程序的基础架构,用于构建用户界面,绘图、处理和用户交互事件,响应手势
等等。
95.其中,在ios系统中实现第三方应用程序与操作系统数据通信的方式以及原理可参考android系统,本技术在此不再赘述。
96.其中,输入装置130用于接收输入的指令或数据,输入装置130包括但不限于键盘、鼠标、摄像头、麦克风或触控设备。输出装置140用于输出指令或数据,输出装置140包括但不限于显示设备和扬声器等。在一个示例中,输入装置130和输出装置140可以合设,输入装置130和输出装置140为触摸显示屏,该触摸显示屏用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。触摸显示屏通常设置在计算机设备的前面板。触摸显示屏可被设计成为全面屏、曲面屏或异型屏。触摸显示屏还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本技术实施例对此不加以限定。
97.除此之外,本领域技术人员可以理解,上述附图所示出的计算机设备的结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,计算机设备中还包括射频电路、输入单元、传感器、音频电路、无线保真(wireless fidelity,wifi)模块、电源、蓝牙模块等部件,在此不再赘述。
98.在本技术实施例中,各步骤的执行主体可以是上文介绍的计算机设备。可选地,各步骤的执行主体为计算机设备的操作系统。操作系统可以是安卓系统,也可以是ios系统,或者其它操作系统,本技术实施例对此不作限定。
99.本技术实施例的计算机设备,其上还可以安装有显示设备,显示设备可以是各种能实现显示功能的设备,例如:阴极射线管显示器(cathode ray tubedisplay,简称cr)、发光二极管显示器(light-emitting diode display,简称led)、电子墨水屏、液晶显示屏(liquid crystal display,简称lcd)、等离子显示面板(plasma display panel,简称pdp)等。用户可以利用计算机设备101上的显示设备,来查看显示的文字、图像、视频等信息。所述计算机设备可以是智能手机、平板电脑、游戏设备、ar(augmented reality,增强现实)设备、汽车、数据存储装置、音频播放装置、视频播放装置、笔记本、桌面计算设备、可穿戴设备诸如电子手表、电子眼镜、电子头盔、电子手链、电子项链、电子衣物等设备。
100.在图7所示的计算机设备中,处理器110可以用于调用存储器120中存储的图数据抽取程序,并具体执行以下操作:
101.基于spark中的弹性分布式数据集读取janusgraph中存储的第一图数据;
102.调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理,得到第二图数据;
103.保存所述第二图数据到所述spark中的弹性分布式数据集。
104.在一个实施例中,所述处理器110在执行所述基于弹性分布式数据集读取janusgraph中存储的第一图数据时,具体执行以下操作:
105.将所述弹性分布式数据集划分成至少一个分区;
106.基于各所述分区以迭代的方式批量读取第一格式的第一图数据,对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据。
107.在一个实施例中,所述处理器110在执行所述保存所述第二图数据到所述弹性分布式数据集时,具体执行以下操作:
108.根据所述弹性分布式数据集中自定义的图计算处理逻辑对所述第二图数据进行图计算。
109.在一个实施例中,所述处理器110在执行所述保存所述第二图数据到所述弹性分布式数据集之后,还执行以下操作:
110.基于各分区与文件目录的对应关系,保存所述第二图数据到与所述文件目录对应的分区。
111.在本技术实施例中,通过将spark中的弹性分布式数据集进行分区,然后基于各所述分区以迭代的方式批量读取第一格式的第一图数据,并对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据,可以提高数据抽取的并行度,提高数据抽取效率,接着调用耦合在janusgraph的数据处理流程中的反序列化模块将所述第二格式的第一图数据进行反序列化处理,得到第二图数据,再将所述第二图数据送入对应的分区基于自定义的图计算处理逻辑进行图计算,整个数据抽取过程简化了图数据抽取过程中的处理逻辑,提高了数据抽取效率并减少了资源消耗。
112.本领域的技术人员可以清楚地了解到本技术的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(field-programmable gate array,fpga)、集成电路(integrated circuit,ic)等。
113.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
114.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
115.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
116.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
117.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
118.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或
者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
119.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
120.以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

技术特征:


1.一种图数据抽取方法,其特征在于,应用于开源计算框架spark与分布式图数据库janusgraph相结合的架构中,所述方法包括:基于spark中的弹性分布式数据集读取所述janusgraph中存储的第一图数据;调用耦合在所述janusgraph的janusgraph数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理,得到第二图数据;保存所述第二图数据到所述spark中的弹性分布式数据集。2.根据权利要求1所述的方法,其特征在于,所述基于spark中的弹性分布式数据集读取所述janusgraph中存储的第一图数据,包括:将所述弹性分布式数据集划分成至少一个分区;基于各所述分区以迭代的方式批量读取第一格式的第一图数据,对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据。3.根据权利要求2所述的方法,其特征在于,所述将所述弹性分布式数据集划分成至少一个分区,包括:将所述弹性分布式数据集划分成预设数量的分区;或获取所述janusgraph中存储的第一图数据对应的文件目录,将所述弹性分布式数据集划分成与各所述文件目录一一对应的分区。4.根据权利要求1所述的方法,其特征在于,所述保存所述第二图数据到所述spark中的弹性分布式数据集之后,还包括:根据所述弹性分布式数据集中自定义的图计算处理逻辑对所述第二图数据进行图计算。5.根据权利要求3所述的方法,其特征在于,所述保存所述第二图数据到所述spark中的弹性分布式数据集,包括:基于各分区与文件目录的对应关系,保存所述第二图数据到与所述文件目录对应的分区。6.一种图数据抽取装置,其特征在于,包括:图数据读取模块,用于基于spark中的弹性分布式数据集读取所述janusgraph中存储的第一图数据;反序列化模块,用于调用耦合在所述janusgraph的的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理,得到第二图数据;图数据保存模块,用于保存所述第二图数据到所述spark中的弹性分布式数据集。7.根据权利要求6所述的图数据抽取装置,其特征在于,还包括:图数据计算模块,用于根据所述弹性分布式数据集中自定义的图计算处理逻辑对所述第三图数据进行图计算。8.根据权利要求6所述的图数据抽取装置,其特征在于,所述图数据读取模块,包括:分区划分单元,用于将所述弹性分布式数据集划分成至少一个分区;图数据解析单元,用于基于各所述分区以迭代的方式批量读取第一格式的第一图数据,对所述第一格式的所述第一图数据进行解析,得到第二格式的第一图数据。9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~5中任意一项所述方法的步骤。
10.一种计算机设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~5中任意一项所述方法的步骤。

技术总结


本申请实施例公开了一种图数据抽取方法、装置、存储介质及计算机设备,所述方法包括:基于Spark中的弹性分布式数据集读取JanusGraph中存储的第一图数据,然后调用耦合在JanusGraph的数据处理流程中的反序列化模块将所述第一图数据进行反序列化处理得到第二图数据,将所述第二图数据保存到Spark中的弹性分布式数据集。采用本申请实施例,可以在基于Spark+JanusGraph架构的图数据抽取中直接抽取JanusGraph底层存储的图数据,简化抽取步骤并省去一些不必要的处理逻辑,提高数据抽取效率。效率。效率。


技术研发人员:

张世鸣

受保护的技术使用者:

广州视源人工智能创新研究院有限公司

技术研发日:

2021.06.07

技术公布日:

2022/12/22

本文发布于:2024-09-23 20:09:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/45724.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   所述   分布式   弹性
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议