CN109426571A - 函数调用和数据访问的方法、系统、存储介质、处理器和装置 - Google Patents
函数调用和数据访问的方法、系统、存储介质、处理器和装置 Download PDFInfo
- Publication number
- CN109426571A CN109426571A CN201710755550.8A CN201710755550A CN109426571A CN 109426571 A CN109426571 A CN 109426571A CN 201710755550 A CN201710755550 A CN 201710755550A CN 109426571 A CN109426571 A CN 109426571A
- Authority
- CN
- China
- Prior art keywords
- data
- function
- remote platform
- access
- processor
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种函数调用和数据访问的方法、系统、存储介质、处理器和装置。其中,该方法包括:确定第一进程需要调用在远程平台运行的函数;以及通过第二进程在远程平台运行函数,并将函数的运行结果提供给第一进程。本发明解决了如何在不同计算平台、不同计算系统或者不同计算引擎之间共用UDF以及数据的技术问题,例如通过与远程平台不同的计算系统以及计算逻辑的程序使用远程平台的函数以及数据。
Description
技术领域
本发明涉及远程的函数调用以及数据访问的技术,具体而言,涉及在不同的计算系统或计算逻辑之间远程的函数调用和数据访问的方法、系统、存储介质、处理器和装置。
背景技术
近些年来,数据处理平台得到了广泛的发展和使用。例如,作为海量数据处理平台的一个具体实例,大数据计算平台(MaxCompute)提供针对TB/PB级数据的实时性要求不高的分布式处理能力,并应用于数据分析、挖掘、商业智能等领域。因此,为了能够充分发挥数据处理平台的作用,希望能够实现不同计算平台、不同计算系统或者不同计算引擎之间的函数与数据的共用,从而即便是与数据处理平台不同的计算系统或计算引擎的进程也能够利用数据处理平台上的资源,例如调用函数或访问数据。
例如,作为数据处理平台的一个实例,MaxCompute已经拥有广泛的用户,并且数据和资源的积累也非常多。就拿用户自定义函数(UDF)来说,目前MaxCompute中有100万JavaUDF和10万python UDF,这些UDF里面蕴含了大量的计算逻辑,也是用户处理作业任务必不可少的工具。从而,UDF成为MaxCompute中的一种很重要的资源。但是,MaxCompute上的UDF只能在MaxCompute平台上运行,不能够为与MaxCompute不同的计算系统或计算引擎的进程直接使用。因此当用户在本地机上运行与MaxCompute不同的计算系统或计算引擎的程序时,迫切希望本地机上的程序能够实现对MaxCompute平台上的UDF的使用。
例如,作为与MaxCompute不同的计算引擎的一个实例,Seahawks作为一种基于开源的对象-关系型数据库(Postgres)的MPP(大规模并行处理系统)计算引擎,有着众多的优点、性能、生态兼容以及SQL高级特性等等。因此很多Seahawks用户有强烈的需求,需要实现Seahawks和MaxCompute的相互访问,使得用户可以通过Seahawks获取MaxCompute的UDF的权限,并应用其计算逻辑到Seahawks内部表和外部表中。此外,很多MaxCompute用户也希望借助Seahawks的特性,丰富自己的业务,以及能低延迟的处理掉在MaxCompute上的小任务等等。UDF作为一个必不可少的计算逻辑,需要Seahawks的特殊支持,这样MaxCompute用户可以在Seahawks系统中的使用在MaxCompute中的UDF资源并获得等同的处理逻辑,从而完成作业的处理。
以上问题不仅存在于MaxCompute平台的UDF,并且其他数据处理系统,如Hive、Pig等的UDF,也存在这样的问题。
目前根据现有技术,解决该问题的通常做法是用户申请MaxCompute的UDF资源,并下载阅读其处理逻辑。然后用户再根据Seahawks中的语法,重新实现一个相同逻辑的UDF并应用到任务中,相当于手动迁移UDF。
但是如果采取以上现有技术来实现,会存在以下问题:
1.UDF资源数量非常多,前面提到有100万java UDF,10万python UDF,迁移本身工作量巨大,耗时耗力。
2.UDF的开发者和使用者往往不是用一个人,需要迁移的时候,还需要拿到UDF实现源码,并且熟悉里面的处理逻辑,然后在Seahawks中实现,实现计算逻辑本身风险较大,容易导致差异影响作业正确性。
3.系统之间的差异,如果迁移MaxCompute中的UDF到Seahawks中,需要维护两边的逻辑,一旦需要更改的时候,没有同步,可能会影响作业的正确性,风险比较大。
针对上述的问题,目前尚未提出有效的解决方案,使得实现在不同计算平台、不同计算系统或者不同计算引擎之间能够共用UDF或者共享数据,例如使得与数据处理平台不同的计算系统或计算引擎的程序能够使用数据处理平台上的程序以及数据。
发明内容
本发明实施例提供了一种函数调用和数据访问的方法、系统、存储介质、处理器和装置,以至少解决如何实现不同计算平台、不同计算系统或者不同计算引擎之间的函数与数据的共用的技术问题,例如通过与诸如MaxCompute的数据处理平台不同的计算系统或计算引擎的程序(例如基于Seahawks等计算引擎的进程)调用MaxCompute等数据处理平台上的UDF以及访问MaxCompute等数据处理平台上的数据。从而,实现在不同的计算系统以及计算引擎之间函数以及数据的共用。
根据本发明实施例的一个方面,提供了一种函数调用方法。该函数调用方法包括:确定第一进程需要调用函数,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
根据本发明实施例的另一方面,还提供了一种数据访问方法。该数据访问方法包括:确定第一进程需要访问存储于远程平台的数据;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
根据本发明实施例的另一方面,还提供了一种函数调用方法。该函数调用方法包括:确定第一进程需要调用函数,函数用于在远程平台运行;通过第一进程将调用函数的请求发送至第二进程;以及通过第一进程从第二进程接收函数的运行结果。
根据本发明实施例的另一方面,还提供了一种数据访问方法。该数据访问方法包括:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送给第二进程;以及通过第一进程从第二进程接收数据。
根据本发明实施例的另一方面,还提供了一种函数调用方法。该函数调用方法包括:通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
根据本发明实施例的另一方面,还提供了一种数据访问方法。该数据访问方法包括:通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
根据本发明实施例的另一方面,还提供了一种存储介质。该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行本发明实施例的函数调用方法。
根据本发明实施例的另一方面,还提供了一种存储介质。该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行本发明实施例的数据访问方法。
根据本发明实施例的另一方面,还提供了一种处理器。该处理器用于运行程序,其中,程序运行时执行本发明实施例的函数调用方法。
根据本发明实施例的另一方面,还提供了一种处理器。该处理器用于运行程序,其中,程序运行时执行本发明实施例的数据访问方法。
根据本发明实施例的另一方面,还提供了一种函数调用系统。该函数调用系统包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:确定第一进程需要调用函数,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
根据本发明实施例的另一方面,还提供了一种数据访问系统。该数据访问系统包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:确定第一进程需要访问存储于远程平台的数据;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
根据本发明实施例的另一方面,还提供了一种函数调用系统。该函数调用系统包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:确定第一进程需要调用函数,函数用于在远程平台运行;通过第一进程将调用函数的请求发送至第二进程;以及通过第一进程从第二进程接收函数的运行结果。
根据本发明实施例的另一方面,还提供了一种数据访问系统。该数据访问系统包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送给第二进程;以及通过第一进程从第二进程接收数据。
根据本发明实施例的另一方面,还提供了一种函数调用系统。该函数调用系统包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
根据本发明实施例的另一方面,还提供了一种数据访问系统。该数据访问系统包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
根据本发明实施例的另一方面,还提供了一种函数调用装置。该函数调用装置包括:第一确定模块,用于确定第一进程需要调用函数,函数用于在远程平台运行;以及处理模块,用于通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
根据本发明实施例的另一方面,还提供了一种数据访问装置。该数据访问装置包括:第一确定模块,用于确定第一进程需要访问存储于远程平台的数据;以及获取模块,用于通过第二进程从远程平台获得数据,并将数据提供给第一进程。
根据本发明实施例的另一方面,还提供了一种函数调用装置。该函数调用装置包括:第一确定模块,用于确定第一进程需要调用函数,函数用于在远程平台运行;发送模块,用于通过第一进程将调用函数的请求发送至第二进程;以及接收模块,用于通过第一进程从第二进程接收函数的运行结果。
根据本发明实施例的另一方面,还提供了一种数据访问装置。该数据访问装置包括:第一确定模块,用于确定第一进程需要访问存储于远程平台的数据;发送模块,用于通过第一进程将访问数据的请求发送给第二进程;以及接收模块,用于通过第一进程从第二进程接收数据。
根据本发明实施例的另一方面,还提供了一种函数调用装置。该函数调用装置包括:第一接收模块,用于通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行;以及处理模块,用于通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
根据本发明实施例的另一方面,还提供了一种数据访问装置。该数据访问装置包括:接收模块,用于通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及获取模块,用于通过第二进程从远程平台获得数据,并将数据提供给第一进程。
在本发明实施例中,采用确定第一进程需要调用在远程平台运行的函数;以及通过第二进程在远程平台运行函数,并将函数的运行结果提供给第一进程,从而能够实现不同计算平台、不同计算系统或者不同计算引擎之间的函数与数据的共用,例如通过与远程平台不同的计算系统以及计算逻辑的程序使用远程平台的UDF以及数据。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种函数调用系统的示意图;
图2是根据本发明实施例的一种数据访问系统的示意图;
图3是根据本发明实施例的另一种函数调用系统的示意图;
图4是根据本发明实施例的另一种数据访问系统的示意图;
图5是根据本发明实施例的另一种函数调用系统的示意图;
图6是根据本发明实施例的一种数据访问系统的示意图;
图7是根据本发明实施例的另一种数据处理系统的示意图;
图8是根据本发明实施例的另一种数据处理系统的示意图;
图9是根据本发明实施例的另一种数据处理系统的结构示意图;
图10是根据本发明实施例的另一种数据处理系统的示意图;
图11是根据本发明实施例的一种计算机终端(或移动设备)的硬件结构框图;
图12是根据本发明实施例的一种函数调用方法的流程图;
图13是根据本发明实施例的一种数据访问方法的流程图;
图14是根据本发明实施例的另一种函数调用方法的流程图;
图15是根据本发明实施例的另一种数据访问方法的流程图;
图16是根据本发明实施例的另一种函数调用方法的流程图;
图17是根据本发明实施例的另一种数据访问方法的流程图;
图18是根据本发明实施例的一种对父进程的程序进行编译的流程图;
图19是根据本发明实施例的一种在本地机上运行父进程以及子进程的方法的流程图;
图20是根据本发明实施例的一种函数调用装置的示意图;
图21是根据本发明实施例的一种数据访问装置的示意图;
图22是根据本发明实施例的另一种函数调用装置的示意图;
图23是根据本发明实施例的另一种函数调用装置的示意图;
图24是根据本发明实施例的另一种函数调用装置的示意图;
图25是根据本发明实施例的另一种数据访问装置的示意图;以及
图26是根据本发明实施例的一种计算机终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例技术方案,可以实现不同计算平台、不同计算系统或者不同计算引擎中函数(可以为UDF或者其它函数,例如计算平台中非用户自定义设置的等)或数据的共享/共用,例如一个计算平台/计算系统/计算引擎中的函数,可以被另一个计算平台/计算系统/计算引擎来使用。为便于理解和说明,本申请实施例将具体以计算平台MaxCompute,以及计算平台/计算引擎Seahawks间UDF或数据的共用为例进行详细的说明,但本申请技术方案并不局限于此,而是可以应用其它计算平台/计算系统/计算引擎间函数或数据的共享/共用。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
Seahawks:一个大规模并行SQL分析引擎,针对的是分析性应用,可以支持原生的MaxCompute的数据,资源等等。
MaxCompute:是由阿里云自主研发,是阿里巴巴自主研发的海量数据处理平台。提供针对TB/PB级数据、实时性要求不高的分布式处理能力,应用于数据分析、挖掘、商业智能等领域。
Postgres:即PostgreSQL,是一种开源的对象-关系型数据库,也被称为世界上最先进的开源数据库。
UDF:全称User Defined Function,即用户自定义函数,同时用户可以通过创建自定义函数来满足不同的计算需求。
MPP:大规模并行处理系统。
实施例1
本发明实施例提供了一种函数调用系统。
图1是根据本发明实施例的一种函数调用系统的示意图。如图1所示,该函数调用系统100包括:处理器102和存储器104。
处理器102。
存储器104,与处理器102连接,用于为处理器102提供处理以下处理步骤的指令:确定第一进程需要调用函数,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
在该实施例中,第一进程可以为在本地机上运行的进程,比如,该第一进程为在本地机上运行的基于Seahawks的进程,也即,父进程,其中,本地机可以包括上述第一进程。第二进程可以为在本地机上运行的进程,比如,该第二进程为在本地机上运行的子进程,其中,本地机可以包括上述第二进程。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的系统或装置,例如MaxCompute平台。
该实施例的处理器102与存储器104相连接,用于接收存储器104提供以下指令:确定第一进程需要调用函数,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。远程平台存储并运行函数,比如,远程平台存储有由MaxCompute的用户编写的大量用户自定义函数(UDF),用户可以通过创建自定义函数来满足不同的计算需求,处理器102根据接收到的指令确定第一进程需要调用在远程平台运行的函数。在处理器102确定第一进程需要调用在远程平台运行的函数之后,处理器102通过第二进程在远程平台运行函数,得到运行结果,处理器102通过第二进程可以将运行结果转换成由第一进程处理的数据格式的数据,比如,该第二进程可以将运行结果转换成Postgres数据格式,并将已经转换的运行结果返回至第一进程,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的运行结果之后,处理器102通过第一进程将运行结果反馈给用户。
该实施例能够在第一进程中实现对远程平台运行的函数的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。
作为一种可选地实施方式,存储器104用于为处理器102提供处理以下处理步骤的指令:通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;以及通过第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。
在该实施例中,处理器102还用于接收存储器104提供的用于处理通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;以及通过第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。处理器102通过第一进程向第二进程发送第一数据,第二进程启动,并从第一进程接收第一数据,该第一数据可以为调用并运行函数的请求以及相关数据。可选地,处理器102通过第二进程将从第一进程接收到的第一数据的格式转换为远程平台能够处理的数据格式的数据,比如,转换为MaxCompute record数据格式,从而使得第二进程可以利用转换后的第一数据进行远程调用,并运行远程平台上的函数,得到运行结果,并将运行结果返回至第一进程,然后第二进程关闭,从而可以减小对资源的占用。在处理器102通过第一进程得到第二进程返回的运行结果之后,通过第一进程将运行结果返回至用户。
作为一种可选地实施方式,存储器104用于为处理器102提供处理以下处理步骤的指令:在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
在该实施例中,处理器102还用于接收存储器104提供的用于在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据的指令。通过第二进程在远程平台运行函数,得到函数的运行结果,比如,通过第二进程利用转换后的第一数据运行函数,得到函数的运行结果,该运行结果可以由第二数据表示。处理器102通过第二进程将第二数据转换为能够由第一进程处理的数据格式的数据,比如,将第二数据转换为Postgres数据格式,并将转换后的第二数据返回至第一进程,然后第二进程关闭,从而可以减小对资源的占用。在处理器102通过第一进程得到第二进程返回的转换后的第二数据之后,第一进程可以对转换后的第二数据进行处理,得到处理结果,并将处理结果返回至用户。
作为一种可选地实施方式,存储器104用于为处理器102提供处理以下处理步骤的指令:确定第一进程需要访问存储于远程平台的第三数据;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
在该实施例中,处理器102还用于接收存储器104提供的用于确定第一进程需要访问存储于远程平台的第三数据;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程的指令。远程平台上除了可以存储函数之外,还可以存储大量数据,比如,存储MaxCompute表。处理器102确定第一进程需要访问存储于远程平台的第三数据。可选地,如果第一进程中包含用于访问第三数据的指令,则需要通过第二进程从远程平台上拉取第三数据,并通过第二进程将第三数据向第一进程返回;如果第一进程中不包含用于访问第三数据的指令,则结束从远程平台上拉取第三数据。在第一进程从第二进程接收到第三数据之后,处理器102通过第一进程控制计算单元对第三数据进行计算,从而在第一进程中实现了对远程平台上存储的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移中出现的错误以及风险。
作为一种可选地实施方式,存储器104用于为处理器102提供处理以下处理步骤的指令:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
在该实施例中,处理器102还用于接收存储器104提供的在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据的指令。由于第一进程所基于的计算引擎的内部表与第三数据的数据格式不同,并且第三数据本身并不包含在计算引擎的进程中,而是存储在远程平台上,因此相对于基于计算引擎的第一进程而言,该第三数据属于外部表,因此第二进程从远程平台上拉取的第三数据的数据格式与第一进程所能够处理的数据格式不一致。在处理器102将第三数据提供给第一进程之前,通过第二进程将第三数据转换为可以由第一进程处理的数据格式的数据,该数据格式可以为Postgres数据格式,此处不做限制,并通过第二进程将转换后的第三数据向第一进程返回。在通过第二进程将转换后的第三数据向第一进程返回之后,关闭第二进程,从而可以减小对资源的占用。在第一进程从第二进程接收到转换后的第三数据之后,处理器102通过第一进程控制计算单元对转换后的第三数据进行计算。
作为一种可选地实施方式,其中确定第一进程需要访问第三数据的指令包括确定第一进程中存在第一标识的指令,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问第三数据的指令处的。
在该实施例中,处理器102还用于接收存储器104提供的确定第一进程需要访问第三数据的操作包括确定第一进程中存在第一标识的指令。在用户输入第一进程的程序之后,对第一进程的程序进行语法解析。可选地,第一进程是基于计算引擎Seahawks的进程,因此可以对第一进程的程序进行Postgres语法解析。通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问第三数据的指令。如果第一进程的程序中包含访问第三数据的指令,则通过编译程序在该指令处添加第一标识。
在第一进程启动之后,处理器102检查第一进程中是否存在第一标识,也即,确定第一进程是否需要访问第三数据。如果处理器102检查出第一进程中不存在第一标识,则说明第一进程不需要访问第三数据,第一进程直接控制计算单元对数据进行计算;如果处理器102检查出第一进程中存在第一标识,则说明第一进程需要访问第三数据,此时第一进程启动第二进程。然后第二进程接收到来自第一进程发送的用于访问第三数据的请求,第二进程根据该请求从远程平台上远程拉取第一进程所要访问的第三数据。由于第二进程从远程平台上拉取的第三数据的数据格式与第一进程所能够处理的数据格式不一致,因此该实施例的第二进程将拉取到的第三数据转换为可以由第一进程处理的数据格式的数据,比如,转换为Postgres数据格式,然后将转换后的第三数据返回至第一进程,最后处理器102关闭第二进程,从而可以减小对资源的占用。第一进程在从第二进程接收到返回的第三数据时,控制计算单元对第三数据进行计算,从而在第一进程中实现了对远程平台上存储的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移中出现的错误以及风险。
作为一种可选地实施方式,其中确定第一进程需要调用该函数的指令包括确定第一进程存在第二标识的指令,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用该函数的指令处的。
在该实施例中,处理器102还用于确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用该函数的指令处的。在程序编译中,通过语法解析确定第一进程的程序中是否存在调用该函数的指令,由于第一进程调用的该函数是存储在远程平台并且在远程平台上运行的,因此相对于第一进程而言,第一进程调用的该函数为一个外部函数,因此如果确定第一进程的程序中存在调用函数的指令时,则通过编译程序在调用函数的指令处添加第二标识。
可选地,在第一进程控制计算单元对第三数据进行计算之后,处理器102检查第一进程中是否存在第二标识,也即,确定第一进程是否需要调用函数。如果检查出第一进程中不存在第二标识,则说明第一进程不需要调用函数,第一进程可以直接执行Postgres的操作。如果检查出第一进程中存在第二标识,则说明第一进程需要调用函数,则第一进程启动第二进程,并将调用函数的请求以及相关数据发送至第二进程。第二进程启动,并且从第一进程接收请求和相关数据,并将该相关数据转换为可以由远程平台处理的数据格式的数据,比如,转换为MaxCompute record。第二进程远程调用远程平台上的函数,并在远程平台行运行该函数,得到运行结果,将运行结果转换为可以由第一进程处理的数据格式的数据,比如,转换为Postgres数据格式,并将转换后的运行结果返回至第一进程,然后处理器102关闭第二进程,从而可以减小对资源的占用。第一进程在得到第一进程返回的转换后的运行结果之后,对转换后的运行结果进行处理,得到处理结果,并将处理结果返回至用户。
通过以上方式,本申请能够在第一进程中实现对远程平台上的函数和数据的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行用户自定义函数的计算逻辑,因此可以实现安全隔离的策略。
图2是根据本发明实施例的一种数据访问系统的示意图。如图2所示,该函数调用系统200包括:处理器202和存储器204。
处理器202。
存储器204,与处理器202连接,用于为处理器202提供处理以下处理步骤的指令:确定第一进程需要访问存储于远程平台的数据;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
在该实施例中,第一进程可以为在本地机上运行的进程,比如,该第一进程为在本地机上运行的基于Seahawks的进程,也即,父进程。其中,本地机可以包括上述第一进程。第二进程可以为在本地机上运行的进程,比如,该第二进程为在本地机上运行的子进程,其中,本地机可以包括上述第二进程。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
该实施例的处理器202与存储器204相连接,用于接收存储器204提供的用于确定第一进程需要访问存储于远程平台的数据;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程的指令。远程平台可以存储有大量数据,比如,存储有MaxCompute表。处理器202确定第一进程需要访问存储于远程平台的数据。在处理器202确定第一进程需要访问存储于远程平台的数据之后,处理器202通过第二进程从远程平台获得数据,并将数据提供给第一进程。在第一进程得到第二进程返回的数据之后,第一进程控制计算单元对数据进行计算。
该实施例能够在第一进程中实现对远程平台运行的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。
作为一种可选地实施方式,存储器204用于为处理器202提供处理以下处理步骤的指令:在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
在该实施例中,处理器202还用于接收存储器204提供的用于在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据的指令。通过第二进程从远程平台获得数据,比如,通过第二进程从远程平台获得MaxCompute表。在将数据提供给第一进程之前,处理器202通过第二进程将数据转换为能够由第一进程处理的数据格式的数据,比如,将数据转换为Postgres数据格式,并将转换后的数据返回至第一进程,然后第二进程关闭,从而可以减小对资源的占用。在处理器202通过第一进程得到第二进程返回的转换后的数据之后,第一进程可以对转换后的数据通过控制计算单元对数据进行计算,得到计算结果,并将计算结果返回至用户。
作为一种可选地实施方式,其中确定第一进程需要访问存储于远程平台的数据的指令包括确定第一进程中存在第一标识的指令,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问存储于远程平台的数据的指令处的。
在该实施例中,处理器202还用于接收存储器204提供的用于确定第一进程需要访问数据的操作包括确定第一进程中存在第一标识的指令。在用户输入第一进程的程序之后,对第一进程的程序进行语法解析。通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问数据的指令。如果第一进程的程序中包含访问存储于远程平台的数据的指令,则通过编译程序在该指令处添加第一标识。
第一进程在启动之后,处理器202检查第一进程中是否存在第一标识,也即,确定第一进程是否需要访问第三数据。如果处理器202检查出第一进程中不存在第一标识,则说明第一进程不需要访问数据,第一进程直接控制计算单元对数据进行计算;如果处理器202检查出第一进程中存在第一标识,则说明第一进程需要访问数据,此时第一进程启动第二进程。然后第二进程接收到来自第一进程发送的用于访问数据的请求,第二进程根据该请求从远程平台上远程拉取第一进程所要访问的数据。由于第二进程从远程平台上拉取的数据的数据格式与第一进程所能够处理的数据格式不一致,因此该实施例的第二进程将拉取到的数据转换为可以由第一进程处理的数据格式的数据,比如,转换为Postgres数据格式,然后将转换后的数据返回至第一进程,最后处理器202关闭第二进程,从而可以减小对资源的占用。第一进程在从第二进程接收到返回的数据时,控制计算单元对数据进行计算,从而在第一进程中实现了对远程平台上存储的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移中出现的错误以及风险。
图3是根据本发明实施例的另一种函数调用系统的示意图。如图3所示,该函数调用系统300包括:处理器302和存储器304。
处理器302。
存储器304,与处理器302连接,用于为处理器302提供处理以下处理步骤的指令:确定第一进程需要调用函数,函数用于在远程平台运行;通过第一进程将调用函数的请求发送至第二进程;以及通过第一进程从第二进程接收函数的运行结果。
该实施例的处理器302与存储器304相连接,用于接收存储器304提供的用于确定第一进程需要调用在远程平台运行的函数;通过第一进程将调用函数的请求发送至第二进程;以及通过第一进程从第二进程接收函数的运行结果的指令。远程平台存储并运行函数,用户可以通过创建自定义函数来满足不同的计算需求,处理器302根据接收到的指令确定第一进程需要调用在远程平台运行的函数,将调用函数的请求以及相关数据发送至第二进程,第二进程开启,并且从第一进程接收调用函数的请求和相关数据,通过第二进程在远程平台运行函数,得到运行结果,进而通过第一进程从第二进程接收函数的运行结果。处理器302通过第二进程可以将运行结果转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的运行结果,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的运行结果之后,处理器302通过第一进程将运行结果反馈给用户。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
该实施例能够在第一进程中实现对远程平台运行的函数的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。
作为一种可选地实施方式,存储器304用于为处理器302提供处理以下处理步骤的指令:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送至第二进程;以及通过第一进程从第二进程接收数据。
在该实施例中,处理器302还用于接收存储器304提供的用于确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送至第二进程;以及通过第一进程从第二进程接收数据的指令。远程平台存储数据,处理器302根据接收到的指令确定第一进程需要访问存储于远程平台的数据,通过第一进程将访问数据的请求发送至第二进程,第二进程开启,通过第一进程从第二进程接收数据。处理器302通过第二进程可以将数据转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的数据之后,第一进程控制计算单元对数据进行计算。
作为一种可选地实施方式,用于确定第一进程需要访问存储于远程平台的数据的指令包括确定第一进程中存在第一标识的指令,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问该数据的指令处的。
在该实施例中,处理器302还用于接收存储器304提供的用于确定第一进程中存在第一标识的指令。在用户输入第一进程的程序之后,对第一进程的程序进行语法解析。通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问存储于远程平台的数据的指令。如果第一进程的程序中包含访问存储于远程平台的数据的指令,则将第一标识添加在该指令处。
第一进程在启动之后,处理器302检查第一进程中是否存在第一标识,也即,确定第一进程是否需要访问数据。如果处理器302检查出第一进程中不存在第一标识,则说明第一进程不需要访问数据,第一进程直接控制计算单元对数据进行计算;如果处理器检查出第一进程中存在第一标识,则说明第一进程需要访问数据,此时第一进程启动第二进程。然后第二进程接收到来自第一进程发送的用于访问数据的请求,第二进程根据该请求从远程平台上远程拉取第一进程所要访问的数据。由于第二进程从远程平台上拉取的数据的数据格式与第一进程所能够处理的数据格式不一致,因此该实施例的第二进程将拉取到的数据转换为可以由第一进程处理的数据格式的数据,然后将转换后的数据返回至第一进程,最后处理器302关闭第二进程,从而可以减小对资源的占用。
作为一种可选地实施方式,用于确定第一进程需要调用函数的指令包括确定第一进程存在第二标识的指令,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
在该实施例中,处理器302还用于接收存储器304提供的用于确定第一进程存在第二标识的指令。在编译中,通过语法解析确定第一进程的程序中是否存在调用函数的指令,如果确定第一进程的程序中不存在调用函数的指令,则结束第一进程调用函数的操作;如果确定第一进程的程序中存在调用函数的指令时,则通过编译程序在调用函数的指令处添加第二标识。
可选地,在第一进程控制计算单元对数据进行计算之后,处理器302检查第一进程中是否存在第二标识。如果检查出第一进程中不存在第二标识,则说明第一进程不需要调用函数,第一进程可以直接执行Postgres的操作。如果检查出第一进程中存在第二标识,则第一进程启动第二进程,并将调用函数的请求以及相关数据发送至第二进程。第一进程远程调用远程平台上的函数,并在远程平台行运行该函数,得到运行结果,将运行结果转换为可以由第一进程处理的数据格式的数据,并将转换后的运行结果返回至第一进程,然后处理器302关闭第二进程,从而可以减小对资源的占用。第一进程在得到第一进程返回的转换后的运行结果之后,对转换后的运行结果进行处理,得到处理结果,并将处理结果返回至用户。
图4是根据本发明实施例的另一种数据访问系统的示意图。如图4所示,该数据访问系统400包括:处理器402和存储器404。
处理器402。
存储器404,与处理器402连接,用于为处理器402提供处理以下处理步骤的指令:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送给第二进程;以及通过第一进程从第二进程接收数据。
该实施例的处理器402与存储器404相连接,用于接收存储器404提供的用于确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送给第二进程;以及通过第一进程从第二进程接收数据的指令。远程平台存储数据,处理器402根据接收到的指令确定第一进程需要访问存储于远程平台的数据,第一进程将访问数据的请求发送至第二进程,第二进程开启,通过第一进程从第二进程接收数据。处理器402通过第二进程可以将数据转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的数据之后,第一进程控制计算单元对数据进行计算。
该实施例能够在第一进程中实现对数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
作为一种可选地实施方式,用于确定第一进程需要访问数据的指令包括确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
在该实施例中,处理器402还用于接收存储器404提供的用于确定第一进程中存在第一标识的指令。在用户输入第一进程的程序之后,对第一进程的程序进行语法解析。通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问数据的指令。如果确定第一进程中存在访问该数据的指令时,则通过编译程序在访问该数据的指令处添加第一标识。。
第一进程在启动之后,处理器402检查第一进程中是否存在第一标识,也即,确定第一进程是否需要访问数据。如果处理器402检查出第一进程中不存在第一标识,第一进程直接控制计算单元对数据进行计算;如果处理器检查出第一进程中存在第一标识,此时第一进程启动第二进程。然后第二进程接收到来自第一进程发送的用于访问数据的请求,第二进程根据该请求从远程平台上远程拉取第一进程所要访问的数据,将拉取到的数据转换为可以由第一进程处理的数据格式的数据,然后将转换后的数据返回至第一进程,最后处理器402关闭第二进程,从而可以减小对资源的占用。第一进程在从第二进程接收到返回的数据时,控制计算单元对第据进行计算,从而在第一进程中实现了对远程平台上存储的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移中出现的错误以及风险。
图5是根据本发明实施例的另一种函数调用系统的示意图。如图5所示,该函数调用系统500包括:处理器502和存储器504。
处理器502。
存储器504,与处理器502连接,用于为处理器502提供处理以下处理步骤的指令:通过第二进程从第一进程接收调用函数的请求,所述函数用于在所述远程平台运行;以及通过第二进程执行以下操作:通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
该实施例的处理器502与存储器504相连接,用于接收存储器504提供的用于通过第二进程从第一进程接收调用函数的请求,函数在远程平台运行;以及通过第二进程在远程平台运行函数,并将函数的运行结果提供给第一进程的指令。第一进程向第二进程发送调用函数的请求,第二进程从第一进程接收调用函数的请求,通过第二进程在远程平台运行存储的函数,得到运行结果,进而将函数的运行结果提供给第一进程。处理器502通过第二进程可以将运行结果转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的运行结果,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的运行结果之后,处理器502通过第一进程将运行结果反馈给用户。
该实施例能够在第一进程中实现对远程平台运行的函数的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
作为一种可选地实施方式,存储器504用于为处理器502提供处理以下处理步骤的指令:通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;以及通过第二进程,利用转换后的第一数据运行函数。
需要说明的是,该方法与图1所示实施例的方法相同,此处不再赘述。
作为一种可选地实施方式,存储器504用于为处理器502提供处理以下处理步骤的指令:在将运行结果提供给第一进程之前,通过第二进程将转换后的所述第一数据与运行所述函数的所述请求发送至所述远程平台。
需要说明的是,该方法与图1所示实施例的方法相同,此处不再赘述。
作为一种可选地实施方式,存储器504用于为处理器502提供处理以下处理步骤的指令:通过第二进程从第一进程接收访问存储于远程平台的第三数据的请求;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
在该实施例中,处理器502还用于接收存储器504提供的用于通过第二进程从第一进程接收访问存储于远程平台的第三数据的请求;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程的指令。第一进程向第二进程发送访问远程平台存储的第三数据的请求,通过第二进程接收该请求,第二进程根据该请求从远程平台获得第三数据,并将第三数据提供给第一进程。
作为一种可选地实施方式,存储器504用于为处理器502提供处理以下处理步骤的指令:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
在该实施例中,处理器502还用于接收存储器504提供的用于在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据的指令。处理器502通过第二进程可以将第三数据转换成可以由第一进程处理的数据格式的数据,第二进程向第一进程发送已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第二进程向第一进程发送已经转换的数据之后,第一进程控制计算单元对数据进行计算。
图6是根据本发明实施例的一种数据访问系统的示意图。如图6所示,该函数处理系统600包括:处理器602和存储器604。
处理器602。
存储器604,与处理器602连接,用于为处理器602提供处理以下处理步骤的指令:通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
在该实施例中,处理器602还用于接收存储器604提供的用于通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程的指令。远程平台存储数据,第一进程向第二进程发送访问存储于远程平台的请求,处理器602通过第二进程从第一进程接收访问存储于远程平台的数据的请求,第二进程根据该请求从远程平台获得数据,并将获得的数据提供给第一数据。处理器602通过第二进程可以将数据转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的数据之后,第一进程控制计算单元对数据进行计算。
可选地,在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
通过以上方式,本申请能够在第一进程中实现对远程平台上的函数的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免手工迁移过程中出现的错误以及风险。并且,由于本申请通过父进程和子进程相结合的方式实现了在MPP系统中执行函数计算逻辑,因此可以实现安全隔离的策略。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
下面结合优选的实施方式对本发明实施例的技术方案进行说明。具体以远程平台为MaxCompute平台,第一进程为父进程,第二进程为子进程进行举例说明。
图7和图8是根据本发明实施例的一个数据处理系统的示意图。如图7所示,用户操作本地机702,例如,本地机702上运行基于计算引擎或分析引擎(例如,Seahawks)的进程,也即,父进程。此外本地机702通过网络与远程平台704连接,作为远程平台704的具体实例,所述远程平台704为MaxCompute平台704。因此本地机702可以通过网络与MaxCompute平台704进行通信,例如,调用存储在MaxCompute平台704上的UDF以及访问MaxCompute平台704上存储的数据(例如MaxCompute表)。
进一步的,如图8所示,本地机702包括网络接口7021、在本地机上运行的父进程7022(对应于本申请权利要求中的第一进程)以及子进程7023(对应于本申请权利要求中的第二进程)。
MaxCompute平台704包括网络接口7041以及内容存储器7042。其中MaxCompute平台704的内容存储器7042存储有大量数据(例如,MaxCompute表)以及由MaxCompute的用户编写的大量UDF。
其中本地机702和MaxCompute平台704分别通过网络接口7021和网络接口7041进行彼此的通信,使得本地机702上运行的父进程7022能够调用存储于MaxCompute平台704上的UDF以及访问存储于MaxCompute平台704上的MaxCompute表。
在本地机702上运行有父进程7022和子进程7023,父进程7022中包含访问MaxCompute表的指令一以及调用Maxcompute UDF的指令二。
用户输入父进程7022的程序,以便进行编译操作。对父进程7022的程序进行语法解析。对于本具体实施方式而言,由于父进程7022是基于计算引擎Seahawks的进程,因此对父进程7022的程序进行Postgres语法解析。
编译中通过语法解析确定父进程7022的程序中是否存在访问MaxCompute表的指令。Seahawks的内部表与MaxCompute表的数据格式是不同的,并且MaxCompute表本身并不包含在Seahawks的进程中而是存储在MaxCompute平台上,因此相对于基于Seahawks的父进程7022而言属于外部表。因此如果父进程7022的程序中包含访问MaxCompute表的指令,则需要从MaxCompute平台拉取MaxCompute表,并对其进行数据格式的转换。
当确定父进程7022的程序中存在访问MaxCompute表的指令时,通过编译程序在访问MaxCompute表的指令处添加标记,即第一标记。
在编译中通过语法解析确定父进程7022的程序中是否存在调用MaxCompute UDF的指令。由于MaxCompute UDF是存储在MaxCompute平台上并且在MaxCompute平台上运行,因此相对于父进程7022而言,MaxCompute UDF实际上也是一个外部函数。如果确定父进程7022的程序中不存在调用MaxCompute UDF的指令,则编译过程结束。
当确定父进程7022的程序中存在调用MaxCompute UDF的指令时,通过编译程序在调用MaxCompute表的指令处添加标记,即第二标记。然后编译过程结束。
关于在父进程7022的程序中所添加的标记,将在下文中做出进一步详细的说明。
在本地机702上运行父进程7022时,开始在本地机上启动父进程7022。父进程7022检查在父进程7022中是否存在第一标记,即确定父进程7022是否需要访问MaxCompute表。如果检查结果为否,则说明父进程7022不需要访问MaxCompute表,父进程7022直接控制计算单元对数据进行计算。
但是如果检查到父进程7022中存在第一标记,则说明父进程7022需要访问MaxCompute表。此时,父进程7022启动子进程7023。然后,子进程7023接收到来自父进程7022的关于访问MaxCompute表的请求,并根据该请求从MaxCompute平台704远程拉取父进程7022所要访问的MaxCompute表。
由于子进程7023从MaxCompute平台拉取的MaxCompute表的数据格式与父进程所能够处理的数据格式不一致,因此子进程7023将拉取到的MaxCompute表的数据转换为可以由父进程7022处理的Postgres数据格式,并将数据返回至父进程。然后子进程7023关闭。
父进程7022在从子进程7023收到返回的数据后,控制计算单元对数据进行计算。
在控制计算单元对数据进行计算之后,父进程7022检查父进程中是否存在第二标记,即确定父进程7022是否需要调用MaxCompute UDF。如果检查结果为否,则说明父进程7022不需要调用MaxCompute UDF,父进程7022直接执行Postgres的操作。
如果检查到父进程7022中存在第二标记,则说明在进程中需要调用MaxComputeUDF,则父进程7022启动子进程7023并将调用MaxCompute UDF的请求以及相关数据发送至子进程7023。子进程7023启动,并且从父进程7022接收所述请求和数据。子进程7023将接收到的数据转换为可由MaxCompute平台704处理的格式(例如,MaxCompute record)。然后子进程7023远程调用MaxCompute平台704上的该UDF,从而得到处理结果。最后子进程将所得到的处理结果转换成可由父进程7022处理的Postgres数据格式,并将数据返回至父进程7022。然后子进程7023关闭。其中,子进程7023可以通过以下方式调用MaxCompute平台704上的该UDF:向MaxCompute平台704发送运行该UDF的请求以及可由MaxCompute平台704处理的数据;MaxCompute平台704在接收到该请求和数据后,运行该UDF,并将运行结果返回至子进程7023;子进程7023接收运行结果,并将运行结果提供给父进程7022。
父进程7022在得到子进程7023返回的数据后,在将数据返回给用户,并结束进程。
通过以上方式,本申请能够在基于Seahawks的父进程7022中实现对MaxCompute平台704上的UDF的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免手工迁移过程中出现的错误以及风险。并且,由于本申请通过父进程和子进程相结合的方式实现了在MPP系统中执行UDF计算逻辑,因此可以实现安全隔离的策略。
在本具体实施方式中,子进程7023每次将数据发送至父进程7022后都会自行关闭,等待父进程7022的下一次启动,从而可以减小对资源的占用。但是这只是一个可选地例子,例如,子进程7023也可以在父进程7022第一次启动子进程7023时启动,并且在父进程7022退出时关闭,这样可以减少启动子进程7023的次数。
下面对本发明另一种数据访问系统进行介绍。出于简明的目的,对于与图7和图8所示实施例中相同的内容,在该实施方式中进行了省略。
图9是根据本发明实施例的另一种数据访问系统的结构示意图。图10是根据本发明实施例的另一种数据访问系统的示意图。如图9和图10所示,该实施例与图7和图8所示实施例的区别在于,在图7和图8所示实施例中,所述父进程7022和子进程7023都是在本地机702上运行的。而在该实施例中,所述父进程8022和子进程8023分别在通过网络连接的本地机802和计算设备806上运行,其中,计算设备806还包括网络接口8061。
上述父进程8022和子进程8023不仅可以像图7和图8所示实施例那样运行在同一装置802上,也可以像该实施例这样运行在不同的装置802和806上。
其中所述计算设备806泛指任意具有数据处理功能以及控制逻辑的设备,例如,台式电脑、笔记本、服务器、DSP、PCL、单片机等等。
其中,父进程8022的编译流程以及父进程8022和子进程8023运行的流程可以参考图7和图8所示实施例中的描述。
其中,在本地机802上的父进程8022的运行过程中,当父进程8022确定父进程8022中存在所述第一标记,即父进程8022需要访问MaxCompute表时,父进程8022将访问MaxCompute表的请求发送至计算设备806,从而计算设备806在收到该请求后,启动子进程8023并将该请求转发至子进程8023。
然后子进程8023根据该请求从MaxCompute平台804远程拉取父进程8022所要访问的MaxCompute表,然后将拉取到的MaxCompute表的数据转换为可以由父进程8022处理的Postgres数据格式,并将数据返回至本地机802。然后子进程8023关闭。本地机802在接收到该数据后,将其返回至父进程8022。
此外,在父进程8022确定父进程中存在所述第二标记,即父进程8022需要调用MaxCompute平台上的MaxCompute UDF时,父进程8022将调用MaxCompute UDF的请求以及相关数据发送至计算设备806。计算设备806在接收到该请求后,启动子进程8023,并将该请求以及相关数据转发至子进程8023。
然后,子进程8023根据该请求将接收到的数据转换为可由MaxCompute平台804处理的格式(例如,MaxCompute record)。然后,子进程8023远程调用MaxCompute 110上的该UDF,从而得到处理结果。最后,子进程将所得到的处理结果转换成可由父进程8022处理的Postgres数据格式,并将数据返回至本地机802。然后子进程8023关闭。本地机802在接收到该数据后,将其返回至父进程8022。其中,子进程8023可以通过以下方式调用MaxCompute平台804上的该UDF:向MaxCompute平台804发送运行该UDF的请求以及可由MaxCompute平台804处理的数据;MaxCompute平台804在接收到该请求和数据后,运行该UDF,并将运行结果返回至子进程8023;子进程8023接收运行结果,并将运行结果提供给本地机802。
需要注意的是,尽管图7至图10所描述的是基于Seahawks的父进程访问MaxCompute平台上的MaxCompute表以及调用MaxCompute函数的情形,但是本领域技术人员应当清楚,本申请的技术方案可以适用于其他类型的进程对其他类型的平台的访问,只要是通过本地机上的父进程访问远程平台或服务器上的数据或调用远程平台或服务器上的函数均适用于本申请的技术方案。
此外,尽管图7至图10的具体实施方式中通过描述MaxCompute平台对技术方案进行了描述。但是本领域技术人员应当清楚,对于本申请中提到的“平台”或“远程平台”,不应做过多的限制。所述“平台”或“远程平台”泛指与本地机分离的用于存储数据和/或函数,并且根据所接收的指示发送数据和/或运行所述函数的装置。
此外,尽管图7至图10的具体实施方式中仅仅描述了针对一条访问MaxCompute表的指令以及针对一条调用MaxCompute UDF的指令执行上述调用子进程的操作,但是本领域技术人员应当清楚,对于父进程中存在任意数量的访问MaxCompute表的指令以及调用MaxCompute UDF的指令的情况,也均适用于本申请的技术方案。
实施例2
根据本发明实施例,还提供了一种函数调用方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例所提供的函数调用方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图11是根据本发明实施例的一种计算机终端(或移动设备)的硬件结构框图。如图11所示,计算机终端1100(或移动设备1100)可以包括一个或多个(图中采用1102a、1102b,……,1102n来示出)处理器1102(处理器1102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1104、以及用于通信功能的传输装置1106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端1100还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
应当注意到的是上述一个或多个处理器1102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端1100(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器1104可用于存储应用软件的软件程序以及模块,如本发明实施例中的方法对应的程序指令/数据存储装置,处理器1102通过运行存储在存储器1104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的函数调用方法。存储器1104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1104可进一步包括相对于处理器1102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端1100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置1106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置1106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置1106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端1100(或移动设备)的用户界面进行交互。
在上述运行环境下,本申请提供了如图12所示的函数调用方法。图12是根据本发明实施例的一种函数调用方法的流程图。如图12所示,该方法可以包括以下步骤:
步骤S1202,确定第一进程需要调用函数,所述函数用于在所述远程平台运行。
在本发明上述步骤S1202提供的技术方案中,第一进程可以为在本地机上运行的进程,比如,该第一进程为在本地机上运行的基于Seahawks的进程,也即,父进程,其中,本地机可以包括上述第一进程。确定第一进程需要调用存储于远程平台,且在远程平台运行的函数,比如,该函数为用户自定义函数(UDF)。
步骤S1204,通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
在本发明上述步骤S1204提供的技术方案中,第二进程可以为在本地机上运行的进程,比如,该第二进程为在本地机上运行的子进程,其中,本地机可以包括上述第二进程。
可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。在确定第一进程需要调用在远程平台运行的函数之后,通过第二进程在远程平台运行函数,得到函数的运行结果,并将函数的运行结果提供给第一进程。
该实施例确定第一进程需要调用在远程平台运行的函数,通过第二进程在远程平台运行函数,并将函数的运行结果提供给第一进程,能够在基于Seahawks等计算引擎的进程中实现对MaxCompute等数据处理平台上的UDF的调用,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移过程中出现的错误以及风险,进而解决了如何通过基于Seahawks等计算引擎的进程调用MaxCompute等数据处理平台上的UDF以及访问MaxCompute等数据处理平台上的数据的技术问题。
作为一种可选地实施方式,该函数调用方法还包括:通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;以及通过所述第二进程,将转换后的所述第一数据与运行所述函数的所述请求发送至所述远程平台。
通过第一进程向第二进程发送第一数据,此时第二进程启动,该第二进程从第一进程接收第一数据,其中,第一数据可以为调用并运行函数的请求以及相关数据。可选地,通过第二进程将从第一进程接收到的第一数据的格式转换为远程平台能够处理的数据格式的数据,比如,转换为MaxCompute record数据格式,从而使得第二进程可以利用转换后的第一数据进行远程调用,并运行远程平台上的函数,得到运行结果,并将运行结果返回至第一进程,然后第二进程关闭,从而可以减小对资源的占用。在通过第一进程得到第二进程返回的运行结果之后,通过第一进程将运行结果返回至用户。
作为一种可选地实施方式,该函数调用方法还包括:在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
在该实施例中,通过第二进程在远程平台运行函数,得到函数的运行结果,比如,通过第二进程利用转换后的第一数据运行函数,得到函数的运行结果,该运行结果可以由第二数据表示。通过第二进程将第二数据转换为能够由第一进程处理的数据格式的数据,比如,将第二数据转换为Postgres数据格式,并将转换后的第二数据返回至第一进程,然后第二进程关闭,从而可以减小对资源的占用。在通过第一进程得到第二进程返回的转换后的第二数据之后,第一进程可以对转换后的第二数据进行处理,得到处理结果,并将处理结果返回至用户。
作为一种可选地实施方式,该函数调用方法还包括:确定第一进程需要访问存储于远程平台的第三数据;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
远程平台上除了可以存储函数之外,还可以存储大量数据,比如,存储MaxCompute表。确定第一进程需要访问存储于远程平台的第三数据。可选地,如果第一进程中包含用于访问第三数据的指令,则需要通过第二进程从远程平台上拉取第三数据,并通过第二进程将得到的第三数据向第一进程返回;如果第一进程中不包含用于访问第三数据的指令,则结束从远程平台上拉取第三数据。在第一进程从第二进程接收到第三数据之后,通过第一进程控制计算单元对第三数据进行计算,从而在第一进程中实现了对远程平台上存储的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移中出现的错误以及风险。
作为一种可选地实施方式,该函数调用方法还包括:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
由于第二进程从远程平台上拉取的第三数据的数据格式与第一进程所能够处理的数据格式不一致。在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为可以由第一进程处理的数据格式的数据,该数据格式可以为Postgres数据格式,此处不做限制,并通过第二进程将转换后的第三数据向第一进程返回。在通过第二进程将转换后的第三数据向第一进程返回之后,关闭第二进程,从而可以减小对资源的占用。在第一进程从第二进程接收到转换后的第三数据之后,通过第一进程控制计算单元对转换后的第三数据进行计算。
作为一种可选地实施方式,确定第一进程需要访问第三数据的操作包括确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问第三数据的指令处的。
在用户输入第一进程的程序之后,对第一进程的程序进行语法解析。通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问第三数据的指令。如果确定第一进程中存在访问第三数据的指令时,则通过编译程序在访问第三数据的指令处添加第一标识。
第一进程在启动之后,检查第一进程中是否存在第一标识,也即,确定第一进程是否需要访问第三数据。如果检查出第一进程中不存在第一标识,则说明第一进程不需要访问第三数据,第一进程直接控制计算单元对数据进行计算;如果检查出第一进程中存在第一标识,则说明第一进程需要访问第三数据,此时第一进程启动第二进程。然后第二进程接收到来自第一进程发送的用于访问第三数据的请求,第二进程根据该请求从远程平台上远程拉取第一进程所要访问的第三数据。由于第二进程从远程平台上拉取的第三数据的数据格式与第一进程所能够处理的数据格式不一致,因此第二进程将拉取到的第三数据转换为可以由第一进程处理的数据格式的数据,比如,转换为Postgres数据格式,然后将转换后的第三数据返回至第一进程,最后关闭第二进程,从而可以减小对资源的占用。第一进程在从第二进程接收到返回的第三数据时,控制计算单元对第三数据进行计算,从而在第一进程中实现了对远程平台上存储的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移中出现的错误以及风险。
作为一种可选地实施方式,确定第一进程需要调用该函数的操作包括确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用该函数的指令处的。
在程序编译中,通过语法解析确定第一进程的程序中是否存在调用该函数的指令,由于第一进程调用的该函数是存储在远程平台并且在远程平台上运行的,因此相对于第一进程而言,第一进程调用的函数为一个外部函数,如果确定第一进程的程序中存在调用该函数的指令时,则通过编译程序在调用该函数的指令处添加第二标识。
可选地,在第一进程控制计算单元对第三数据进行计算之后,检查第一进程中是否存在第二标识,也即,确定第一进程是否需要调用函数。如果检查出第一进程中不存在第二标识,则说明第一进程不需要调用函数,第一进程可以直接执行Postgres的操作。如果检查出第一进程中存在第二标识,则说明第一进程需要调用函数,则第一进程启动第二进程,并将调用函数的请求以及相关数据发送至第二进程。第二进程启动,并且从第一进程接收请求和相关数据,并将该请求和相关数据转换为可以由远程平台处理的数据格式的数据,比如,转换为MaxCompute record。第二进程远程调用远程平台上的函数,并在远程平台行运行该函数,得到运行结果,将运行结果转换为可以由第一进程处理的数据格式的数据,比如,转换为Postgres数据格式,并将转换后的运行结果返回至第一进程,然后关闭第二进程,从而可以减小对资源的占用。第一进程在得到第一进程返回的转换后的运行结果之后,对转换后的运行结果进行处理,得到处理结果,并将处理结果返回至用户。
本发明实施例还提供了一种数据访问方法。本申请实施例所提供的数据访问方法可以在移动终端、计算机终端或者类似的运算装置中执行。在图11所示的计算机终端的运行环境下,本申请可以提供了如图13所示的数据访问方法。图13是根据本发明实施例的一种数据访问方法的流程图。如图13所示,该方法可以包括以下步骤:
步骤S1302,确定第一进程需要访问存储于远程平台的数据。
在本发明上述步骤S1302提供的技术方案中,第一进程可以为在本地机上运行的进程,比如,该第一进程为在本地机上运行的基于Seahawks的进程,也即,父进程,其中,本地机可以包括上述第一进程。确定第一进程需要访问存储于远程平台的数据,该数据可以为远程平台存储的MaxCompute表。
步骤S1304,通过第二进程从远程平台获得数据,并将数据提供给第一进程。
在本发明上述步骤S1304提供的技术方案中,第二进程可以为在本地机上运行的进程,比如,该第二进程为在本地机上运行的子进程,其中,本地机可以包括上述第二进程。远程平台存储数据,比如,远程平台可以存储有大量数据,比如,存储有MaxCompute表。在确定第一进程需要访问存储于远程平台的数据之后,通过第二进程从远程平台获得数据,并将数据提供给第一进程。
该实施例能够在第一进程中实现对远程平台运行的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。
作为一种可选地实施方式,该数据访问方法还包括:在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
通过第二进程从远程平台获得数据,比如,通过第二进程从远程平台获得MaxCompute表。在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据,比如,将数据转换为Postgres数据格式,并将转换后的数据返回至第一进程,然后第二进程关闭,从而可以减小对资源的占用。在通过第一进程得到第二进程返回的转换后的数据之后,第一进程可以对转换后的数据通过控制计算单元对数据进行计算,得到计算结果,并将计算结果返回至用户。
作为一种可选地实施方式,确定第一进程需要访问存储于远程平台的数据的操作包括确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问存储于远程平台的数据的指令处的。
在用户输入第一进程的程序之后,对第一进程的程序进行语法解析。通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问存储于远程平台的数据的指令。如果确定第一进程中存在访问存储于远程平台的数据的指令时,通过编译程序在访问存储于远程平台的数据的指令处添加第一标识。
第一进程在启动之后,检查第一进程中是否存在第一标识,也即,确定第一进程是否需要访问存储于远程平台的数据。如果检查出第一进程中不存在第一标识,则说明第一进程不需要访问存储于远程平台的数据,第一进程直接控制计算单元对数据进行计算;如果检查出第一进程中存在第一标识,则说明第一进程需要访问该数据,此时第一进程启动第二进程。第二进程将数据返回至第一进程,最后关闭第二进程,从而可以减小对资源的占用。第一进程在从第二进程接收到返回的数据时,控制计算单元对数据进行计算,从而在第一进程中实现了对远程平台上存储的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移中出现的错误以及风险。
本发明实施例还提供了另一种函数调用方法。本申请实施例所提供的函数调用方法可以在移动终端、计算机终端或者类似的运算装置中执行。在图11所示的计算机终端的运行环境下,本申请可以提供了如图14所示的函数调用方法。图14是根据本发明实施例的另一种函数调用方法的流程图。如图14所示,该方法可以包括以下步骤:
步骤S1402,确定第一进程需要调用函数,所述函数用于在所述远程平台运行。
在本发明上述步骤S1402提供的技术方案中,远程平台存储并运行函数,用户可以通过创建自定义函数来满足不同的计算需求,确定第一进程需要调用用于在远程平台运行的函数。
步骤S1404,通过第一进程将调用函数的请求发送至第二进程。
在本发明上述步骤S1404提供的技术方案中,在确定第一进程需要调用用于在远程平台运行的函数之后,通过第一进程将调用函数的请求发送至第二进程,第二进程开启,并且从第一进程接收调用函数的请求和相关数据。
步骤S1406,通过第一进程从第二进程接收函数的运行结果。
在本发明上述步骤S1406提供的技术方案中,在通过第一进程将调用函数的请求发送至第二进程之后,通过第二进程在远程平台运行函数,得到运行结果,进而通过第一进程从第二进程接收函数的运行结果。
该实施例能够在第一进程中实现对远程平台运行的函数的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
作为一种可选地实施方式,该函数调用方法还包括:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送至第二进程;以及通过第一进程从第二进程接收数据。
远程平台存储数据,确定第一进程需要访问存储于远程平台的数据,通过第一进程将访问数据的请求发送至第二进程,第二进程开启,通过第一进程从第二进程接收数据。通过第二进程可以将数据转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的数据之后,第一进程控制计算单元对数据进行计算。
作为一种可选地实施方式,确定第一进程需要访问存储于远程平台的数据的操作包括确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问存储于远程平台的数据的指令。如果确定第一进程中存在访问存储于远程平台的数据的指令时,通过编译程序在访问存储于远程平台的数据的指令处添加第一标识。其中,第一进程在启动之后,如果处理器检查出第一进程中存在第一标识,则说明第一进程需要访问存储于远程平台的数据,此时第一进程启动第二进程。然后第二进程接收到来自第一进程发送的用于访问存储于远程平台的数据的请求,第二进程根据该请求从远程平台上远程拉取第一进程所要访问的数据。可选地,第二进程将拉取到的数据转换为可以由第一进程处理的数据格式的数据,然后将转换后的数据返回至第一进程,最后关闭第二进程,从而可以减小对资源的占用。
作为一种可选地实施方式,确定第一进程需要调用函数的操作包括确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
可选地,在第一进程控制计算单元对数据进行计算之后,在第一进程中存在第二标识的情况下,第一进程启动第二进程,并将调用函数的请求以及相关数据发送至第二进程。第一进程远程调用远程平台上的函数,并在远程平台行运行该函数,得到运行结果。
本发明实施例还提供了另一种数据访问方法。本申请实施例所提供的数据访问方法可以在移动终端、计算机终端或者类似的运算装置中执行。在图11所示的计算机终端的运行环境下,本申请可以提供了如图15所示的数据访问方法。图15是根据本发明实施例的另一种数据访问方法的流程图。如图15所示,该方法可以包括以下步骤:
步骤S1502,确定第一进程需要访问存储于远程平台的数据。
在本发明上述步骤S1502提供的技术方案中,远程平台存储数据,确定第一进程需要访问存储于远程平台的数据。
步骤S1504,通过第一进程将访问数据的请求发送给第二进程。
在本发明上述步骤S1504提供的技术方案中,在确定第一进程需要访问存储于远程平台的数据之后,通过第一进程将访问数据的请求发送给第二进程,第二进程开启。
步骤S1506,通过第一进程从第二进程接收数据。
在本发明上述步骤S1506提供的技术方案中,在通过第一进程将访问数据的请求发送给第二进程之后,通过第一进程从第二进程接收数据,通过第二进程可以将数据转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的数据之后,第一进程控制计算单元对数据进行计算。
该实施例能够在第一进程中实现对数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
作为一种可选地实施方式,确定第一进程需要访问存储于远程平台的数据的操作包括确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
在用户输入第一进程的程序之后,对第一进程的程序进行语法解析。通过对第一进程的程序进程语法解析确定第一进程的程序中是否存在访问存储于远程平台的数据的指令。如果确定第一进程中存在访问存储于远程平台的数据的指令时,通过编译程序在访问存储于远程平台的数据的指令处添加第一标识。。
第一进程在启动之后,处理器402检查第一进程中是否存在第一标识,也即,确定第一进程是否需要访问数据。如果处理器检查出第一进程中存在第一标识,此时第一进程启动第二进程。然后第二进程接收到来自第一进程发送的用于访问数据的请求,第二进程根据该请求从远程平台上远程拉取第一进程所要访问的数据,将拉取到的数据转换为可以由第一进程处理的数据格式的数据,然后将转换后的数据返回至第一进程,最后关闭第二进程,从而可以减小对资源的占用。
本发明实施例还提供了另一种函数调用方法。本申请实施例所提供的函数调用方法可以在移动终端、计算机终端或者类似的运算装置中执行。在图11所示的计算机终端的运行环境下,本申请可以提供了如图16所示的函数调用方法。图16是根据本发明实施例的另一种函数调用方法的流程图。如图16所示,该方法可以包括以下步骤:
步骤S1602,通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行。
在本发明上述步骤S1602提供的技术方案中,第一进程向第二进程发送调用函数的请求,第二进程从第一进程接收调用函数的请求。
步骤S1604,通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
在本发明上述步骤S1604提供的技术方案中,在通过第二进程从第一进程接收调用函数的请求之后,通过第二进程在远程平台运行函数,并将函数的运行结果提供给第一进程。通过第二进程可以将运行结果转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的运行结果,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的运行结果之后,通过第一进程将运行结果反馈给用户。
该实施例能够在第一进程中实现对远程平台运行的函数的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免了手工迁移过程中出现的错误以及风险。并且,由于本申请通过第一进程和第二进程相结合的方式实现了在大规模并行处理系统中执行函数计算逻辑,因而可以实现安全隔离的策略。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
作为一种可选地实施方式,该函数调用方法还包括:通过第二进程从第一进程接收用于运行函数的第一数据;通过所述第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。
需要说明的是,该方法与图12所示实施例的方法相同,此处不再赘述。
作为一种可选地实施方式,该函数调用方法还包括:在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
需要说明的是,该方法与图12所示实施例的方法相同,此处不再赘述。
作为一种可选地实施方式,该函数调用方法还包括:通过第二进程从第一进程接收访问存储于远程平台的第三数据的请求;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
第一进程向第二进程发送访问远程平台存储的第三数据的请求,通过第二进程接收该请求,第二进程根据该请求从远程平台获得第三数据,并将第三数据提供给第一进程。
作为一种可选地实施方式,该函数调用方法还包括:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
通过第二进程可以将第三数据转换成可以由第一进程处理的数据格式的数据,第二进程向第一进程发送已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第二进程向第一进程发送已经转换的数据之后,第一进程控制计算单元对数据进行计算。
本发明实施例还提供了另一种数据访问方法。本申请实施例所提供的数据访问方法可以在移动终端、计算机终端或者类似的运算装置中执行。在图11所示的计算机终端的运行环境下,本申请可以提供了如图17所示的数据访问方法。图17是根据本发明实施例的另一种数据访问方法的流程图。如图17所示,该方法可以包括以下步骤:
步骤S1702,通过第二进程从第一进程接收访问存储于远程平台的数据的请求。
在本发明上述步骤S1702提供的技术方案中,远程平台存储数据,第一进程向第二进程发送访问存储于远程平台的请求,通过第二进程从第一进程接收访问存储于远程平台的数据的请求。
步骤S1704,通过第二进程从远程平台获得数据,并将数据提供给第一进程。
在本发明上述步骤S1704提供的技术方案中,在通过第二进程从第一进程接收访问存储于远程平台的数据的请求之后,第二进程根据该请求从远程平台获得数据,并将获得的数据提供给第一进程。通过第二进程可以将数据转换成由第一进程处理的数据格式的数据,第一进程接收第二进程发送的已经转换的数据,然后第二进程关闭,从而可以减小对资源的占用。在第一进程得到第二进程返回的数据之后,第一进程控制计算单元对数据进行计算。
作为一种可选地实施方式,该数据访问方法还包括:在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
通过以上方式,本申请能够在第一进程中实现对远程平台上的函数的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免手工迁移过程中出现的错误以及风险。并且,由于本申请通过父进程和子进程相结合的方式实现了在MPP系统中执行函数计算逻辑,因此可以实现安全隔离的策略。可选地,上述第一进程和第二进程也可以运行在不同的装置上,比如,第一进程运行在本地机上,第二进程运行在另一计算设备上,该计算设备可以为任意具有数据处理功能以及控制逻辑的设备。该实施例的远程平台为与本地机分离的用于存储数据和/或函数,并且根据接收到的指示发送数据和/或运行函数的装置,比如,为MaxCompute平台。
下面结合一种优选的实施例对本发明实施例的技术方案进行说明。具体以远程平台为MaxCompute平台,第一进程为父进程,第二进程为子进程进行举例说明。
图18是根据本发明实施例的一种对父进程的程序进行编译的流程图。如图18所示,该方法可以包括以下步骤:
步骤S1800,开始。
用户输入父进程的程序,以便进行编译操作。
步骤S1802,Postgres语法解析。
在用户输入父进程的程序之后,对父进程的程序进行语法解析。对于本具体实施方式而言,由于父进程是基于计算引擎Seahawks的进程,因此对父进程的程序进行Postgres语法解析。
步骤S1804,判断是否存在访问MaxCompute表的指令。
在进行Postgres语法解析之后,在编译中通过语法解析确定父进程的程序中是否存在访问MaxCompute表的指令。如果判断出存在访问MaxCompute表的指令,执行步骤S1808;如果确定父进程的程序中不存在访问MaxCompute表的指令,则执行步骤S1806。
Seahawks的内部表与MaxCompute表的数据格式是不同的,并且MaxCompute表本身并不包含在Seahawks的进程中而是存储在MaxCompute平台上,因此相对于基于Seahawks的父进程而言属于外部表。因此如果父进程的程序中包含访问MaxCompute表的指令,则需要从MaxCompute平台拉取MaxCompute表,并对其进行数据格式的转换。
步骤S1806,判断是否存在调用MaxCompute UDF的指令。
在判断是否存在访问MaxCompute表的指令之后,如果判断出不存在访问MaxCompute表的指令,判断是否存在调用MaxCompute UDF的指令。如果判断出存在调用MaxCompute UDF的指令,执行步骤S1810;由于MaxCompute UDF是存储在MaxCompute平台上并且在MaxCompute平台上运行,因此相对于父进程而言,MaxCompute UDF实际上也是一个外部函数。如果确定父进程的程序中不存在调用MaxCompute UDF的指令,执行步骤S1812。编译过程结束。
步骤S1808,在该指令处添加第一标记。
判断是否存在访问MaxCompute表的指令之后,如果判断出存在访问MaxCompute表的指令,通过编译程序在访问MaxCompute表的指令处添加标记,即第一标记。然后执行步骤S1806。
步骤S1810,在该指令处添加第二标记。
在判断是否存在调用MaxCompute UDF的指令之后,如果判断出存在调用MaxCompute UDF的指令,通过编译程序在调用MaxCompute UDF的指令处添加标记,即第二标记。然后编译过程结束。
步骤S1812,结束。
下面对有关在父进程的程序中添加标记的方法进行详细说明。
图19是根据本发明实施例的一种在本地机上运行父进程和子进程的方法的流程图。如图19所示,该方法可以包括以下步骤:
步骤S1900,开始。
开始在本地机上启动父进程。
步骤S1902,判断父进程是否存在第一标记。
父进程检查在父进程中是否存在第一标记,也即,确定父进程是否需要访问MaxCompute表。如判断出父进程存在第一标记,则说明父进程需要访问MaxCompute表,此时,父进程启动子进程,通过子进程执行步骤S1912和S1914;如果判断出父进程不存在第一标记,则说明父进程不需要访问MaxCompute表,父进程直接执行步骤S1904。
步骤S1904,控制计算单元对数据进行计算。
在判断父进程是否存在第一标记之后,如果判断出父进程不存在第一标记,控制计算单元对数据进行计算。
步骤S1906,判断父进程是否存在第二标记。
在控制计算单元对数据进行计算之后,父进程检查父进程中是否存在第二标记,即确定父进程是否需要调用MaxCompute UDF。如果判断出父进程存在第二标记,则说明在进程中需要调用MaxCompute UDF,则父进程启动子进程并将调用MaxCompute UDF的请求以及相关数据发送至子进程,通过子进程执行步骤S1916至S1922;如果判断出父进程不存在第二标记,则说明父进程不需要调用MaxCompute UDF,父进程直接执行步骤S1908。
步骤S1908,执行Postgres操作。
在判断父进程是否存在第二标记之后,如果判断出父进程不存在第二标记,执行Postgres操作。
步骤S1910,返回数据。
在执行Postgres操作之后,返回数据。
步骤S1912,子进程从MaxCompute平台拉取MaxCompute表。
在判断父进程是否存在第一标记之后,如果判断出父进程存在第一标记,子进程接收到来自父进程的关于访问MaxCompute表的请求,并根据该请求从MaxCompute平台远程拉取父进程所要访问的MaxCompute表。
步骤S1914,子进程将拉取的MaxCompute表转换为Postgres数据格式,并将数据返回至父进程。
从MaxCompute平台拉取MaxCompute表之后,由于子进程从MaxCompute平台拉取的MaxCompute表的数据格式与父进程所能够处理的数据格式不一致,因此子进程将拉取到的MaxCompute表的数据转换为可以由父进程处理的Postgres数据格式,并将数据返回至父进程。然后子进程关闭。在将数据返回至父进程之后,执行步骤S1904。
步骤S1916,子程序接收来自父进程的数据。
在判断父进程是否存在第二标记之后,如果判断出父进程存在第二标记,开启子程序,子进程从父进程接收所述请求和数据。
步骤S1918,将接收的数据转换成MaxCompute的数据格式。
在开启子程序,接收来自父进程的数据之后,子进程将接收到的数据转换为可由MaxCompute平台处理的格式(例如,MaxCompute record)。
步骤S1920,在MaxCompute平台调用UDF得到处理结果。
在将接收的数据转换成MaxCompute的数据格式之后,子进程远程调用MaxCompute平台上的该UDF,从而得到处理结果。其中,子进程可以通过以下方式调用MaxCompute平台上的该UDF:向MaxCompute平台发送运行该UDF的请求以及可由MaxCompute平台处理的数据;MaxCompute平台在接收到该请求和数据后,运行该UDF,并将运行结果返回至子进程;子进程接收运行结果。
步骤S1922,将处理结果转换成Postgres数据格式。
在MaxCompute平台调用UDF得到处理结果之后,子进程将所得到的处理结果转换成可由父进程处理的Postgres数据格式,并将数据返回至父进程。然后子进程关闭。
步骤S1924,结束。
通过以上方式,本申请能够在基于Seahawks的父进程中实现对MaxCompute上的UDF的调用,并且不需要进行数据以及函数的手工迁移,从而节省成本,避免手工迁移过程中出现的错误以及风险。并且,由于本申请通过父进程和子进程相结合的方式实现了在MPP系统中执行UDF计算逻辑,因此可以实现安全隔离的策略。
此外,在本具体实施方式中,子进程每次将数据发送至父进程后都会自行关闭,等待父进程的下一次启动,从而可以减小对资源的占用。但是这只是一个可选地例子,例如子进程也可以在父进程第一次启动子进程时启动,并且在所述父进程退出时关闭,这样可以减少启动子进程的次数。
可选地,上述实施例中的父进程和子进程都是在本地机上运行的。在父进程和子进程分别在通过网络连接的本地机和计算设备上运行的情况下,在本地机上的父进程运行的过程中,当确定父进程中存在所述第一标记,即父进程需要访问MaxCompute表时,父进程将访问MaxCompute表的请求发送至计算设备,从而计算设备在收到该请求后,启动子进程并将该请求转发至子进程。
然后子进程根据该请求从MaxCompute平台远程拉取父进程所要访问的MaxCompute表,然后将拉取到的MaxCompute表的数据转换为可以由父进程处理的Postgres数据格式,并将数据返回至本地机。然后子进程关闭。本地机在接收到该数据后,将其返回至父进程。
此外,确定父进程中存在第二标记,也即,当父进程需要调用MaxCompute平台上的MaxCompute UDF时,父进程将调用MaxCompute UDF的请求以及相关数据发送至计算设备。计算设备在接收到该请求后,启动子进程,并将该请求以及相关数据转发至子进程。
然后,子进程根据该请求将接收到的数据转换为可由MaxCompute平台处理的格式。然后,子进程远程调用MaxCompute上的该UDF,从而得到处理结果。最后,子进程将所得到的处理结果转换成可由父进程处理的Postgres数据格式,并将数据返回至本地机。然后子进程关闭。本地机在接收到该数据后,将其返回至父进程。
该实施例的父进程的编译流程以及父进程和子进程运行的流程可以参考图19所示实施例中的描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述函数调用方法的函数调用装置。图20是根据本发明实施例的一种函数调用装置的示意图。如图20所示,该装置2000可以包括:第一确定模块2002和处理模块2004。
第一确定模块2002,用于确定第一进程需要调用函数,函数用于在远程平台运行。
处理模块2004,用于通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
可选地,该装置还可以包括:接收模块,用于通过第二进程从第一进程接收用于运行函数的第一数据;第一转换模块,用于通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;发送模块,用于将转换后的第一数据与运行函数的请求发送至远程平台。
可选地,该装置还可以包括:第二转换模块,用于在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
可选地,该装置还可以包括:第二确定模块,用于确定第一进程需要访问存储于远程平台的第三数据;获取模块,用于通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
可选地,该装置还可以包括:第三转换模块,用于在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
可选地,第二确定模块还可以包括:第三确定模块,用于确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问第三数据的指令处的。
可选地,第一确定模块还可以包括:第四确定模块,用于确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
此处需要说明的是,上述第一确定模块2002和处理模块2004对应于实施例2中的步骤S1202至步骤1204,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例2提供的计算机终端1100中。
根据本发明实施例,还提供了一种用于实施上述数据访问方法的数据访问装置。图21是根据本发明实施例的一种数据访问装置的示意图。如图21所示,该装置2100包括:第一确定模块2102和获取模块2104。
第一确定模块2102,用于确定第一进程需要访问存储于远程平台的数据。
获取模块2104,用于通过第二进程从远程平台获得数据,并将数据提供给第一进程。
可选地,该装置还可以包括:转换模块,用于在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
可选地,该装置还可以包括:确定模块,用于确定第一进程需要访问数据的操作包括确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
此处需要说明的是,上述第一确定模块2102和获取模块2104对应于实施例2中的步骤S1302至步骤S1304,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例2提供的计算机终端1100中。
根据本发明实施例,还提供了另一种用于实施上述函数调用方法的函数调用装置。图22是根据本发明实施例的另一种函数调用装置的示意图。如图22所示,该装置2200包括:第一确定模块2202、发送模块2204和接收模块2206。
第一确定模块2202,用于确定第一进程需要调用函数,函数用于在远程平台运行。
发送模块2204,用于通过第一进程将调用函数的请求发送至第二进程。
第一接收模块2206,用于通过第一进程从第二进程接收函数的运行结果。
可选地,该装置还可以包括:第二确定模块,用于确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送至第二进程;第二接收模块,用于通过第一进程从第二进程接收数据。
可选地,第二确定模块还可以包括:第三确定模块,用于确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
可选地,第一确定模块还可以包括:第四确定模块,用于确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
此处需要说明的是,上述第一确定模块2202、发送模块2204和接收模块2206对应于实施例2中的步骤S1402至步骤S1406,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例2提供的计算机终端1100中。
根据本发明实施例,还提供了另一种用于实施上述数据访问方法的数据访问装置。图23是根据本发明实施例的另一种函数调用装置的示意图。如图23所示,该装置2300包括:第一确定模块2302、发送模块2304和接收模块2304。
第一确定模块2302,用于确定第一进程需要访问存储于远程平台的数据。
发送模块2304,用于通过第一进程将访问数据的请求发送给第二进程。
接收模块2306,用于通过第一进程从第二进程接收数据。
可选地,第一确定模块还可以包括第二确定模块,用于确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
此处需要说明的是,上述第一确定模块2302、发送模块2304和接收模块2304对应于实施例2中的步骤S1502至步骤S1506,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例2提供的计算机终端1100中。
根据本发明实施例,还提供了另一种用于实施上述函数调用方法的函数调用装置。图24是根据本发明实施例的另一种函数调用装置的示意图。如图24所示,该装置2400包括:第一接收模块2402和处理模块2404。
第一接收模块2402,用于通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行。
处理模块2404,用于通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
可选地,该装置还可以包括:第二接收模块,用于通过第二进程从第一进程接收用于运行函数的第一数据;第一转换模块,用于通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;运行模块,用于通过第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。
可选地,该装置还可以包括:第二转换模块,用于在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
可选地,该装置还可以包括:第三接收模块,用于通过第二进程从第一进程接收访问存储于远程平台的第三数据的请求;获取模块,用于通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
可选地,该装置还可以包括:第三转换模块,用于在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
此处需要说明的是,上述第一接收模块2402和处理模块2404对应于实施例2中的步骤S1602至步骤S1606,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例2提供的计算机终端1100中。
根据本发明实施例,还提供了另一种用于实施上述数据访问方法的数据访问装置。图25是根据本发明实施例的另一种数据访问装置的示意图。如图25所示,该装置2500包括:接收模块2502和获取模块2504。
接收模块2502,用于通过第二进程从第一进程接收访问存储于远程平台的数据的请求。
获取模块2504,用于通过第二进程从远程平台获得数据,并将数据提供给第一进程。
可选地,该装置还可以包括:转换模块,用于在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
此处需要说明的是,上述接收模块2502和获取模块2504对应于实施例2中的步骤S1702至S1704,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例2提供的计算机终端1100中。
实施例4
本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,图26是根据本发明实施例的一种计算机终端的结构框图。如图26所示,该计算机终端A可以包括:一个或多个(图中仅示出一个)处理器2602、存储器2604、以及传输装置2606。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的安全函数调用方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在本实施例中,上述计算机终端可以执行应用程序的函数调用方法中以下步骤的程序代码:确定第一进程需要调用在远程平台运行的函数;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定第一进程需要调用函数,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
可选地,上述处理器还可以执行如下步骤的程序代码:通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;以及通过第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。
可选地,上述处理器还可以执行如下步骤的程序代码:在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程需要访问存储于远程平台的第三数据;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
可选地,上述处理器还可以执行如下步骤的程序代码:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问第三数据的指令处的。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
在本实施例中,上述计算机终端可以执行应用程序的数据访问方法中以下步骤的程序代码:确定第一进程需要访问存储于远程平台的数据;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定第一进程需要访问存储于远程平台的数据;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
可选地,上述处理器还可以执行如下步骤的程序代码:在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
在本实施例中,上述计算机终端可以执行应用程序的函数调用方法中以下步骤的程序代码:确定第一进程需要调用函数,函数用于在远程平台运行;通过第一进程将调用函数的请求发送至第二进程;以及通过第一进程从第二进程接收函数的运行结果。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定第一进程需要调用在远程平台运行的函数;通过第一进程将调用函数的请求发送至第二进程;以及通过第一进程从第二进程接收函数的运行结果。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送至第二进程;以及通过第一进程从第二进程接收数据。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
在本实施例中,上述计算机终端可以执行应用程序的数据访问方法中以下步骤的程序代码:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送给第二进程;以及通过第一进程从第二进程接收数据。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送给第二进程;以及通过第一进程从第二进程接收数据。
可选地,上述处理器还可以执行如下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
在本实施例中,上述计算机终端可以执行应用程序的函数调用方法中以下步骤的程序代码:通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
可选地,上述处理器还可以执行如下步骤的程序代码:通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;以及通过第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。
可选地,上述处理器还可以执行如下步骤的程序代码:在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
可选地,上述处理器还可以执行如下步骤的程序代码:通过第二进程从第一进程接收访问存储于远程平台的第三数据的请求;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
可选地,上述处理器还可以执行如下步骤的程序代码:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
在本实施例中,上述计算机终端可以执行应用程序的数据访问方法中以下步骤的程序代码:通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
可选地,上述处理器还可以执行如下步骤的程序代码:在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
采用本发明实施例,提供了一种函数调用方法。采用确定第一进程需要调用在远程平台运行的函数;以及通过第二进程在远程平台运行函数,并将函数的运行结果提供给第一进程,能够在基于Seahawks等计算引擎的进程中实现对MaxCompute等数据处理平台上的UDF的调用,还可以在基于Seahawks等计算引擎的进程中实现对MaxCompute等数据处理平台上的数据的访问,并且不需要进行数据以及函数的手工迁移,从而节省了成本,避免了手工迁移过程中出现的错误以及风险,进而解决了如何通过基于Seahawks等计算引擎的进程调用MaxCompute等数据处理平台上的UDF以及访问MaxCompute等数据处理平台上的数据的技术问题。
本领域普通技术人员可以理解,图26所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图26其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图26中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图26所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例2所提供的函数调用方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定第一进程需要调用函数,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
存储介质还被设置为存储用于执行以下步骤的程序代码:通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程将第一数据转换为能够由远程平台处理的数据格式的数据;以及通过第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。
存储介质还被设置为存储用于执行以下步骤的程序代码:在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程需要访问存储于远程平台的第三数据;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
存储介质还被设置为存储用于执行以下步骤的程序代码:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问第三数据的指令处的。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
可选地,在本实施例中,上述存储介质可以用于保存上述实施例2所提供的数据访问方法所执行的程序代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定第一进程需要访问存储于远程平台的数据;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
存储介质还被设置为存储用于执行以下步骤的程序代码:在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
可选地,在本实施例中,上述存储介质可以用于保存上述实施例2所提供的函数调用方法所执行的程序代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定第一进程需要调用函数,函数用于在远程平台运行;通过第一进程将调用函数的请求发送至第二进程;以及通过第一进程从第二进程接收函数的运行结果。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送至第二进程;以及通过第一进程从第二进程接收数据。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程存在第二标识,其中第二标识是在对第一进程的程序进行语法解析时,添加在调用函数的指令处的。
可选地,在本实施例中,上述存储介质可以用于保存上述实施例2所提供的数据访问方法所执行的程序代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定第一进程需要访问存储于远程平台的数据;通过第一进程将访问数据的请求发送给第二进程;以及通过第一进程从第二进程接收数据。
存储介质还被设置为存储用于执行以下步骤的程序代码:确定第一进程中存在第一标识,其中第一标识是在对第一进程的程序进行语法解析时,添加在访问数据的指令处的。
可选地,在本实施例中,上述存储介质可以用于保存上述实施例2所提供的函数调用方法所执行的程序代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过第二进程从第一进程接收调用函数的请求,函数用于在远程平台运行;以及通过第二进程执行以下操作:向远程平台发送运行函数的请求;从远程平台接收函数的运行结果;以及将函数的运行结果提供给第一进程。
存储介质还被设置为存储用于执行以下步骤的程序代码:通过第二进程从第一进程接收用于运行函数的第一数据;通过第二进程,将转换后的第一数据与运行函数的请求发送至远程平台。
存储介质还被设置为存储用于执行以下步骤的程序代码:在将运行结果提供给第一进程之前,通过第二进程将作为运行结果的第二数据转换为能够由第一进程处理的数据格式的数据。
存储介质还被设置为存储用于执行以下步骤的程序代码:通过第二进程从第一进程接收访问存储于远程平台的第三数据的请求;以及通过第二进程从远程平台获得第三数据,并将第三数据提供给第一进程。
存储介质还被设置为存储用于执行以下步骤的程序代码:在将第三数据提供给第一进程之前,通过第二进程将第三数据转换为能够由第一进程处理的数据格式的数据。
可选地,在本实施例中,上述存储介质可以用于保存上述实施例2所提供的数据访问方法所执行的程序代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及通过第二进程从远程平台获得数据,并将数据提供给第一进程。
存储介质还被设置为存储用于执行以下步骤的程序代码:在将数据提供给第一进程之前,通过第二进程将数据转换为能够由第一进程处理的数据格式的数据。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (39)
1.一种函数调用方法,其特征在于,包括:
确定第一进程需要调用函数,所述函数用于在远程平台运行;以及
通过第二进程执行以下操作:
向所述远程平台发送运行所述函数的请求;
从所述远程平台接收所述函数的运行结果;以及
将所述函数的运行结果提供给所述第一进程。
2.根据权利要求1所述的方法,其特征在于,还包括:
通过所述第二进程从所述第一进程接收用于运行所述函数的第一数据;
通过所述第二进程将所述第一数据转换为能够由所述远程平台处理的数据格式的数据;以及
通过所述第二进程,将转换后的所述第一数据与运行所述函数的所述请求发送至所述远程平台。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
在将所述运行结果提供给所述第一进程之前,通过所述第二进程将作为所述运行结果的第二数据转换为能够由所述第一进程处理的数据格式的数据。
4.根据权利要求1所述的方法,其特征在于,还包括:
确定所述第一进程需要访问存储于所述远程平台的第三数据;以及
通过所述第二进程从所述远程平台获得所述第三数据,并将所述第三数据提供给所述第一进程。
5.根据权利要求4所述的方法,其特征在于,还包括:
在将所述第三数据提供给所述第一进程之前,通过所述第二进程将所述第三数据转换为能够由所述第一进程处理的数据格式的数据。
6.根据权利要求4所述的方法,其特征在于,确定所述第一进程需要访问所述第三数据的操作包括:
确定所述第一进程中存在第一标识,其中所述第一标识是在对所述第一进程的程序进行语法解析时,添加在访问所述第三数据的指令处的。
7.根据权利要求1所述的方法,其特征在于,确定所述第一进程需要调用所述函数的操作包括:
确定所述第一进程存在第二标识,其中所述第二标识是在对所述第一进程的程序进行语法解析时,添加在调用所述函数的指令处的。
8.一种数据访问方法,其特征在于,包括:
确定第一进程需要访问存储于远程平台的数据;以及
通过第二进程从所述远程平台获得所述数据,并将所述数据提供给所述第一进程。
9.根据权利要求8所述的方法,其特征在于,还包括:
在将所述数据提供给所述第一进程之前,通过所述第二进程将所述数据转换为能够由所述第一进程处理的数据格式的数据。
10.根据权利要求8所述的方法,其特征在于,确定所述第一进程需要访问所述数据的操作包括:
确定所述第一进程中存在第一标识,其中所述第一标识是在对所述第一进程的程序进行语法解析时,添加在访问所述数据的指令处的。
11.一种函数调用方法,其特征在于,包括:
确定第一进程需要调用函数,所述函数用于在远程平台运行;
通过所述第一进程将调用所述函数的请求发送至第二进程;以及
通过所述第一进程从所述第二进程接收所述函数的运行结果。
12.根据权利要求11所述的方法,其特征在于,还包括:
确定所述第一进程需要访问存储于所述远程平台的数据;
通过所述第一进程将访问所述数据的请求发送至所述第二进程;以及
通过所述第一进程从所述第二进程接收所述数据。
13.根据权利要求12所述的方法,其特征在于,确定所述第一进程需要访问所述数据的操作包括:
确定所述第一进程中存在第一标识,其中所述第一标识是在对所述第一进程的程序进行语法解析时,添加在访问所述数据的指令处的。
14.根据权利要求11所述的方法,其特征在于,确定所述第一进程需要调用所述函数的操作包括:
确定所述第一进程存在第二标识,其中所述第二标识是在对所述第一进程的程序进行语法解析时,添加在调用所述函数的指令处的。
15.一种数据访问方法,其特征在于,包括:
确定第一进程需要访问存储于远程平台的数据;
通过所述第一进程将访问所述数据的请求发送给第二进程;以及
通过所述第一进程从所述第二进程接收所述数据。
16.根据权利要求15所述的方法,其特征在于,确定所述第一进程需要访问所述数据的操作包括:
确定所述第一进程中存在第一标识,其中所述第一标识是在对所述第一进程的程序进行语法解析时,添加在访问所述数据的指令处的。
17.一种函数调用方法,其特征在于,包括:
通过第二进程从第一进程接收调用函数的请求,所述函数用于在远程平台运行;以及
通过第二进程执行以下操作:
向所述远程平台发送运行所述函数的请求;
从所述远程平台接收所述函数的运行结果;以及
将所述函数的运行结果提供给所述第一进程。
18.根据权利要求17所述的方法,其特征在于,还包括:
通过所述第二进程从所述第一进程接收用于运行所述函数的第一数据;
通过所述第二进程将所述第一数据转换为能够由所述远程平台处理的数据格式的数据;以及
通过所述第二进程,将转换后的所述第一数据与运行所述函数的所述请求发送至所述远程平台。
19.根据权利要求17或18所述的方法,其特征在于,还包括:
在将所述运行结果提供给所述第一进程之前,通过所述第二进程将作为所述运行结果的第二数据转换为能够由所述第一进程处理的数据格式的数据。
20.根据权利要求17所述的方法,其特征在于,还包括:
通过所述第二进程从所述第一进程接收访问存储于所述远程平台的第三数据的请求;以及
通过所述第二进程从所述远程平台获得所述第三数据,并将所述第三数据提供给所述第一进程。
21.根据权利要求20所述的方法,其特征在于,所述方法还包括:
在将所述第三数据提供给所述第一进程之前,通过所述第二进程将所述第三数据转换为能够由所述第一进程处理的数据格式的数据。
22.一种数据访问方法,其特征在于,包括:
通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及
通过所述第二进程从所述远程平台获得所述数据,并将所述数据提供给所述第一进程。
23.根据权利要求22所述的方法,其特征在于,还包括:
在将所述数据提供给所述第一进程之前,通过所述第二进程将所述数据转换为能够由所述第一进程处理的数据格式的数据。
24.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1-7、11-14以及至17-21中任意一项所述的函数调用方法。
25.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求8-10、15-16以及至22-23中任意一项所述的数据访问方法。
26.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1-7、11-14以及至17-21中任意一项所述的函数调用方法。
27.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求8-10、15-16以及至22-23中任意一项所述的数据访问方法。
28.一种函数调用系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
确定第一进程需要调用函数,所述函数用于在远程平台运行;以及
通过第二进程执行以下操作:
向所述远程平台发送运行所述函数的请求;
从所述远程平台接收所述函数的运行结果;以及
将所述函数的运行结果提供给所述第一进程。
29.一种数据访问系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
确定第一进程需要访问存储于远程平台的数据;以及
通过第二进程从所述远程平台获得所述数据,并将所述数据提供给所述第一进程。
30.一种函数调用系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
确定第一进程需要调用函数,所述函数用于在所述远程平台运行;
通过所述第一进程将调用所述函数的请求发送至第二进程;以及
通过所述第一进程从所述第二进程接收所述函数的运行结果。
31.一种数据访问系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
确定第一进程需要访问存储于远程平台的数据;
通过所述第一进程将访问所述数据的请求发送给第二进程;以及
通过所述第一进程从所述第二进程接收所述数据。
32.一种函数调用系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
通过第二进程从第一进程接收调用函数的请求,所述函数用于在远程平台运行;以及
通过第二进程执行以下操作:
向所述远程平台发送运行所述函数的请求;
从所述远程平台接收所述函数的运行结果;以及
将所述函数的运行结果提供给所述第一进程。
33.一种数据访问系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及
通过所述第二进程从所述远程平台获得所述数据,并将所述数据提供给所述第一进程。
34.一种函数调用装置,其特征在于,包括:
第一确定模块,用于确定第一进程需要调用函数,所述函数用于在远程平台运行;以及
处理模块,用于通过第二进程执行以下操作:向所述远程平台发送运行所述函数的请求;从所述远程平台接收所述函数的运行结果;以及将所述函数的运行结果提供给所述第一进程。
35.一种数据访问装置,其特征在于,包括:
第一确定模块,用于确定第一进程需要访问存储于远程平台的数据;以及
获取模块,用于通过第二进程从所述远程平台获得所述数据,并将所述数据提供给所述第一进程。
36.一种函数调用装置,其特征在于,包括:
第一确定模块,用于确定第一进程需要调用函数,所述函数用于在远程平台运行;
发送模块,用于通过所述第一进程将调用所述函数的请求发送至第二进程;以及
接收模块,用于通过所述第一进程从所述第二进程接收所述函数的运行结果。
37.一种数据访问装置,其特征在于,包括:
第一确定模块,用于确定第一进程需要访问存储于远程平台的数据;
发送模块,用于通过所述第一进程将访问所述数据的请求发送给第二进程;以及
接收模块,用于通过所述第一进程从所述第二进程接收所述数据。
38.一种函数调用装置,其特征在于,包括:
第一接收模块,用于通过第二进程从第一进程接收调用函数的请求,所述函数用于在远程平台运行;以及
处理模块,用于通过第二进程执行以下操作:向所述远程平台发送运行所述函数的请求;从所述远程平台接收所述函数的运行结果;以及将所述函数的运行结果提供给所述第一进程。
39.一种数据访问装置,其特征在于,包括:
接收模块,用于通过第二进程从第一进程接收访问存储于远程平台的数据的请求;以及
获取模块,用于通过所述第二进程从所述远程平台获得所述数据,并将所述数据提供给所述第一进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710755550.8A CN109426571B (zh) | 2017-08-28 | 2017-08-28 | 函数调用和数据访问的方法、系统、存储介质、处理器和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710755550.8A CN109426571B (zh) | 2017-08-28 | 2017-08-28 | 函数调用和数据访问的方法、系统、存储介质、处理器和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109426571A true CN109426571A (zh) | 2019-03-05 |
CN109426571B CN109426571B (zh) | 2022-05-13 |
Family
ID=65501977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710755550.8A Active CN109426571B (zh) | 2017-08-28 | 2017-08-28 | 函数调用和数据访问的方法、系统、存储介质、处理器和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109426571B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113971192A (zh) * | 2021-10-22 | 2022-01-25 | 北京火山引擎科技有限公司 | 数据处理方法、装置、可读介质及电子设备 |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1466051A (zh) * | 2002-07-03 | 2004-01-07 | 联想(北京)有限公司 | 实现不同系统之间数据交互的方法 |
CN101763286A (zh) * | 2008-12-22 | 2010-06-30 | 国际商业机器公司 | 用于在混合系统中跨平台转移工作负载的系统和方法 |
CN101764843A (zh) * | 2009-12-28 | 2010-06-30 | 福建星网锐捷网络有限公司 | 远程过程调用的处理方法、系统及客户端、服务器 |
CN102340489A (zh) * | 2010-07-20 | 2012-02-01 | 阿里巴巴集团控股有限公司 | 一种服务器之间的数据传输方法和服务器 |
CN103197979A (zh) * | 2012-01-04 | 2013-07-10 | 阿里巴巴集团控股有限公司 | 一种用于实现在进程间进行数据交互访问的方法及其装置 |
CN103262057A (zh) * | 2010-10-01 | 2013-08-21 | Flex Electronics ID Co.,Ltd. | 跨环境通信框架 |
CN103262025A (zh) * | 2010-10-01 | 2013-08-21 | Flex Electronics ID Co.,Ltd. | 使用应用空间api的跨环境通信 |
US20140068579A1 (en) * | 2012-08-28 | 2014-03-06 | International Business Machines Corporation | Java native interface array handling in a distributed java virtual machine |
CN103995736A (zh) * | 2011-06-17 | 2014-08-20 | 天津书生软件技术有限公司 | 一种传递共享内存的方法和装置 |
CN104272788A (zh) * | 2012-05-14 | 2015-01-07 | 高通股份有限公司 | 在移动计算装置中传达行为信息 |
CN104615487A (zh) * | 2015-01-12 | 2015-05-13 | 中国科学院计算机网络信息中心 | 并行任务优化系统和方法 |
CN104615489A (zh) * | 2015-01-22 | 2015-05-13 | 江苏大烨智能电气股份有限公司 | 一种多节点数据交互的实现方法 |
CN104769552A (zh) * | 2012-11-09 | 2015-07-08 | 高通股份有限公司 | 向辅助处理器暴露主机操作系统服务 |
US20150254098A1 (en) * | 2014-03-05 | 2015-09-10 | Fujitsu Limited | Transaction processing apparatus and distributed processing system |
US20150317193A1 (en) * | 2014-04-30 | 2015-11-05 | Fujitsu Limited | Distributed processing apparatus, distributed processing system, and storage medium |
CN105431827A (zh) * | 2013-08-07 | 2016-03-23 | 高通股份有限公司 | 针对异构多处理器系统中的共享存储区域的动态地址协商 |
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN106371899A (zh) * | 2015-07-22 | 2017-02-01 | 无锡天脉聚源传媒科技有限公司 | 一种线程参数的处理方法及装置 |
CN106713238A (zh) * | 2015-11-16 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 远程过程调用方法、装置及系统 |
CN106874797A (zh) * | 2017-03-01 | 2017-06-20 | 中天安泰(北京)信息技术有限公司 | 一种计算设备配置方法及计算设备配置装置 |
US9723107B1 (en) * | 2012-07-31 | 2017-08-01 | Niantic, Inc. | Executing cross-cutting concerns for client-server remote procedure calls |
-
2017
- 2017-08-28 CN CN201710755550.8A patent/CN109426571B/zh active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1466051A (zh) * | 2002-07-03 | 2004-01-07 | 联想(北京)有限公司 | 实现不同系统之间数据交互的方法 |
CN101763286A (zh) * | 2008-12-22 | 2010-06-30 | 国际商业机器公司 | 用于在混合系统中跨平台转移工作负载的系统和方法 |
CN101764843A (zh) * | 2009-12-28 | 2010-06-30 | 福建星网锐捷网络有限公司 | 远程过程调用的处理方法、系统及客户端、服务器 |
CN102340489A (zh) * | 2010-07-20 | 2012-02-01 | 阿里巴巴集团控股有限公司 | 一种服务器之间的数据传输方法和服务器 |
CN103262057A (zh) * | 2010-10-01 | 2013-08-21 | Flex Electronics ID Co.,Ltd. | 跨环境通信框架 |
CN103262025A (zh) * | 2010-10-01 | 2013-08-21 | Flex Electronics ID Co.,Ltd. | 使用应用空间api的跨环境通信 |
CN103995736A (zh) * | 2011-06-17 | 2014-08-20 | 天津书生软件技术有限公司 | 一种传递共享内存的方法和装置 |
CN103197979A (zh) * | 2012-01-04 | 2013-07-10 | 阿里巴巴集团控股有限公司 | 一种用于实现在进程间进行数据交互访问的方法及其装置 |
CN104272788A (zh) * | 2012-05-14 | 2015-01-07 | 高通股份有限公司 | 在移动计算装置中传达行为信息 |
US9723107B1 (en) * | 2012-07-31 | 2017-08-01 | Niantic, Inc. | Executing cross-cutting concerns for client-server remote procedure calls |
US20140068579A1 (en) * | 2012-08-28 | 2014-03-06 | International Business Machines Corporation | Java native interface array handling in a distributed java virtual machine |
CN104769552A (zh) * | 2012-11-09 | 2015-07-08 | 高通股份有限公司 | 向辅助处理器暴露主机操作系统服务 |
CN105431827A (zh) * | 2013-08-07 | 2016-03-23 | 高通股份有限公司 | 针对异构多处理器系统中的共享存储区域的动态地址协商 |
US20150254098A1 (en) * | 2014-03-05 | 2015-09-10 | Fujitsu Limited | Transaction processing apparatus and distributed processing system |
US20150317193A1 (en) * | 2014-04-30 | 2015-11-05 | Fujitsu Limited | Distributed processing apparatus, distributed processing system, and storage medium |
CN104615487A (zh) * | 2015-01-12 | 2015-05-13 | 中国科学院计算机网络信息中心 | 并行任务优化系统和方法 |
CN104615489A (zh) * | 2015-01-22 | 2015-05-13 | 江苏大烨智能电气股份有限公司 | 一种多节点数据交互的实现方法 |
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN106371899A (zh) * | 2015-07-22 | 2017-02-01 | 无锡天脉聚源传媒科技有限公司 | 一种线程参数的处理方法及装置 |
CN106713238A (zh) * | 2015-11-16 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 远程过程调用方法、装置及系统 |
CN106874797A (zh) * | 2017-03-01 | 2017-06-20 | 中天安泰(北京)信息技术有限公司 | 一种计算设备配置方法及计算设备配置装置 |
Non-Patent Citations (1)
Title |
---|
陈洛资: "一个以UNIX为基础的局部网络操作系统", 《长沙铁道学院学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113971192A (zh) * | 2021-10-22 | 2022-01-25 | 北京火山引擎科技有限公司 | 数据处理方法、装置、可读介质及电子设备 |
WO2023065937A1 (zh) * | 2021-10-22 | 2023-04-27 | 北京火山引擎科技有限公司 | 数据处理方法、装置、可读介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109426571B (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Varghese et al. | Challenges and opportunities in edge computing | |
CN105700961B (zh) | 业务容器创建方法及装置 | |
CN106301829B (zh) | 一种网络业务扩容的方法和装置 | |
CN104410672B (zh) | 网络功能虚拟化应用升级的方法、转发业务的方法及装置 | |
CN106534338B (zh) | 一种云机器人实现方法 | |
Chowdhury et al. | Platforms and testbeds for experimental evaluation of cognitive ad hoc networks | |
CN109391649A (zh) | 页面加载的方法、装置和系统 | |
CN103679401B (zh) | 一种流程控制方法、服务器、客户端及系统 | |
EP2902901A1 (en) | Development, compiling and debugging method and device for application | |
CN108337314B (zh) | 分布式系统、用于主服务器的信息处理方法和装置 | |
CN110535679A (zh) | 切片的管理方法、架构、网络切片销售平台和管理系统 | |
CN103176774A (zh) | 应用程序的编译方法、装置以及系统 | |
CN102916848B (zh) | 一种基于脚本技术的以太网接口设备的自动测试方法 | |
CN106155264B (zh) | 管理存储子系统的电力消耗的计算机方法与计算机系统 | |
Neema et al. | Simulation integration platforms for cyber-physical systems | |
CN107632827A (zh) | 应用的安装包的生成方法及装置 | |
CN104516809A (zh) | 一种自动化测试系统及方法 | |
CN106878562A (zh) | 控制wifi功能开关的方法及装置 | |
Nüst et al. | The rockerverse: packages and applications for containerization with r | |
CN109426571A (zh) | 函数调用和数据访问的方法、系统、存储介质、处理器和装置 | |
CN107347093A (zh) | 用于分布式服务器系统的配置方法和装置 | |
CN109039683A (zh) | 一种业务编排方法和系统 | |
CN103023740B (zh) | 一种信息交互总线系统及电力数据传输方法 | |
CN103150952B (zh) | 可重构的eda实验平台 | |
CN109460280B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |