掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置、计算设备及存储介质

文献发布时间:2023-06-19 11:16:08


数据处理方法、装置、计算设备及存储介质

技术领域

本公开涉及数据处理技术领域,特别是涉及一种数据处理方法、装置、计算设备及存储介质。

背景技术

图数据库(Graph Database,GDB)是一种以图结构进行语义查询,并使用顶点、边与属性来表示和存储数据的数据库。

发明内容

在针对图数据库的数据处理与数据写入时,尤其是在存在较大数量数据的应用场景下,会导致处理效率低下,难以满足业务需求。提供一种缓解、减轻或甚至消除上述问题中的一个或多个的机制将是有利的。

根据本公开的一方面,提供了一种数据处理方法,包括:将多个数据加载到分布式计算引擎的内存中;对多个数据进行分区,使得多个数据被分布到分布式计算引擎的内存的多个分区中;为每一个分区建立到图数据库的连接;以及根据多个分区中的每一个分区到图数据库的连接,将多个分区中的多个数据写入到图数据库的相应存储区域中。

根据本公开的另一方面,提供了一种数据处理装置,包括:数据加载单元,被配置成将多个数据加载到分布式计算引擎的内存中;数据分区单元,被配置成对多个数据进行分区,使得多个数据被分布到分布式计算引擎的内存的多个分区中;连接建立单元,被配置成为每一个分区建立到图数据库的连接;以及数据写入单元,被配置成根据多个分区中的每一个分区到图数据库的连接,将多个分区中的多个数据写入到图数据库的相应存储区域中。

根据本公开的另一方面,提供了一种计算设备,包括:存储器、处理器以及存储在存储器上的计算机程序,处理器被配置为执行计算机程序以实现根据本公开的实施例的数据处理方法的步骤。

根据本公开的又另一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现根据本公开的实施例的数据处理方法的步骤。

根据本公开的再另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现根据本公开的实施例的数据处理方法的步骤。

根据本公开的实施例,能够提高数据到图数据库的写入效率。

根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。

附图说明

在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:

图1是根据示例性实施例的可以在其中实施本文描述的各种方法的示例系统的示意图;

图2是根据本公开的示例性实施例的数据处理方法的流程图;

图3是根据本公开的示例性实施例的数据处理方法的数据流示意图;

图4是根据本公开的另一示例性实施例的数据处理方法的流程图;

图5是根据本公开的另一示例性实施例的数据处理方法的数据流示意图;

图6是根据本公开的示例性实施例的数据处理方法的配置方法的流程图;

图7是图示出根据示例性实施例的数据处理装置的示意性框图;以及

图8是图示出能够应用于示例性实施例的示例性计算机设备的框图。

具体实施方式

在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。

在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。如本文使用的,术语“多个”意指两个或更多,并且术语“基于”应解释为“至少部分地基于”。此外,术语“和/或”以及“……中的至少一个”涵盖所列出的项目中的任何一个以及全部可能的组合方式。

下面结合附图详细描述本公开的示例性实施例。

图1是图示出根据示例性实施例的可以在其中实施本文描述的各种方法的示例系统100的示意图。

参考图1,该系统100包括客户端设备110、服务器120、以及将客户端设备110与服务器120通信地耦合的网络130。

客户端设备110包括显示器114和可经由显示器114显示的客户端应用(APP)112。客户端应用112可以为运行前需要下载和安装的应用程序或者作为轻量化应用程序的小程序(liteapp)。在客户端应用112为运行前需要下载和安装的应用程序的情况下,客户端应用112可以被预先安装在客户端设备110上并被激活。在客户端应用112为小程序的情况下,用户102可以通过在宿主应用中搜索客户端应用112(例如,通过客户端应用112的名称等)或扫描客户端应用112的图形码(例如,条形码、二维码等)等方式,在客户端设备110上直接运行客户端应用112,而无需安装客户端应用112。在一些实施例中,客户端设备110可以是任何类型的移动计算机设备,包括移动计算机、移动电话、可穿戴式计算机设备(例如智能手表、头戴式设备,包括智能眼镜,等)或其他类型的移动设备。在一些实施例中,客户端设备110可以替换地是固定式计算机设备,例如台式机、服务器计算机或其他类型的固定式计算机设备。

服务器120典型地为由互联网服务提供商(ISP)或互联网内容提供商(ICP)部署的服务器。服务器120可以代表单台服务器、多台服务器的集群、分布式系统、或者提供基础云服务(诸如云数据库、云计算、云存储、云通信)的云服务器。将理解的是,虽然图1中示出服务器120与仅一个客户端设备110通信,但是服务器120可以同时为多个客户端设备提供后台服务。

