数据处理方法以及装置与流程

文档序号:30619526发布日期:2022-07-02 02:05阅读:96来源:国知局
数据处理方法以及装置与流程

1.本说明书实施例涉及数据处理技术领域,特别涉及数据处理方法以及装置。


背景技术:

2.随着大数据时代的不断发展,人们越来越重视对数据进行处理分析的效率,进而选用大规模并行数据处理系统来分析处理数据库中的数据,通过并行计算的方式提升效率。在进行数据处理分析之前,要先从数据存储单元中读取数据,通常对大规模并行数据处理系统中的每个工作节点对应的设置有数据存储单元,通过网络通讯进行数据传输。
3.然而,在通过网络通讯进行数据传输的过程中,由于网络通信受限于网络协议,往往会受到数据传输的上限的限制,进而降低数据通信效率。


技术实现要素:

4.有鉴于此,本说明书实施例提供了数据处理方法。本说明书一个或者多个实施例同时涉及数据处理装置、数据处理系统,一种计算设备以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
5.根据本说明书实施例的第一方面,提供了一种数据处理的方法,包括:接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识;根据所述待读取数据标识生成并发送数据读取请求;接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;根据所述响应消息从所述共享内存中读取数据。
6.可选地,所述接收针对所述数据读取请求的响应消息,包括:在所述数据读取任务包括多个数据读取事件的情况下,接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述多个数据读取事件中的目标数据读取事件对应的目标数据写入共享内存完成。
7.可选地,在所述响应消息携带有所述待读取数据标识对应的数据在所述共享内存中的存储地址的情况下,所述根据所述响应消息从所述共享内存中读取数据,包括:根据所述响应消息,确定携带有所述待读取数据标识,且对应所述目标数据读取事件的目标数据;按照所述响应信息中的存储地址,从所述共享内存中读取所述目标数据。
8.可选地,所述接收针对所述数据读取请求的响应消息步骤之后,还包括:在所述响应消息中携带有遍历完成信号的情况下,根据所述遍历完成信号,将所述数据读取任务的状态切换为完成状态。
9.可选地,所述根据所述响应消息从所述共享内存中读取数据步骤之前,还包括:建立与所述共享内存的数据传输关系,并执行所述根据所述响应消息从所述共享内存中读取数据步骤。
10.根据本说明书实施例的第二方面,提供了一种数据处理的装置,包括:
第一接收子模块,被配置为接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识;发送子模块,被配置为根据所述待读取数据标识生成并发送数据读取请求;第二接收子模块,被配置为接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;读取子模块,被配置为根据所述响应消息从所述共享内存中读取数据。
11.根据本说明书实施例的第三方面,提供了一种数据处理的方法,包括:接收数据读取请求,其中,所述数据读取请求中携带有待读取数据标识;根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存;发送针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成。
12.可选地,在所述根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存步骤之前,还包括:注册共享内存标识符,所述共享内存标识符指向虚拟内存中的进程地址空间;将所述进程地址空间作为所述共享内存。
13.可选地,在所述接收数据读取请求步骤之后,还包括:将所述数据读取请求分解为多个数据读取事件,其中,每个数据读取事件中分别携带有待读取数据标识;其中,所述根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存,包括:确定所述多个数据读取事件中的目标数据读取事件;根据所述目标数据读取事件中携带的待读取数据标识,将所述目标数据读取事件对应的目标数据写入所述共享内存。
14.可选地,所述发送针对所述数据读取请求的响应消息步骤,还包括:在所述多个数据读取事件对应的数据全部写入所述共享内存的情况下,发送针对所述数据读取请求的响应消息,其中,所述响应消息携带有遍历完成信号。
15.可选地,所述将所述待读取数据标识对应的数据写入共享内存,包括:确定所述待读取数据标识对应的数据的存储位置关系;基于所述存储位置关系,将所述待读取数据标识对应的数据按列写入所述共享内存。
16.根据本说明书实施例的第四方面,提供了一种数据处理的装置,包括:接收子模块,被配置为接收数据读取请求,其中,所述数据读取请求中携带有待读取数据标识;写入子模块,被配置为根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存;发送子模块,被配置为发送针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成。
17.根据本说明书实施例的第五方面,提供了一种数据处理系统,包括:数据读取模块和数据存储模块;所述数据读取模块,用于接收携带有待读取数据标识的数据读取任务,根据所述待读取数据标识生成数据读取请求,并发送至所述数据存储模块;所述数据存储模块,用于接收携带有所述待读取数据标识的所述数据读取请求,响应于所述数据读取请求,将所述待读取数据标识对应的数据写入共享内存,并发送针对
所述数据读取请求的响应消息至所述数据读取模块,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;所述数据读取模块,还用于接收所述响应消息,根据所述响应消息从所述共享内存中读取数据。
18.可选地,所述数据读取模块和所述数据存储模块之间通过远程过程调用协议通信连接。
19.可选地,还包括:协调模块,所述协调模块用于获取客户端提交的数据读取请求,对所述数据读取请求进行分析,以确定分析结果;执行计划模块,所述执行计划模块用于根据所述分析结果,确定数据读取任务;调度任务模块,所述调度任务模块用于分配所述数据读取任务至所述数据读取模块,其中,所述数据读取任务携带有待读取数据标识。
20.根据本说明书实施例的第六方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述方法的步骤。
21.根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述方法的步骤。
22.本说明书一个实施例提供了数据处理的方法,接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识,待读取数据标识可以用于标识需要读取的数据,以便快速确定需要读取的数据,进而提高数据读取效率;之后,根据所述待读取数据标识生成并发送数据读取请求;接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;通过数据读取请求与响应消息之间的交互,使得数据读取模块能够快速从共享内存中读取数据,避免了在共享内存中寻找数据存储地址的过程,减少数据读取时间,进而提高数据读取效率;之后,根据所述响应消息从所述共享内存中读取数据,进而完成数据读取模块访问共享内存读取数据的过程,使得数据读取模块不需要通过网络通信与数据存储模块进行数据传输,避免了网络通信时网络协议的限制,进而提高通信效率。
附图说明
23.图1是本说明书一个实施例提供的一种数据处理方法的流程图;图2是本说明书一个实施例提供的一种数据处理装置的结构示意图;图3是本说明书另一个实施例提供的一种数据处理方法的流程图;图4是本说明书另一个实施例提供的一种数据处理装置的结构示意图;图5是本说明书一个实施例提供的一种数据处理系统的结构示意图;图6是本说明书一个实施例提供的一种数据读取+写入方法的流程图;图7是本说明书一个实施例提供的一种数据读取+写入方法的结构示意图;图8是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
24.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
25.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
26.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
27.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
28.olap,英文全称为on-line analytical processing,是一种联机分析处理技术,是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值,核心是支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
29.mpp,英文全称为massively parallel processing,是一种大规模并行处理系统,其用于将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。
30.kudu,可以作为mpp引擎的数据存储单元,用于存储数据。
31.rpc,英文全称为remote procedure call,是一种远程过程调用协议。
32.进程地址空间,进程地址空间由进程可寻址的虚拟内存组成,内核允许进程使用这种虚拟内存中的地址,其限定了一块内存空间,属于当前进程的一段活动范围。
33.sql,英文全称为structured query language,是一种结构化查询的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。
34.随着大数据时代的不断发展,人们越来越重视对数据进行处理分析的效率,进而选用大规模并行数据处理系统来分析处理数据库中的数据,通过并行计算的方式提升效率。在进行数据处理分析之前,要先从数据存储单元中读取数据,通常对大规模并行数据处理系统中的每个工作节点对应的设置有数据存储单元,通过网络通讯进行数据传输。
35.然而,在通过网络通讯进行数据传输的过程中,由于网络通信受限于网络协议,往往会受到数据传输的上限的限制,进而降低数据通信效率。
36.在实际应用中,对大数据进行处理分析时,通常采用分布式架构的设计思路,通过并行计算的方式来提高处理效率,同时具备了扩展能力。在一些存储引擎中,主要是存储静态数据,其适用于高吞吐量的离线大数据分析场景,但是,这些存储引擎存在数据无法进行随机读写以及数据变更的局限性。在另一些存储引擎中,主要是存储动态数据,其适用于海量数据的随机读写场景,但是,这些存储引擎存在批量读取性能较差、不适用于批量数据的离线分析的局限性。
37.基于上述存储引擎存在的局限性,kudu作为mpp引擎的数据存储单元,提供了简单的数据处理能力,例如对数据的插入、更新和删除,同时提供了简单的数据分析能力。可以理解的是,将kudu作为数据存储单元设置于mpp引擎的每个工作节点上,使mpp的工作节点基于网络通信从kudu数据存储单元中读取数据,能够避免上述局限性,进而提高读取性能,扩展数据分析功能。
38.然而,即使已经通过在每个mpp工作节点都设置kudu数据存储单元,以避免物理网卡的网络传输带宽限制,并且,网络协议采用域套接字替代网络套接字,减少了网络协议层,提升了通讯效率。
39.但是,mpp工作节点和kudu数据存储单元之间的网络通信受限于网络协议,仍然存在数据传输上限的限制。并且,mpp工作节点通过网络通信直接从kudu数据存储单元读取数据时,要先将数据在kudu数据存储单元序列化成直接流,再传输至mpp工作节点,在mpp工作节点将直接流反序列成数据对象,序列化和反序列化的过程占用了较大的cpu计算资源。
40.基于此,本说明书一个实施例提供了一种数据处理方法,可以理解的是,此种数据处理方法可以理解为一种数据读取方法,其通过数据读取请求和响应消息之间的交互,能够快速从共享内存中读取数据,以提高读取数据的效率,避免使用网络通信,进而能够避免序列化和反序列化的处理过程,防止占用较大的cpu计算资源。
41.进而,本说明书实施例以mpp工作节点读取数据的场景为例进行详细说明,可以理解的是,mpp工作节点用于读取数据,是一种数据处理引擎的数据读取模块,mpp工作节点发送数据读取请求,并接收针对该数据读取请求的响应消息,根据该响应消息从共享内存中读取数据,可以理解的是,本说明书实施例提供的数据处理方法的处理主体也可以为其他引擎。
42.在本说明书中,提供了一种数据处理方法,本说明书同时涉及一种数据处理装置,另一种数据处理方法,另一种数据处理装置,一种数据处理系统,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
43.参见图1,图1示出了根据本说明书一个实施例提供的一种数据处理方法的流程图,具体包括以下步骤。
44.步骤102,接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识。
45.具体的,数据读取任务可以是数据处理引擎下发的工作任务,也可以是客户端下发的工作任务,数据读取任务中包括需要读取的数据信息。待读取数据标识可以理解为需要读取的数据对应的标识信息,其可以用于标识需要读取的数据。
46.可以理解的是,本实施例提供的数据处理方法应用于数据读取模块,通过数据读取模块可以实现访问共享内存,并从共享内存中读取需要的数据,以提高数据读取的效率,避免网络通信中受限于网络协议。
47.基于此,在本说明书的实施例中,数据读取模块接收数据处理引擎下发的数据读取任务,其中,数据读取任务中携带有用于标识需要读取的数据的待读取数据标识,根据该待读取数据标识,可以确定数据读取任务中需要读取的数据。例如,待读取数据标识可以表示数据的存储位置,也可以表示数据的类别。
48.以mpp数据处理引擎为例,mpp数据处理引擎下发数据读取任务至mpp工作节点,mpp工作节点接收读取数据读取任务,其中,数据读取任务中携带有待读取数据标识a,根据
待读取数据标识a,可以确定数据读取任务中的需要读取的数据a。
49.综上,通过数据读取任务中携带的待读取数据标识,可以快速确定数据读取任务中需要读取的数据,为数据的写入和读取提供了有利条件。
50.步骤104,根据所述待读取数据标识生成并发送数据读取请求。
51.需要说明的是,在上述接收携带有待读取数据标识的数据读取任务的基础上,为了使数据存储模块能够知悉数据读取任务中需要读取的数据,可以根据待读取数据标识,生成与数据读取任务相对应的数据读取请求,并发送至数据存储模块,以便于数据存储模块将需要读取的数据写入共享内存,进而使数据读取模块后续能够从共享内存中读取该数据。
52.具体的,数据读取请求中携带有待读取数据标识,以便于接收端能够根据数据读取请求中携带的待读取数据标识确定需要读取的数据,接收端可以理解为数据存储模块,进一步地,接收端可以为本地的数据存储模块。
53.基于此,在本说明书的实施例中,根据数据读取任务中携带的待读取数据标识,生成数据读取请求,并发送该数据读取请求至接收端。
54.沿用上例,根据数据读取任务中携带的待读取数据标识a,生成数据读取请求,可以理解的是,数据读取请求中也可以包括待读取数据标识a,将该数据读取请求发送至kudu数据存储模块,以便于kudu数据存储模块可以根据待读取数据标识a确定需要读取的数据a。
55.综上,通过发送给接收端的数据读取请求,基于携带的待读取数据标识,能够使接收端快速确定数据读取请求中请求读取的数据,进而为数据的写入和读取提供有利条件。
56.步骤106,接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成。
57.需要说明的是,在上述根据待读取数据标识生成并发送数据读取请求的基础上,接收端接收到该数据读取请求,并将数据读取请求中请求读取的数据写入共享内存之后,向数据读取模块发送针对该数据读取请求的响应消息,为了使数据读取模块能够获得对数据读取请求的反馈,可以接收这个响应消息,以便于基于该响应消息,进行后续的读取操作。
58.具体的,响应消息是数据读取请求的接收端发送的针对该数据读取请求的信息,其用于指示数据读取请求中携带有的待读取数据标识对应的数据写入共享内存完成,可以理解的是,数据读取请求的接收端就是响应消息的发送端。
59.可以理解的是,共享内存的地址是固定的,其是基于共享内存标识符注册得到的地址固定且唯一的进程地址空间。在数据读取过程开始之前,可以在数据读取模块中配置共享内存的地址信息,不需要在每次的数据传输过程中对数据读取模块进行重复配置,提高数据传输效率。
60.此外,响应消息中还可以携带有数据在共享内存中的存储地址,数据读取模块按照存储地址从共享内存中读取数据,可以快速寻找到请求读取的数据在共享内存中的存储位置,减少数据读取时间,进而提高数据读取效率。存储地址可以理解为待读取数据标识对应的数据在共享内存中的存储位置,在该存储地址处可以读取待读取数据标识对应的数据,比如,在响应消息中携带的待读取数据标识对应的数据在共享内存中的存储地址为第1
列到第200列,在共享内存中的第1列到第200列可以读取待读取数据标识对应的数据。
61.基于此,在本说明书的实施例中,数据读取模块接收针对该数据读取请求的响应消息,响应消息用于指示待读取数据标识对应的数据,即数据读取请求中请求读取的数据写入共享内存完成,数据读取模块基于响应消息可以知悉,请求读取的数据已经写入共享内存完成,数据读取模块可以从共享内存中读取数据;并且,响应消息中还携带有待读取数据标识对应的数据在共享内存中的存储地址,数据读取模块可以在该存储地址处寻找到请求读取的数据并进行读取。
62.沿用上例,mpp工作节点接收到针对携带有待读取数据标识a的响应消息,响应消息指示待读取数据标识a对应的数据a写入共享内存完成;并且,响应消息携带有待读取数据标识a对应的数据a在共享内存中的存储地址第一行第一列,根据该响应消息,mpp工作节点可以在共享内存中的第一行第一列寻找到数据a并读取数据a。
63.综上,通过数据读取模块和数据存储模块之间的数据读取请求和响应消息的交互过程,使得数据读取模块将请求读取的数据发送至数据存储模块,再基于数据存储模块发送的响应消息完成从共享内存中读取数据的过程。可以理解的是,在数据读取模块发送数据读取请求之后,接收到数据读取请求的数据存储模块会将请求读取的数据写入共享内存,这样,数据读取模块才能基于响应消息在共享内存中读取数据。上述交互过程能够快速确定请求读取的数据,为实现数据读取模块从共享内存中读取数据提供了有利条件,进而提高了数据读取的效率,不受网络通信时网络协议的限制,进而不受数据传输的上限的限制。
64.步骤108,根据所述响应消息从所述共享内存中读取数据。
65.需要说明的是,在上述接收针对响应消息的基础上,根据响应消息中数据写入共享内存完成的指示,能够执行读取步骤。
66.具体的,响应消息可以用于指示数据读取请求中请求读取的数据已经写入共享内存完成。
67.基于此,根据该响应消息,数据读取模块接收到该响应消息,能够确定请求读取的数据已经写入共享内存完成,基于该响应消息,数据读取模块可以直接读取共享内存中的数据。
68.此外,在响应消息携带有待读取数据标识对应的数据在共享内存中的存储地址的情况下,数据读取模块可以在存储地址处寻找到请求读取的数据并进行读取。
69.沿用上例,mpp工作节点可以根据携带有存储地址为第一行第一列的响应消息,在共享内存中的第一行第一列读取数据a。
70.综上,基于响应消息中携带的存储地址,数据读取模块可以快速寻找到请求读取的数据在共享内存中的存储位置,进行快速定位,避免数据读取模块遍历共享内存之后才能找到请求读取的数据,减少数据读取的时间,提高数据读取的效率。
71.进一步地,在实际应用中,通常需要读取大量数据,以便于进行数据管理以及数据的处理分析。对于数据读取请求中请求读取的大量数据,若一次性写入共享内存并从共享内存读取,会增加读取和写入难度,降低读取和写入效率,基于此,可以通过对请求读取的大量数据分批次读取,来提高数据读取的效率和稳定性,具体实现方式如下。
72.在所述数据读取任务包括多个数据读取事件的情况下,接收针对所述数据读取请
求的响应消息,其中,所述响应消息用于指示所述多个数据读取事件中的目标数据读取事件对应的目标数据写入共享内存完成。
73.具体的,数据读取任务中可以包括需要读取大量数据的任务,将该任务分解为多个数据读取事件,即,将大量数据分批至每个数据读取事件中,每个数据读取事件中包括读取部分数据。在多个数据读取事件中,包括目标数据读取事件,目标数据读取事件可以理解为当前正在读取数据的事件。
74.基于此,在本说明书的实施例中,接收的针对数据读取请求的响应消息,响应消息用于指示目标数据读取事件中的目标数据已经写入共享内存完成,进而,以便于从共享内存中读取目标数据。
75.相应的,根据所述响应消息,确定携带有所述待读取数据标识,且对应所述目标数据读取事件的目标数据;按照所述响应信息中的存储地址,从所述共享内存中读取所述目标数据。
76.具体的,在所述响应消息中携带有待读取数据标识对应的数据在共享内存中的存储地址的情况下,按照响应消息中携带有的目标数据的存储地址,以及待读取数据标识,从共享内存中读取目标数据,以完成目标数据读取事件。
77.之后,可以再在多个数据读取事件中确定第二目标数据读取事件,接收的响应消息指示第二目标数据读取事件中的第二目标数据已经写入共享内存完成,按照上述步骤从共享内存中读取第二目标数据读取事件中的第二目标数据。相应的,重复上述步骤,直到数据读取请求中的全部数据读取事件中的数据都被读取。
78.可以理解的是,数据读取模块用于发送数据读取请求,数据读取请求中包括请求读取大量数据,接收端对数据读取请求中请求读取的数据进行分批,划分为多个目标数据读取事件,在每个目标数据读取事件中的目标数据写入共享内存后,发送对应该目标数据读取事件的响应消息,数据读取模块可以基于该响应消息,从共享内存中分批读取数据。
79.在本说明书的实施例中,对于包括读取大量数据的数据读取任务,数据读取模块也可以将该大量数据进行分批,划分为每个数据读取请求,分别发送数据读取请求,以实现分批读取数据。
80.举例说明,数据读取任务为读取9500条数据,基于该数据读取任务,数据读取模块发送读取9500条数据的数据读取请求,接收针对该数据读取请求的响应消息,该响应消息中携带有将第一目标数据读取事件对应的1000条数据写入共享内存完成的信号,并且携带有这1000条数据在共享内存中的存储位置,根据存储位置,数据读取模块从共享内存中读取这1000条数据。之后,数据读取模块继续接收到将第二目标数据读取事件对应的1000条数据写入共享内存完成的信号,重复上述步骤,从共享内存中读取数据,直至完成对9500条数据的读取。
81.综上,通过分别接收针对每一个目标数据读取事件的响应消息,基于该响应消息,读取该目标数据读取事件对应的目标数据,直至读取数据读取请求中请求读取的全部数据,即,对数据读取请求中请求读取的大量数据进行划分为多个目标数据读取事件,以实现对大量数据的分批读取,降低了读取数据的难度,提高了数据读取的效率。
82.进一步地,在数据读取任务中包括大量数据的情况下,对大量数据进行分批次读取,以提高数据读取的效率,然而,在最后一次读取的情况下,为了提高读取效率,减少数据
读取模块的读取错误情况和读取失败情况,可以通过响应消息中携带的遍历完成信号向数据读取模块指示,数据读取请求中请求读取的全部数据已经分批次写入共享内存完成,基于该遍历完成信号,数据读取模块将数据读取任务的状态切换为完成状态,即本次数据读取的过程完成之后,不再进行数据读取,具体实现方式如下。
83.在所述响应消息中携带有遍历完成信号的情况下,根据所述遍历完成信号,将所述数据读取任务的状态切换为完成状态。
84.具体的,遍历完成信号用于指示数据读取请求中请求读取的全部数据已经写入共享内存完成,此次数据读取过程为最后一次读取,在该次数据读取完成后,将数据读取任务的状态切换为完成状态,用于标识数据读取任务完成,不再进行数据读取。
85.基于此,在本发明的实施例中,当数据读取模块接收到的响应消息携带有数据读取请求中请求读取的数据已经全部写入共享内存完成的遍历完成信号的情况下,数据读取模块基于该遍历完成信号,最后一次从共享内存中读取数据,之后,将数据读取任务的状态切换为完成状态,表示此次数据读取任务完成。
86.沿用上例,在最后一次目标数据读取事件中,仅有500条目标数据被写入共享内存,此时响应消息中携带有指示9500条数据已经全部写入共享内存的遍历完成信号,基于该遍历完成信号,数据读取模块最后一次从共享内存中读取这500条数据,之后将数据读取任务的状态切换为完成状态,表示此次读取9500条数据的数据读取任务完成。
87.综上,通过在响应消息携带有遍历完成信号时,将数据读取任务的状态切换为完成状态,以结束该数据读取任务,防止数据读取模块出现读取失败或者读取错误的情况,减少读取错误率,提高读取效率。
88.进一步地,为了使数据读取模块能够直接从共享内存中读取数据,需要与共享内存建立数据传输关系,为读取数据提供条件,具体实现方式如下。
89.建立与所述共享内存的数据传输关系,并执行所述根据所述响应消息从所述共享内存中读取数据步骤。
90.具体的,数据传输关系可以理解为数据读取模块与共享内存之间的数据通信。
91.基于此,在本说明书的实施例中,将数据读取模块连接至共享内存,具体而言,可以将数据读取模块连接于共享内存标识符,基于该共享内存标识符,使得数据读取模块能够访问共享内存,进而建立与共享内存的数据传输关系,之后执行根据响应消息从共享内存中读取数据步骤。
92.举例说明,共享内存标识符为zzx,数据读取模块基于该共享内存标识符zzx,连接至共享内存zzx,进而从共享内存zzx中读取数据。
93.可以理解的是,共享内存标识符可以理解为注册得到的唯一标识符,其对应唯一固定的共享内存空间。共享内存标识符可以是在数据读取模块和数据存储模块的通信过程中,数据存储模块传输至数据读取模块的,也可以是用户得到共享内存标识符后,预先设置于数据读取模块中的。
94.综上,通过建立与共享内存的数据传输关系,为数据读取模块访问共享内存并从共享内存中读取数据提供条件。
95.综上所述,本说明书一个实施例提供了数据处理的方法,接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识,待读取数据标识可以用于标识需要读取
的数据,以便快速确定需要读取的数据,进而提高数据读取效率;之后,根据所述待读取数据标识生成并发送数据读取请求;接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;通过数据读取请求与响应消息之间的交互,使得数据读取模块能够快速从共享内存中读取数据,减少数据读取时间,进而提高数据读取效率;之后,根据所述响应消息从所述共享内存中读取数据,进而完成数据读取模块访问共享内存读取数据的过程,使得数据读取模块不需要通过网络通信与数据存储模块进行数据传输,避免了网络通信时网络协议的限制,进而提高通信效率。
96.与上述数据处理方法实施例相对应,本说明书还提供了数据处理装置实施例,图2示出了本说明书一实施例提供的一种数据处理装置的结构示意图。如图2所示,该装置包括:第一接收子模块202,被配置为接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识;发送子模块204,被配置为根据所述待读取数据标识生成并发送数据读取请求;第二接收子模块206,被配置为接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;读取子模块208,被配置为根据所述响应消息从所述共享内存中读取数据。
97.一个可选的实施例中,所述第二接收子模块206进一步被配置为:在所述数据读取任务包括多个数据读取事件的情况下,接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述多个数据读取事件中的目标数据读取事件对应的目标数据写入共享内存完成。
98.一个可选的实施例中,所述读取子模块208进一步被配置为:在所述响应消息中携带有所述待读取数据标识对应的数据在所述共享内存中的存储地址的情况下,根据所述响应消息,确定携带有所述待读取数据标识,且对应所述目标数据读取事件的目标数据;按照所述响应信息中的存储地址,从所述共享内存中读取所述目标数据。
99.一个可选的实施例中,所述数据处理装置还包括切换子模块,所述切换子模块被配置为:在所述响应消息中携带有遍历完成信号的情况下,根据所述遍历完成信号,将所述数据读取任务的状态切换为完成状态。
100.一个可选的实施例中,所述数据处理装置还包括连接子模块,所述连接子模块被配置为:建立与所述共享内存的数据传输关系,并执行所述根据所述响应消息从所述共享内存中读取数据步骤。
101.综上所述,本说明书一个实施例提供的数据处理装置,第一接收子模块202被配置为接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识,待读取数据标识可以用于标识需要读取的数据,以便快速确定需要读取的数据,进而提高数据读取效率;发送子模块204被配置为根据所述待读取数据标识生成并发送数据读取请求;第二接收子模块206被配置为接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;通过数据读取请求与响应消息之间的交互使得数据读取模块能够快速从共享内存中读取数据,减少数据读取时间,进而提高数据读取效率;读取子模块208被配置为根据所述响应消息从所述共享内存中读取数据,进而完成数据读取模块访问共享内存读取数据的过程,使得数据读取模块不需要通过网络通信与数据存储模块进行数据传输,避免了网络通信时网络协议的限制,进而提高通信效率。
102.上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理
装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
103.与上述用于数据读取模块的数据处理方法相对应,本说明书的实施例还提供了一种数据处理方法,所述数据处理方法用于数据存储模块,通过所述数据存储模块可以实现将数据读取请求中请求读取的数据写入共享内存,并发送指示写入完成的响应消息至数据读取模块,以使数据读取模块快速及时从共享内存中读取数据,图3示出了根据本说明书的一个实施例提供的一种数据处理方法的流程图,具体包括以下步骤。
104.步骤302,接收数据读取请求,其中,所述数据读取请求中携带有待读取数据标识。
105.具体的,数据读取请求的发送端可以是数据读取模块,根据待读取数据标识,可以确定数据读取请求中请求读取的数据。
106.基于此,在本说明书的实施例中,所述数据处理方法的执行主体可以为数据存储模块,例如,数据存储模块可以是本地的kudu数据存储模块。数据存储模块接收数据读取请求,并且能够根据待读取数据标识,确定请求读取的数据。
107.举例说明,kudu数据存储模块接收数据读取请求,数据读取请求中携带有待读取数据标识a,根据该待读取数据标识a,可以确定数据读取请求中请求读取的数据为数据a。
108.综上,通过数据读取请求中携带的待读取数据标识,可以快速确定数据读取请求中请求读取的数据,提高数据写入效率。
109.进一步地,为了使数据存储模块能够将数据写入一个空间、数据读取模块能够从这个空间中读取数据,需要创建一个共享的空间,即共享内存,实现数据存储模块和数据读取模块的访问,具体实现方式如下。
110.注册共享内存标识符,所述共享内存标识符指向虚拟内存中的进程地址空间;将所述进程地址空间作为所述共享内存。
111.具体的,共享内存标识符用于表示唯一固定的进程地址空间,该进程地址空间可以作为共享内存。
112.基于此,在将待读取数据标识对应的数据写入共享内存之前,注册共享内存标识符,将所述共享内存标识符指向的进程地址空间作为共享内存,以存储数据。
113.举例说明,注册得到的共享内存标识符为zzx,该共享内存标识符zzx指向的进程地址空间zzx为共享内存。
114.综上,通过注册共享内存标识符创建共享内存,使得数据存储模块和数据读取模块都能直接访问共享内存,避免进程间的序列化与反序列化操作,可以节省大量的计算资源。
115.步骤304,根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存。
116.需要说明的是,在上述接收携带有待读取数据标识的数据读取请求的基础上,为了能够获得数据读取请求中请求读取的数据,可以根据待读取数据标识,确定待读取数据标识对应的数据,并将待读取数据标识对应的数据写入共享内存,以便于数据读取模块的读取操作。
117.基于此,数据存储模块根据待读取数据标识,确定数据读取请求中请求读取的数据,也就是待读取数据标识对应的数据,并将该数据从数据存储模块中调用,写入共享内
存。
118.沿用上例,kudu数据存储模块根据待读取数据标识a,确定请求读取的数据为数据a,将数据a从kudu数据存储模块中调用,并传输至共享内存中。
119.综上,数据存储模块根据待读取数据标识确定其对应的数据,并从自身存储的数据中找到该数据并将该数据传输至共享内存中,以完成数据的写入,为数据读取模块从共享内存中读取数据提供有利条件。
120.步骤306,发送针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成。
121.需要说明的是,在上述将待读取数据标识对应的数据写入共享内存之后,为了使数据读取模块快速确定待读取数据标识对应的数据已经写入共享内存可以向数据读取模块发送针对数据读取请求的响应消息,以指示数据读取模块待读取数据标识对应的数据已经写入共享内存完成,以便于数据读取模块的读取操作。
122.此外,响应消息中还可以携带待读取数据标识对应的数据在共享内存中的存储地址,以指示数据读取模块数据在共享内存中的存储位置,便于数据读取模块对数据进行快速定位,进而提高读取效率。
123.基于此,在将待读取数据标识对应的数据写入共享内存之后,生成响应消息,将响应消息发送至数据读取模块,以指示数据读取模块请求的数据写入共享内存完成,并且,响应消息中携带有待读取数据标识对应的数据在共享内存中的存储地址,数据读取模块可以在存储地址处读取待读取数据标识对应的数据。
124.沿用上例,kudu数据存储模块向数据读取模块发送响应消息,响应消息用于指示数据a已经写入共享内存,并且,响应消息还携带有数据a在共享内存中的存储地址第一行第一列。
125.综上,数据读取模块可以在共享内存中的第一行第一列读取数据a,无需在共享内存中进行数据的寻址,节省数据读取时间,提高数据读取效率。
126.进一步地,在实际应用中,通常需要读取大量数据,以便于进行数据管理以及数据的处理分析。对于数据读取请求中请求读取的大量数据,若一次性写入共享内存并从共享内存读取,会增加读取和写入难度,降低读取和写入效率,基于此,可以通过对请求读取的大量数据分批次写入共享内存,来提高数据读取和写入的效率和稳定性,具体实现方式如下。
127.将所述数据读取请求分解为多个数据读取事件,其中,每个数据读取事件中分别携带有待读取数据标识;其中,所述根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存,包括:确定所述多个数据读取事件中的目标数据读取事件;根据所述目标数据读取事件中携带的待读取数据标识,将所述目标数据读取事件对应的目标数据写入所述共享内存。
128.具体的,数据读取请求中可以包括请求读取大量数据,此时,可以将数据读取请求中请求读取的大量数据进行分组,划分为多个数据读取事件,每个数据读取事件中包括请求读取的一部分数据,以及这部分数据对应的待读取数据标识。
129.基于此,确定多个数据读取事件中的目标数据读取事件,目标数据读取事件可以理解为当前正在执行的事件。按照目标数据读取事件携带的待读取数据标识,将待读取数
据标识对应的目标数据写入共享内存,此时,目标数据读取事件中的目标数据写入完成。之后,确定多个数据读取事件中的第二目标数据读取事件,按照上述步骤,将第二目标数据读取事件中的第二目标数据写入共享内存。重复上述步骤,直至多个数据读取事件中请求读取的数据全部被写入共享内存。
130.可以理解的是,对第一目标数据读取事件中的第一目标数据写入共享内存完成后,发送对应于第一目标数据读取事件的响应消息,以指示第一目标数据写入共享内存完成,并且指示第一目标数据的存储地址,以使数据读取模块能够及时读取写入共享内存中的第一目标数据。之后,再对第二目标数据读取事件中的第二目标数据进行写入操作,相应的,写入完成之后,发送对应于第二目标数据读取事件的响应消息。
131.需要说明的是,数据读取模块读取共享内存中的第一目标数据之后,数据存储模块向共享内存写入第二目标数据时,第二目标数据对第一目标数据进行覆盖,以保证共享内存中存在足够的空间容纳数据,并且避免了数据读取模块的寻址过程,提高数据读取效率。
132.举例说明,数据读取请求为请求读取9500条数据,基于该数据读取请求,kudu数据存储模块将该数据读取请求分成10个数据读取事件,其中的第一目标数据读取事件包括1000条第一目标数据,根据这1000条第一目标数据的待读取数据标识,将第一目标数据写入共享内存,并发送对应于第一目标数据读取事件的响应消息,指示mpp工作节点1000条第一目标数据写入共享内存完成,并携带有1000条第一目标数据的存储地址为第1列至第1000列。之后,对第二目标数据读取事件、第三目标数据读取事件至第十目标数据读取事件进行上述操作,进而完成对数据读取请求中9500条数据的写入。
133.综上,通过将数据读取请求中请求读取的大量数据划分为多个数据读取事件,分别将每个数据读取事件中的数据写入共享内存,降低了写入数据的难度,保证了共享内存中的空间充足,进而提高了数据读取的效率。
134.进一步地,在对最后一次目标数据读取事件中的数据写入共享内存之后,为了向数据读取模块指示请求读取的数据已经全部完成写入,向数据读取模块发送遍历完成信号,具体实现方式如下。
135.在所述多个数据读取事件对应的数据全部写入所述共享内存的情况下,发送针对所述数据读取请求的响应消息,其中,所述响应消息携带有遍历完成信号。
136.具体的,遍历完成信号用于指示数据读取请求中请求读取的全部数据已经写入共享内存完成。
137.基于此,在数据读取请求中请求读取的数据已经全部写入共享内存的情况下,向数据读取模块发送的响应消息中携带有遍历完成信号,以指示数据读取模块请求读取的数据已经全部写入共享内存,已经完成该数据读取请求。
138.沿用上例,在最后一次目标数据读取事件中,kudu数据存储模块需要写入500条目标数据,此时响应消息中携带有指示9500条数据已经全部写入共享内存的遍历完成信号,基于该遍历完成信号,指示数据读取模块最后一次从共享内存中读取这500条数据,之后完成这次数据读取请求。
139.综上,通过向数据读取模块发送指示请求的数据已经全部写入完成的遍历完成信号,以结束数据读取模块的下一步读取操作,防止数据读取模块出现读取失败或者读取错
误的情况,减少读取错误率,提高读取效率。
140.进一步地,为了提高对大数据进行处理分析的效率,在将待读取数据标识对应的数据写入共享内存时,可以采用列式的方式写入,具体实现方式如下。
141.确定所述待读取数据标识对应的数据的存储位置关系;基于所述存储位置关系,将所述待读取数据标识对应的数据按列写入所述共享内存。
142.具体的,数据的存储位置关系可以理解为数据在数据存储模块中的存储位置,例如,数据被存储在第几行第几列。
143.基于此,在数据存储模块中存储的数据中寻找到待读取数据标识对应的数据的存储位置,并按照存储位置将待读取数据标识对应的数据按列写入共享内存。
144.举例说明,待读取数据标识对应的数据1-20在kudu数据存储模块中的存储位置为第1行第1列到第5行第4列,此时,按照从第1行第1列到第5行第1列、从第1行第2列到第5行第2列
……
从第1行第5列到第5行第5列的顺序写入共享内存。
145.综上,通过将数据按列写入共享内存,可以在不损失数据按行遍历的访问效率的基础上,适应通过硬件指令加速数据分析,并且,使得共享内存中的数据便于索引和压缩,进而提高数据读取效率。
146.综上所述,本说明书一个是实施例提供了数据处理的方法,接收数据读取请求,其中,所述数据读取请求中携带有待读取数据标识,待读取数据标识可以用于标识需要读取的数据,以便快速确定需要读取的数据,进而提高将数据写入共享内存的效率;之后,根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存,通过将数据读取请求中请求读取的数据写入共享内存,便于数据读取模块直接访问共享内存,以便从共享内存中获取数据,避免进程间的序列化与反序列化操作,可以节省大量的计算资源;之后,发送针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成,通过发送响应消息指示数据读取模块,使得数据读取模块能够及时快速访问共享内存并读取数据,提高数据读取效率。
147.与上述数据处理方法实施例相对应,本说明书还提供了数据处理装置实施例,图4示出了本说明书一实施例提供的一种数据处理装置的结构示意图。如图4所示,该装置包括:接收子模块402,被配置为接收数据读取请求,其中,所述数据读取请求中携带有待读取数据标识;写入子模块404,被配置为根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存;发送子模块406,被配置为发送针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成。
148.一个可选的实施例中,所述写入子模块404进一步被配置为:将所述数据读取请求分解为多个数据读取事件,其中,每个数据读取事件中分别携带有待读取数据标识;其中,所述根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存,包括:确定所述多个数据读取事件中的目标数据读取事件;根据所述目标数据读取事件中携带的待读取数据标识,将所述目标数据读取事件对应的目标数据写入所述共享内存。
149.一个可选的实施例中,所述发送子模块406进一步被配置为:在所述多个数据读取事件对应的数据全部写入所述共享内存的情况下,发送针对所述数据读取请求的响应消息,其中,所述响应消息携带有遍历完成信号。
150.一个可选的实施例中,所述写入子模块404进一步被配置为:确定所述待读取数据
标识对应的数据的存储位置关系;基于所述存储位置关系,将所述待读取数据标识对应的数据按列写入所述共享内存。
151.一个可选的实施例中,所述数据读取装置还包括创建子模块406,所述创建子模块406被配置为:注册共享内存标识符,所述共享内存标识符指向虚拟内存中的进程地址空间;将所述进程地址空间作为所述共享内存。
152.综上所述,本说明书一个实施例提供的数据处理装置,接收子模块402,被配置为接收数据读取请求,其中,所述数据读取请求中携带有待读取数据标识,待读取数据标识可以用于标识需要读取的数据,以便快速确定需要读取的数据,进而提高将数据写入共享内存的效率;写入子模块404,被配置为根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存,通过将数据读取请求中请求读取的数据写入共享内存,便于数据读取模块直接访问共享内存,以便从共享内存中获取数据,避免进程间的序列化与反序列化操作,可以节省大量的计算资源;发送子模块406,被配置为发送针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成,通过发送响应消息指示数据读取模块,使得数据读取模块能够及时快速访问共享内存读取数据,提高数据读取效率。
153.上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
154.与上述数据读取方法和数据写入方法相对应,本说明书的实施例还提供了一种数据处理系统,图5示出了根据本说明书的一个实施例提供的一种数据处理系统500的结构示意图,参见图5,所述数据处理系统500包括:数据读取模块502和数据存储模块504;所述数据读取模块502,用于接收携带有待读取数据标识的数据读取任务,根据所述待读取数据标识生成数据读取请求,并发送至所述数据存储模块;所述数据存储模块504,用于接收携带有所述待读取数据标识的所述数据读取请求,响应于所述数据读取请求,将所述待读取数据标识对应的数据写入共享内存,并发送针对所述数据读取请求的响应消息至所述数据读取模块,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成;所述数据读取模块502,还用于接收所述响应消息,根据所述响应消息从所述共享内存中读取数据。
155.可以理解的是,数据读取模块502可以用于执行上述数据读取方法,数据存储模块504可以用于执行上述数据写入方法。
156.一个可选的实施例中,所述数据读取模块502进一步被配置为:在所述数据读取任务包括多个数据读取事件的情况下,接收针对所述数据读取请求的响应消息,其中,所述响应消息用于指示所述多个数据读取事件中的目标数据读取事件对应的目标数据写入共享内存完成。
157.一个可选的实施例中,所述数据读取模块502进一步被配置为:根据所述响应消息,确定携带有所述待读取数据标识,且对应所述目标数据读取事件的目标数据;按照所述响应信息中的存储地址,从所述共享内存中读取所述目标数据。
158.一个可选的实施例中,所述数据读取模块502进一步被配置为:在所述响应消息中携带有遍历完成信号的情况下,根据所述遍历完成信号,将所述数据读取任务的状态切换
为完成状态。
159.一个可选的实施例中,所述数据读取模块502进一步被配置为:建立与所述共享内存的数据传输关系,并执行所述根据所述响应消息从所述共享内存中读取数据步骤。
160.一个可选的实施例中,所述数据存储模块504进一步被配置为:注册共享内存标识符,所述共享内存标识符指向虚拟内存中的进程地址空间;将所述进程地址空间作为所述共享内存。
161.一个可选的实施例中,所述数据存储模块504进一步被配置为:将所述数据读取请求分解为多个数据读取事件,其中,每个数据读取事件中分别携带有待读取数据标识;其中,所述根据所述待读取数据标识,将所述待读取数据标识对应的数据写入共享内存,包括:确定所述多个数据读取事件中的目标数据读取事件;根据所述目标数据读取事件中携带的待读取数据标识,将所述目标数据读取事件对应的目标数据写入所述共享内存。
162.一个可选的实施例中,所述数据存储模块504进一步被配置为:在所述多个数据读取事件对应的数据全部写入所述共享内存的情况下,发送针对所述数据读取请求的响应消息,其中,所述响应消息携带有遍历完成信号。
163.一个可选的实施例中,所述数据存储模块504进一步被配置为:确定所述待读取数据标识对应的数据的存储位置关系;基于所述存储位置关系,将所述待读取数据标识对应的数据按列写入所述共享内存。
164.进一步地,一个可选的实施例中,由于数据读取模块会向数据存储模块发送数据读取请求,数据存储模块会向数据读取模块发响应消息,即,数据读取模块和数据存储模块之间需要建立通信关系,为了提高数据传输的效率,数据读取模块和数据存储模块之间通过远程过程调用协议进行通信连接。
165.举例而言,mpp工作节点与kudu数据存储模块之间通过远程过程调用协议进行通信连接,由于mpp工作节点与kudu数据存储模块之间的通讯是一种进程之间的通信,选用远程过程调用协议能够在维持kudu的技术架构的基础上进一步提高数据传输的效率。
166.进一步地,在实际应用中,客户端通常会向数据处理系统下发sql请求,数据处理系统需要对sql请求进行解析,以确定数据读取任务,本说明书的实施例以mpp数据处理系统为例,因此,数据处理系统还包括:协调模块,所述协调模块用于获取客户端提交的数据读取请求,对所述数据读取请求进行分析,以确定分析结果。
167.具体的,客户端提交的数据读取请求可以理解为sql请求,协调模块可以用于对sql请求进行语义解析。
168.执行计划模块,所述执行计划模块用于根据所述分析结果,确定数据读取任务。
169.具体的,执行计划模块根据语义解析,得到sql条件谓词、分区信息等,组装kudu数据请求,请求kudu主节点,以获取遍历节点信息。
170.调度任务模块,所述调度任务模块用于分配所述数据读取任务至所述数据读取模块,其中,所述数据读取任务携带有待读取数据标识。
171.可以理解的是,数据处理系统中可以包括多个数据读取模块,调度任务模块可以根据遍历节点信息,将数据读取任务分配至相应的数据读取模块进行。
172.具体的,调度任务模块根据遍历节点信息中包含的每个数据分区所在的节点信
息,将数据读取任务分配至相应的mpp工作节点执行。
173.综上所述,本说明书一个实施例提供的数据处理系统,数据读取模块,用于接收携带有待读取数据标识的数据读取任务,根据所述待读取数据标识生成数据读取请求,并发送至所述数据存储模块,通过数据读取模块与数据存储模块之间的数据读取请求的交互,使得数据存储模块能够确定数据读取模块请求读取的数据,以便于数据存储模块在自身数据库中寻找请求读取的数据,为将请求读取的数据写入共享内存提供条件。
174.所述数据存储模块,用于接收携带有所述待读取数据标识的所述数据读取请求,响应于所述数据读取请求,将所述待读取数据标识对应的数据写入共享内存,并发送针对所述数据读取请求的响应消息至所述数据读取模块,其中,所述响应消息用于指示所述待读取数据标识对应的数据写入共享内存完成,所述响应消息中携带有所述待读取数据标识对应的数据在所述共享内存中的存储地址。通过数据读取模块与数据存储模块之间的响应消息的交互,是的数据读取模块能够及时知悉数据读取请求中请求读取的数据已经写入共享内存完成,进而能够快速读取数据,提高数据读取效率。
175.并且,在数据读取模块和数据存储模块之间设置的共享内存,以实现数据的写入和读取,避免数据读取模块和数据存储模块之间通过网络通信,使其不受网络协议的限制,进而提高通信效率,减少cpu的资源计算占用。
176.所述数据读取模块,还用于接收所述响应消息,根据所述响应消息从所述共享内存中读取数据,以完成数据读取任务,实现数据的传输。
177.下述结合图6和图7,以本技术提供的数据读取方法和数据写入方法对mpp工作节点与kudu数据存储节点之间的数据传输为例,对所述数据读取方法和数据写入方法进行进一步说明,其中,图6是本说明书一个实施例提供的一种数据读取+写入方法的流程图,图7是本说明书一个实施例提供的一种数据读取+写入方法的结构示意图,具体步骤如下。
178.步骤602,接收数据读取任务,其中,所述数据读取任务中携带有待读取数据标识。
179.具体的,mpp工作节点接收mpp数据处理系统下发的数据读取任务,数据读取任务中携带有的待读取数据标识可以用于确定数据读取任务中需要读取的数据。
180.步骤604,根据所述待读取数据标识生成并向kudu数据存储节点发送数据读取请求。
181.具体的,如图7所示,mpp工作节点根据待读取数据标识生成数据读取请求,可以理解的是,数据读取请求中携带有待读取数据标识,通过远程过程调用协议向kudu数据存储节点发送该数据读取请求。
182.步骤606,接收数据读取请求。
183.具体的,kudu数据存储节点接收数据读取请求,根据数据读取请求携带的待读取数据标识,确定请求读取的数据。
184.步骤608,根据所述数据读取请求,向共享内存写入待读取数据标识对应的数据。
185.具体的,kudu数据存储节点根据待读取数据标识确定了请求读取的数据,并将请求读取的数据写入共享内存。参见图7,kudu数据存储节点接收到数据读取请求之后,按列向共享内存写入数据,首先按列写入第一类型的数据“1001、1002、1003、1004”,第一类型的数据全部写入完成后写入第二类型的数据“a、b、c、d”,其中a表示a地区,b表示b地区,c表示c地区,d表示d地区,将第二类型的数据写入共享内存完成后,写入第三类型的数据“100.0、
101.0、120.0、103.0”。其中,第一类型的数据可以用于表示每个地区的标号,第三类型的数据可以用于表示每个地区的评估值。
186.步骤610,发送针对所述数据读取请求的响应消息至mpp工作节点。
187.具体的,kudu数据存储节点将请求读取的数据写入共享内存之后,发送针对数据读取请求的响应消息至mpp工作节点,响应消息用于指示mpp工作节点请求读取的数据已经写入共享内存完成,基于响应消息,mpp工作节点可以开始从共享内存中读取数据,并且,响应消息还携带有请求读取的数据在共享内存中的存储地址,mpp工作节点可以直接在共享内存中的存储地址处读取数据。
188.步骤612,接收所述响应消息,根据所述响应消息,从共享内存中读取数据。
189.具体的,mpp接收响应消息,基于响应消息,mpp工作节点可以开始从共享内存中读取数据,并且, mpp工作节点可以直接在共享内存中的存储地址处读取数据。
190.步骤614,在所述响应消息携带有遍历完成信号的情况下,将所述数据读取任务的状态切换至完成状态。
191.具体的,遍历完成信号用于指示数据读取请求中请求读取的全部数据写入共享内存完成,mpp接收到携带有遍历完成信号的响应消息时,从共享内存中读取数据,之后,将数据读取任务的状态切换至完成状态,表示数据读取任务中的全部数据已经读取完成。
192.可以理解的是,在响应消息没有携带遍历完成信号的情况下,表示kudu数据存储节点没有一次性将请求读取的数据全部写入共享内存,kudu数据存储节点会多次写入直至数据读取请求中请求读取的全部数据写入共享内存完成,此时重复上述步骤608至步骤612,直至kudu数据存储节点将数据读取请求中请求读取的全部数据写入共享内存完成,并向mpp工作节点发送携带有遍历完成信号的响应消息。
193.综上所述,通过上述数据读取方法和数据写入方法,能够通过共享内存实现对数据的读取和写入,作为进程间的数据通信,避免受到网络协议的限制,以提高数据传输的效率。图8示出了根据本说明书一个实施例提供的一种计算设备800的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。
194.计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
195.在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
196.计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移
动设备,或者诸如台式计算机或pc的静止计算设备。计算设备800还可以是移动式或静止式的服务器。
197.其中,处理器820用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述方法的步骤。
198.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述方法的技术方案的描述。
199.本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述方法的步骤。
200.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述方法的技术方案的描述。
201.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
202.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
203.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
204.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
205.以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1