网络130的示例包括局域网(LAN)、广域网(WAN)、个域网(PAN)、和/或诸如互联网之类的通信网络的组合。网络130可以是有线或无线网络。在一些实施例中,使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式来处理通过网络130交换的数据。此外,还可以使用诸如安全套接字层(SSL)、传输层安全(TLS)、虚拟专用网络(VPN)、网际协议安全(IPsec)等加密技术来加密所有或者一些链路。在一些实施例中,还可以使用定制和/或专用数据通信技术来取代或者补充上述数据通信技术。

为了本公开实施例的目的,在图1的示例中,客户端应用112可以为数据处理应用程序,该数据处理应用程序可以提供用于数据处理的各种功能,例如,数据选取、命令配置、运行环境配置、运行结果的显示等等。尤其是,客户端应用112可以是如下文所述的任务管理平台或者运行平台等。与此相应,服务器120可以是与数据处理应用程序一起使用的服务器。该服务器120可以从客户端设备110中运行的客户端应用112接收用户指令,并且向客户端设备110中运行的客户端应用112提供各种数据处理服务,例如数据读取、数据写入、数据同步、知识图谱展示等。替换地,服务器120也可以将数据提供给客户端设备110,由客户端设备110中运行的客户端应用112根据数据提供处理服务例如数据处理任务的管理或执行结果的展示等。

图2是图示出根据示例性实施例的数据处理方法200的流程图。方法200可以在客户端设备(例如,图1中所示的客户端设备110)处执行。在一些实施例中,方法200可以在服务器(例如,图1中所示的服务器120)处执行。在一些实施例中,方法200可以由客户端设备(例如,客户端设备110)和服务器(例如,服务器120)相组合地执行。在下文中,以执行主体为服务器120为例,详细描述数据处理方法200的各个步骤。

参考图2,在步骤S201处,将多个数据加载到分布式计算引擎的内存中。

在步骤S202处,对多个数据进行分区,使得多个数据被分布到分布式计算引擎的内存的多个分区中。

在步骤S203处,为每一个分区建立到图数据库的连接。

在步骤S204处,根据多个分区中的每一个分区到图数据库的连接,将多个分区中的多个数据写入到图数据库的相应存储区域中。

根据上述方法200,通过将数据分区到分布式计算引擎的内存中,每个分区单独建立连接写入目标数据库,从而能够实现多个数据到目标数据库的分布式写入,提高数据处理尤其是数据写入的效率。可以理解的是,数据处理方法200也可以被称作数据导入方法、数据存储方法、图数据库入库方法或者数据同步方法等,并且本公开不限于此。

图数据库适于存储以边与顶点的形式维护的知识图谱。知识图谱是知识工程中以图的形式组织的知识集群,其由不同类型的实体作为节点,关系作为连接节点的边所构成的。在相关场景下,为了解决通过知识图谱对海量数据进行业务分析,可能需要将海量数据在最短的时间内快速生成到知识图谱系统内,完成原始数据在知识图谱层面的构建。例如,在某些特定应用场景下,需要针对上百亿节点和关系数据在24小时内完成知识图谱数据构建。因此,数据的分布式处理和写入方法尤为有利。

下面描述根据本公开的一些其他实施例的数据处理方法的变型示例。

根据一些实施例,多个分区中的多个数据到图数据库的相应存储区域中的写入可以是并行写入。由此,能够利用分布式计算引擎的优点实现数据的并行写入,增加数据处理的效率,节省数据处理尤其是数据入库所需的时间。

根据一些实施例,多个数据可以是结构化存储的数据。由此,可以实现从结构化数据到图数据的转换。例如,根据这样的实施例,可以实现例如数据仓库中的结构化数据到图数据库中的非结构化数据的数据转换。例如,结构化存储的数据可以是以表的形式存储的作为单个实体的顶点和作为实体之间关系的描述的关系。例如,顶点的示例可以是张三、李四、王五等,并且关系可以指示张三到李四之间的朋友关系、李四与王五之间的借贷关系等。

根据一些实施例,对多个数据进行分区可以包括:基于多个数据中的每个数据的原始存储地址,将每个数据哈希映射到分布式计算引擎的内存的相应分区中。基于数据原始存储地址的哈希分区,相当于利用数据原始存储地址对映射进行监督,有利于哈希分区的均匀性。例如,作为一个示例,分布式计算引擎可以是Apache Spark计算引擎,其是一种基于内存的分布式计算引擎。在这种情况下,对多个数据进行分区可以例如使用Spark内部的hash分区算法。

根据一些实施例,多个数据可以是从分布式存储数据库加载的,并且每个数据的原始存储地址包括每个数据在分布式存储数据库中的原始分区地址。具体地,基于数据原始存储分片地址,在分布式计算引擎中进行哈希分区,这样分区使得数据分布更均匀,分布式性能更优。

例如,当从中加载数据的原始数据库是分布式存储数据库(例如,Hive)的情况下,可以根据数据之前所在数据块地址(即,在Hive里的分片)进行分区。例如,在分布式计算引擎的内存被分割为50个分区的情况下,可以将数据之前所在数据块地址对50进行取模,并且由此被划分到内存的不同分区。

根据一些实施例,为每一个分区建立到图数据库的连接可以包括:在每一个分区中建立到图数据库的连接实例,其中,每个连接实例能够调用图数据库的计算引擎;并且其中,将多个分区中的多个数据写入到图数据库的相应存储区域中可以包括:通过每个分区的连接实例调用图数据库的图数据处理算子,以将每一个分区中的数据的格式转换为图数据格式,并且将经转换的数据写入到图数据库的相应存储区域中。通过每一个图数据库连接分别调用图数据库的计算引擎进行写入,能够实现对图数据库的并行写入。图数据库例如可以支持TinkerPop Gremlin查询语言,可以帮助用户快速构建基于高度连接的数据集的应用程序。例如,图数据处理算子可以是Gremlin算子。

根据一些实施例,图数据库可以是HBase。HBase是一种分布式的、面向列的开源数据库。作为分布式存储数据库,HBase可以具有这样的机制:

(1)RowKey:HBase的数据是通过RowKey(行键)来分布的。在HBase中,RowKey的作用类似于MySQL、Oracle中的主键,用于标示唯一的行,并且HBase中的数据是根据Rowkey的字典排序来排序的;

(2)Region:在向HBase写入数据时,数据会以HBase的列式存储结构写入到HBase中不同的Region(存储区域)。每个Region的数据量超过一定的大小后会自动分裂成两个不同的Region,这也被称为HBase的split机制。

在图数据库可以是HBase的情况下,根据这样的实施例,将多个分区中的多个数据写入到图数据库的相应存储区域中的步骤可以包括:使用每个数据的数据标识作为HBase的RowKey,以使得数据被映射到HBase的相应存储区域也即不同的Region中。通过将数据的原始标识作为HBase分区的RowKey也即数据分区存储所依据的主键,代替现有技术中的HBase自行分配RowKey,可以通过简单地控制数据ID,来调节HBase的分区效果。数据的ID可以是全局唯一的。数据写入的时候,HBase会将每条数据的ID映射到对应的RowKey并且写入到对应的Region。例如,ID到RowKey的映射可以通过对ID进行哈希运算或者取模并且判断取模的余数对应于哪个Region来实现。

HBase分区需要依靠RowKey机制,因此,通过对如何选取该主键的上述设计,能够控制HBase的分区均匀性。例如,通过对数据主键的这种设定规则,可以避免数据太过零散,并且使得分区后每个分区的数据量和分区的文件大小尽可能接近或相同。

例如,数据标识从被加载到分布式计算引擎前到被写入到图数据库的过程中可以保持不变。也就是说,数据标识或者数据ID可以是原始存储的数据ID,也即数据在被加载到分布式存储引擎中之前(例如,存储在原始数据库、例如数据仓库中时)的数据ID。由此,可以通过在原始数据库中对数据标识的维护来控制最终的分区性能,能够使分布式存储更加均匀,并且减少了额外计算主键所需的计算资源和人工维护的成本。换言之,可以制定规则使得数据仓库中的数据ID与HBase的RowKey建立对应关系,由此完成HBase中的分区。可以理解的是,其他实施例也是可以的,例如可以由图数据库janusgraph来生成图数据的ID。

根据一些实施例,HBase的初始存储区域数量可以是基于HBase的服务节点的数量来确定的。基于HBase的服务节点来设定HBase的初始Region数量,可以在HBase的自带的区域分裂与数据平均分布机制之外,在早期写入、数据量还比较小的时候,就可以调控存储分区的数量,进而提高HBase的分布式存储性能。例如,HBase的初始存储区域数量可以是HBase的最大服务节点数量。具体地,初始的Region数量可以设置为与HBase的RegionServer数量相同。作为一个非限制性示例,在HBase集群有50台机器并且其中2台机器是master并且另外48台是RegionServer的情况下,可以将Region的数量初始设定为48个,由此以最大限度地利用HBase的分布式存储性能。

HBase中的Region最终的数量可能跟导入的数据量有关系。作为一个非限制性示例,在一个Region最大是10G并且HBase表中已经有了10T的数据的情况下,Region的数量是10*1024/10=1024个。

此外,在上述HBase分区机制的基础上,还可以对分区进行另外的优化。例如,在HBase已经存储有其他数据的情况下,很可能存在分区不均匀的情况,例如每个分区的数据大小是100M-1G大小不等。在这种情况下,可以通过对HBase中的较小的文件进行人为合并,例如,将500M以下的文件全部合并成一个大文件,让数据进行重新分区,以使得HBase中的数据分布更加均匀。

根据一些实施例,多个数据可以来自Hive,并且Hive和HBase可以位于相同的集群中。Hive和HBase可以位于例如由多个机器组成的同一集群内,并且换言之,Hive和HBase可以位于相同的分布式文件系统上。由此,可以便于硬件维护,并且位于相同的分布式文件系统也有利于分布式存储的实现。例如,分布式文件系统可以是Hadoop分布式文件系统(HDFS)。Hive是基于Hadoop构建的数据仓库分析系统,其能够提供丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据,能够为数据操作提供良好的伸缩性和可扩展性。可以理解的是,原始数据库与目标图数据库可以采用其他的形式,只要能够实现数据从原始数据库的加载与到图数据库的写入即可。

根据一些实施例,分布式计算引擎的内存的多个分区的数量可以是根据多个数据的数据量和分布式计算引擎的集群运算能力而确定的。由此,能偶基于数据量和运算能力来调整分区数,以达到最优的效果。

根据一些实施例,多个分区的数量可以被设定为等于分布式计算引擎的并行度。分区数量与并行度相同,使得最大化并行计算能力。下面给出一个分区数量的示例。在数据量为1千万条、集群机器数量为25台、每个机器有两个核(也即,并行数50)并且集群内存为50T的示例场景下,可以选取典型的分区数量50个。

在其他示例中,例如在分区数大于并行度的数量下,可以先并行再串行运行分区的计算,并且本公开不限于此。例如,在集群内只有较少例如10台机器的情况下,也可以选用较大的分区数量。分区数量可以是10个、100个等。在这种情况下增加分区的目的是让每个分区单次计算的数据量少,减少计算错误,使得性能更稳定。

根据一些实施例,多个数据可以来自数据仓库(Data Warehouse,DW或DWH)的经清洗的数据层。待处理的数据已经经过数据清洗,从而保证数据写入的准确性。如上文已经叙述的,数据仓库可以采用分布式存储架构,例如可以是Hive。

根据一些实施例,数据处理方法还可以包括:为每一个分区建立到索引数据库的连接;以及根据多个分区中的每一个分区到索引数据库的连接,将多个分区中的多个数据的索引写入到索引数据库的相应存储区域中。由此,对数据索引的写入也通过分布式计算引擎中的分区来完成,能够进一步增加计算效率。例如,索引数据库可以是支持分布式的ElasticSearch(ES)检索框架。

现有技术中的将数据从数据仓库同步到知识图谱过程不支持分布式计算,存在单节点问题,数据入库效率远远达不到预期。对于大量数据录入场景,例如三百亿数据录入场景,性能/速度十分不佳。通过上面描述的实施例,能够提高图数据库的数据入库性能,尤其是解决在单机部署和海量数据下、尤其是针对上百亿数据快速入图数据库的需求时同步数据效率的缺陷。根据本公开的实施例的基于分布式的数据处理方法,能够将大量数据、包括不同来源的数据库的数据同步到图数据库。

虽然各个操作在附图中被描绘为按照特定的顺序,但是这不应理解为要求这些操作必须以所示的特定顺序或者按顺行次序执行,也不应理解为要求必须执行所有示出的操作以获得期望的结果。例如,上述的实施例的步骤可以采取不同的顺序执行或者并行执行,或者其中的一个或多个步骤可以被省略。

下面结合图3描述根据本公开的实施例的数据处理方法(例如,方法200或其变体)中的数据流。例如,系统可以包括数据库(其可以被称为原始数据库)310、分布式计算引擎320和图数据库(或者称为目标数据库)330。分布式计算引擎320从原始数据库310读取原始数据(例如,对应于步骤S201)。例如,分布式计算引擎320可以是Spark计算引擎,并且原始数据库310可以是Hive或者MySQL等。随后,分布式计算引擎320例如使用哈希算法或其他的数据分区方法,将数据划分到多个内存分区321-325(例如,对应于步骤S202)。可以理解的是,虽然这里示出了5个内存分区,但这仅仅是示例,并且本公开不限于此。

在每个分区321-325中,在分区中获得相关的图连接(也即,建立到图数据库的连接)。该步骤可以例如通过读取目标图数据库的配置文件,例如已经存储在HDFS上的配置文件来完成。之后,在每个分区中完成从内存分区到图数据库的相应存储区域的写入。例如,如图3所示,内存分区321和322中的数据被写入到图数据库中的第一存储区域331,并且内存分区323-325中的数据被写入到图数据库中的第二存储区域322。

可以理解,这样的存储区域数量和存储区域分配仅是示例。例如,图数据库可以具有更多的存储区域。例如,可以将内存分区321、323中的数据写入图数据库中的第一存储区域,将内存分区322、324中的数据写入图数据库中的第二存储区域,并且将内存分区325中的数据写入图数据库中的第三存储区域(未示出)等。替选地,例如,可以将一个内存分区中的数据写入不同的图数据库的内存分区中,并且本公开对此不加以限制。另外,如上文已经叙述的,在采用HBase作为图数据库的情况下,形如存储区域332到存储区域3321和3322的分区可以是由图数据库自行完成的。

下面结合图4描述根据本公开的另一个实施例的数据处理方法400。可以将数据处理方法400视为大致由三个阶段组成,分别是原始数据的分区、在每个分区中建立相同的图连接和在每个分区中执行相关的新增数据操作,并且下面进行更加详细的说明。

参考图4,在步骤S401处,在分布式计算引擎中加载要导入到图数据库中的原始数据。如上所述,分布式计算引擎可以是Spark。原始数据可以存储在Hive中。Hive可以位于HDFS(分布式文件系统),并且目标图数据库HBase可以也在HDFS中。换言之,Hive和HBase可以位于例如由多个机器组成的同一集群内。

例如,在分布式计算引擎是Spark的情况下,基于确定输入源是Hive中的某张节点实体或者关系表,Spark读取Hive中的数据(例如经过清洗的数据)并且保存到其自身的内存中。要导入到图数据库中原始存储的数据是结构化数据(例如,以表的形式存储)。数据仓库中数据分层存储,例如ODS层(原始数据)的数据进行清洗,形成明细层。在某些情况下,数据仓库中经选择并且经清洗以生成知识图谱的明细数据层可以被称为图层。

在步骤S402处,对数据(例如,原始数据)进行分区,使得多个数据被分布到分布式计算引擎的内存的多个分区中。例如,可以在内存中采用Spark的哈希算法进行分区。如前文已经描述的,分区数量可以由用户设定或者系统基于一定的条件(例如,集群运算能力等)进行设定。例如,设定repartitionNum=5是指将数据划分到5个内存分区中。每个分区中的数据会被分发到相应执行器中进行执行。

在步骤S403处,为每一个分区建立到图数据库的连接,例如到HBase的连接。“连接”相当于打开图数据库的钥匙,并且可以采用例如java对象的形式。建立连接有时也可以被称为开启连接或者初始化连接实例等,并且本公开不限于此。每个分区建立不同的连接实例,但是可以指向同一个图数据库(例如,HBase)。HBase由于支持高并发分布式操作,因此格外有利。当然,其他数据库也是适用的。

建立连接包括获取例如用户设定的输入参数,包括数据库标识(例如数据库的类型是HBase或其他数据库)和数据库配置(例如,目标数据库的IP地址、端口、初始化分区等配置)等。接下来,建立(例如,初始化)一个目标图数据库(例如,HBase)连接实例。每个分区分别建立图数据库连接实例,并且因此,在接下来的步骤中,不同分区可以同时或并发地调用图数据库进行存储,并且不同分区的存储结果可以分布在图数据库的不同存储位置。

在步骤S404处,为每一个分区建立到索引数据库(例如,ES)的连接。到索引数据库的连接建立过程与到图数据库的连接建立过程类似,并且在此不再赘述。ES数据库支持高并发分布式操作,因此在分布式计算中格外有利。当然,其他数据库也是适用的。

在步骤S405处,根据多个分区中的每一个分区到图数据库的连接,将多个分区中的多个数据写入到图数据库的相应存储区域中。当在每一个分区中成功获取到针对图数据的实例连接后(例如,在初始化HBase实例后),通过当前图库的实例连接去操作图数据库(例如,调用janusgraph的server),以调用HBase的新增操作(具体地,可以是janusgraph的新增数据操作)。结构化数据到非结构化数据的这个数据转换过程是通过HBase来进行,并且具体是HBase中的图处理算子(例如,gremlin算子)来进行的。HBase的不同API可以实现对图的增、删、查、改等操作,并且在此处,可以调用新增操作以实现写入。

存储后的数据可以通过数据ID来识别。例如,数据ID可以是之前在Hive中存储每条数据的全局唯一ID,并且在HBase中数据的ID保持不变,并且在需要的时候查询的时候,可以通过该ID作为一级索引来执行查询。在一些实施例中,该数据ID可以是分布式图数据库中的分区主键。

在步骤S406处,根据多个分区中的每一个分区到索引数据库的连接,将多个分区中的多个数据写入到索引数据库的相应存储区域中。在每个分区中,将索引相关字段写入索引数据库ES。需要存储到ES中的可以是二级索引,例如一些模糊查询字段诸如人名、公司名等。

在所有分区运行结束后,可以关闭分布式计算引擎Spark,并且任务结束。此时,数据已经被写入到图数据库中,并且对应的索引也已经被写入到索引数据库中,并且可以在以后的时间被读取或查询。

可以理解的是,虽然各个操作在附图中被描绘为按照特定的顺序,但是这不应理解为要求这些操作必须以所示的特定顺序或者按顺行次序执行,也不应理解为要求必须执行所有示出的操作以获得期望的结果。例如,步骤S404可以在步骤S403之前被执行,或者与步骤S403并发地执行。又例如,步骤S406可以在步骤S405之前被执行,或者与步骤S405并发地执行。又例如,步骤S404和S406甚至可以被省略。

下面结合图5描述根据本公开的实施例的数据处理方法(例如,方法400或其变体)中的数据流。例如,系统可以包括数据库(其可以被称为原始数据库)510、分布式计算引擎520和图数据库(或者称为目标数据库)530和索引数据库540。原始数据库510、分布式计算引擎520和目标数据库530可以类似于结合图3描述的原始数据库310、分布式计算引擎320和图数据330,并且将省略类似的描述。可以理解的是,虽然这里示出了4个内存分区521-524,但这仅仅是示例,并且本公开不限于此。以分区521为例,除了在分区中建立到图数据库530的连接之外,还可以建立到索引数据库540的连接。容易理解的是,这两者顺序不限,并且可以并行发生。可以理解,每个分区(包括图中未示出的可能的更多数量的分区)都可以建立到图数据库的连接和索引数据库的连接两者。不同的分区使用不同的连接实例,但是这些连接实例可以指向同样的图数据库或索引数据库。

表1给出了根据本公开的实施例的数据处理方法对图数据库入库的加速效果。其中加速比是单机数据导入与分布式数据导入的时间比值,并且由此是效果对比的直观参考值。

表1

上述案例1-4均采用Spark作为分布式计算引擎,Spark内存分区个数设定为100,集群中分配50个执行器,每个执行器启动2个CPU核进行导入,并且由此并发量与分区的个数均为100,即执行器数量numExecutors=50,执行器核数executorCores=2,并且有并发量=executorCores*numExecutors=100=分区数。

在方法200或400开始前,可以先对方法的运行环境和输入参数进行配置。这样的配置可以例如在客户端侧(例如,结合图1描述的客户端110)上完成。例如,配置输入可以包括:

·数据来源参数:例如Hive、地址、端口和相应的数据id等。例如,可以是人员信息表单(用于创建实体顶点“个人”)等。例如,在原始数据库是MySQL的情况下,数据来源可以包括MySQL地址、用户名、密码等。或者,在原始数据库是Hive的情况下,数据来源可以包括Hive地址等。

·目标存储参数:目标存储位置可以包括图数据库(例如,HBase)地址、索引数据库(例如,ES)地址以及对应的数据库端口等基本配置。

·运行参数:运行参数可以例如包括Spark分区数量,并行数(分配多少个执行器以及执行器核数)等。例如,当方法所对应的程序包在数据工厂(DataFactory)上运行的情况下,运行参数可以被称为DataFactory配置。

可以使用以任何方式设定的文件配置管理器来输入这些参数。也可以采用其他方式,例如上传配置文件的形式进行设定。

例如,在上述配置完成之后,方法200或400可以由服务器侧执行。替选地,方法200或400可以由服务器与客户端共同执行,或者上述配置可以发生在方法200或400开始之后的任何适当的时间节点。

下面结合图6描述根据本公开的实施例的数据处理方法的配置与运行方法600。方法600可以包括每次运行前的预配置步骤:可以将上文步骤中的程序文件打包成jar包,例如称为分布式数据导入jar包,并且将要创建图库的信息(名称、端口、地址等)写入配置文件,然后将其上传到文件系统HDFS上,并且在任务管理平台上配置任务,由此开始任务的执行。方法600可以在客户端侧执行,例如在图1所示出的客户端应用112上执行。替选地,方法600可以部分在客户端侧执行,并且部分在服务器侧执行。

在S601处,获取数据库配置信息。具体地,可以由用户生成、自动生成、或者读取预先生成的配置文件,或者以其他形式存储的配置信息,其中存储需要输出的图数据库基础配置。例如,配置文件可以包括以下信息:

·storage.hostname存储后端HBase的域名地址;

·storage.HBase.table存储后端HBase对应的表名;

·index.search.hostname索引存储后端ES的域名地址;以及

·index.search.index-name索引存储后端ES对应的表名。

在S602处,加载配置信息和程序包。例如,可以将配置文件和程序包(例如,生成的jar包)上传到HDFS上。

在S603处,配置任务的执行参数。例如,可以在运行环境或者任务管理平台中对任务的执行进行配置。任务可以是用于执行上文所述的方法200或400或其变体。例如,运行环境可以是数据工厂DataFactory。在这一步,可以对如前文所述的运行参数进行设置。运行参数可以包括针对分布式数据导入数据源的参数(例如,对于Hive数据源的对应参数Spark.querySql)。运行参数可以包括针对分布式计算引擎中的分区所需的参数(例如,每个执行器的执行内存大小Spark.repartitionNum.executorMemory、每个执行器的核数executorCores、执行进程的数量numExecutors,并且通过这些参数,可以计算并行度parallel=executorCores*numExecutors)。

在S604处,调用配置好的任务,以执行数据的同步,包括实现上文所述的方法200或400或其变体的步骤等。

本公开的方法可以适用于各种领域的知识图谱场景。例如,以金融领域账户节点和资金关系作为知识图谱的示例进行说明。账户节点的数据量和资金关系的数据量是占金融领域的数据量比重最大的,因而在金融领域的知识图谱分析过程中,是最重要的实体和关系之一。由于资金关系依赖于存储账户,因此,可以采用先导入存储账户再导入资金关系的导入顺序。可以理解的是,本公开并不限于这样的应用场景。

图7是图示出根据示例性实施例的数据处理装置700的示意性框图。数据处理装置700可以包括数据加载单元701、数据分区单元702、连接建立单元703和数据写入单元704。数据加载单元701可以被配置成将多个数据加载到分布式计算引擎的内存中。数据分区单元702可以被配置成对多个数据进行分区,使得多个数据被分布到分布式计算引擎的内存的多个分区中。连接建立单元703可以被配置成为每一个分区建立到图数据库的连接。数据写入单元704可以被配置成根据多个分区中的每一个分区到图数据库的连接,将多个分区中的多个数据写入到图数据库的相应存储区域中。

应当理解,图7中所示装置700的各个模块可以与参考图2描述的方法200中的各个步骤相对应。由此,上面针对方法200描述的操作、特征和优点同样适用于装置700及其包括的模块。为了简洁起见,某些操作、特征和优点在此不再赘述。

虽然上面参考特定模块讨论了特定功能,但是应当注意,本文讨论的各个模块的功能可以分为多个模块,和/或多个模块的至少一些功能可以组合成单个模块。本文讨论的特定模块执行动作包括该特定模块本身执行该动作,或者替换地该特定模块调用或以其他方式访问执行该动作(或结合该特定模块一起执行该动作)的另一个组件或模块。因此,执行动作的特定模块可以包括执行动作的该特定模块本身和/或该特定模块调用或以其他方式访问的、执行动作的另一模块。例如,不同的模块在一些实施例中可以组合成单个模块,或者单个模块可以被拆分为不同的模块。如本文使用的,短语“实体A发起动作B”可以是指实体A发出执行动作B的指令,但实体A本身并不一定执行该动作B。

还应当理解,本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。上面关于图7描述的各个模块可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些模块可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些模块可以被实现为硬件逻辑/电路。例如,在一些实施例中,数据加载单元701、数据分区单元702、连接建立单元703和数据写入单元704中的一个或多个可以一起被实现在片上系统(System onChip,SoC)中。SoC可以包括集成电路芯片(其包括处理器(例如,中央处理单元(CentralProcessing Unit,CPU)、微控制器、微处理器、数字信号处理器(Digital SignalProcessor,DSP)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。

根据本公开的一方面,提供了一种计算设备,其包括存储器、处理器以及存储在存储器上的计算机程序。该处理器被配置为执行计算机程序以实现上文描述的任一方法实施例的步骤。

根据本公开的一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。

根据本公开的一方面,提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。

在下文中,结合图8描述这样的计算机设备、非暂态计算机可读存储介质和计算机程序产品的说明性示例。

图8示出了可以被用来实施本文所描述的方法的计算机设备800的示例配置。举例来说,图1中所示的服务器120和/或客户端设备110可以包括类似于计算机设备800的架构。上述数据处理设备/装置也可以全部或至少部分地由计算机设备800或类似设备或系统实现。

计算机设备800可以是各种不同类型的设备,例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统、和/或任何其它合适的计算机设备或计算系统。计算机设备800的示例包括但不限于:台式计算机、服务器计算机、笔记本电脑或上网本计算机、移动设备(例如,平板电脑、蜂窝或其他无线电话(例如,智能电话)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、手表)、娱乐设备(例如,娱乐器具、通信地耦合到显示设备的机顶盒、游戏机)、电视或其他显示设备、汽车计算机等等。因此,计算机设备800的范围可以从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。

计算机设备800可以包括能够诸如通过系统总线814或其他适当的连接彼此通信的至少一个处理器802、存储器804、(多个)通信接口806、显示设备808、其他输入/输出(I/O)设备810以及一个或更多大容量存储设备812。

处理器802可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器802可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器802可以被配置成获取并且执行存储在存储器804、大容量存储设备812或者其他计算机可读介质中的计算机可读指令,诸如操作系统816的程序代码、应用程序818的程序代码、其他程序820的程序代码等。

存储器804和大容量存储设备812是用于存储指令的计算机可读存储介质的示例,所述指令由处理器802执行来实施前面所描述的各种功能。举例来说,存储器804一般可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,大容量存储设备812一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。存储器804和大容量存储设备812在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,所述计算机程序代码可以由处理器802作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。

多个程序模块可以存储在大容量存储设备812上。这些程序包括操作系统816、一个或多个应用程序818、其他程序820和程序数据822,并且它们可以被加载到存储器804以供执行。这样的应用程序或程序模块的示例可以包括例如用于实现以下部件/功能的计算机程序逻辑(例如,计算机程序代码或指令):客户端应用112、方法200、方法400和/或方法600(包括方法200、400以及600的任何合适的步骤)、和/或本文描述的另外的实施例。

虽然在图8中被图示成存储在计算机设备800的存储器804中,但是模块816、818、820和822或者其部分可以使用可由计算机设备800访问的任何形式的计算机可读介质来实施。如本文所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。

计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,所述信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括而不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算机设备访问的任何其他非传送介质。

与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序模块或其他数据。本文所定义的计算机存储介质不包括通信介质。

计算机设备800还可以包括一个或更多通信接口806,以用于诸如通过网络、直接连接等等与其他设备交换数据,正如前面所讨论的那样。这样的通信接口可以是以下各项中的一个或多个:任何类型的网络接口(例如,网络接口卡(NIC))、有线或无线(诸如IEEE802.11无线LAN(WLAN))无线接口、全球微波接入互操作(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、Bluetooth

在一些示例中,可以包括诸如监视器之类的显示设备808,以用于向用户显示信息和图像。其他I/O设备810可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。

虽然在附图和前面的描述中已经详细地说明和描述了本公开,但是这样的说明和描述应当被认为是说明性的和示意性的,而非限制性的;本公开不限于所公开的实施例。通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除未列出的其他元件或步骤,并且词语“一”或“一个”不排除多个。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表明这些措施的组合不能用来获益。

相关技术
  • 数据处理方法、装置、计算设备及存储介质
  • 数据处理方法、装置、计算设备、程序产品和存储介质
技术分类

06120112859456