本申请涉及计算机领域,具体涉及分布式计算领域,尤其涉及用于执行分布式计算任务的方法和装置。
背景技术:
::在分布式计算程序的开发中,用户(例如编写分布式计算程序的工程师)可以利用分布式计算框架提供的接口,编写分布式计算程序。现有的分布式计算框架提供的接口主要包括原生类接口(例如,用于大规模数据集的并行运算的编程模型MapReduce)、类似结构化查询语言(SQL-Like,StructuredQueryLanguageLike)类接口(例如,建立在由Apache基金会所开发的分布式系统基础架构Hadoop上的数据仓库基础构架Hive)和弹性分布式数据集(RDD,ResilientDistributedDatasets)类接口(例如,由加州大学伯克利分校AMP(算法机器和人,AlgorithmsMachinesandPeople)实验室开发的用来构建大型的、低延迟的数据分析应用程序的开源集群计算环境Spark)三种类型。其中,原生类接口用配置的方式将多个不同类型的算子拼接成一个有向无环图,用以表达一个完整的分布式计算需求;SQL-Like类接口则是用SQL(结构化查询语言,StructuredQueryLanguageLike)的形式来表达一个分布式计算需求,把数据都抽象成一张张表格,每个分布式计算需求都转化成一个SQL检索;RDD类接口则是以数据为中心,整个计算需求被描述为由一个分布式数据集进行一个变换产生一个新的分布式数据集,继续变换,直到产生最终需要的分布式数据集为止这样一个过程。然而,现有的分布式计算框架普遍存在接口使用较为不便,尤其是缺少嵌套数据集的概念,导致许多逻辑表达起来较为复杂(特别是对分组逻辑的表达),代码较难重用的问题。以SQL-Like类接口为例,由于SQL-Like类接口中缺少嵌套数据集的概念,导致无法描述一些计算需求。以一个常见的计算需求为例:将数据按某个字段分组,在每个分组上取该分组字段取值最大的前10条记录为例,当表达式为“selectfield_1,field_2fromtable_1groupbyfield1orderbyfield_2desclimit10”时,实际上是在全局取出前10条记录,而非每个分组上取出前10条记录;当表达式为“selectfield_1,field_2fromtable_1groupbyfield1limit10orderbyfield_2desc”时,该表达式不符合SQL语法,从而导致SQL-Like类接口无法描述一些常见的计算需求。技术实现要素:本申请的目的在于提出一种改进的用于执行分布式计算任务的方法和装置,来解决以上
背景技术:
:部分提到的技术问题。第一方面,本申请提供了一种用于执行分布式计算任务的方法,所述用于执行分布式计算任务的方法包括:解析分布式计算任务的表达式,得到算子关键字,所述算子关键字包括以下至少一项:分组算子关键字、操作算子关键字、遍历算子关键字、值获取算子关键字、键值对获取算子关键字、文件读取算子关键字、内存读取算子关键字、文件写入算子关键字、内存写入算子关键字;利用所述算子关键字对应的算子,基于所述算子的输入参数执行所述分布式计算任务,其中,所述算子的输入参数包括以下至少一项:分布式存储的由至少一个数据元素组成的分布式数据集、分布式存储的由至少一对键值对组成的分布式键值对集合,所述分布式键值对集合中键值对的值为分布式数据集或分布式键值对集合。第二方面,本申请提供了一种用于执行分布式计算任务的装置,所述用于执行分布式计算任务的装置包括:表达式解析单元,配置用于解析分布式计算任务的表达式,得到算子关键字,所述算子关键字包括以下至少一项:分组算子关键字、操作算子关键字、遍历算子关键字、值获取算子关键字、键值对获取算子关键字、文件读取算子关键字、内存读取算子关键字、文件写入算子关键字、内存写入算子关键字;执行单元,配置用于利用所述算子关键字对应的算子,基于所述算子的输入参数执行所述分布式计算任务,其中,所述算子的输入参数包括以下至少一项:分布式存储的由至少一个数据元素组成的分布式数据集、分布式存储的由至少一对键值对组成的分布式键值对集合,所述分布式键值对集合中键值对的值为分布式数据集或分布式键值对集合。本申请提供的用于执行分布式计算任务的方法和装置,通过解析分布式计算任务的表达式,得到算子关键字,再利用算子关键字对应的算子,基于算子的输入参数执行分布式计算任务,其中,算子的输入参数包括以下至少一项:分布式存储的由至少一个数据元素组成的分布式数据集、分布式存储的由至少一对键值对组成的分布式键值对集合,分布式键值对集合中键值对的值为分布式数据集或分布式键值对集合。从而实现了对嵌套数据集的操作,使得算子既可以作用于分布式数据集上,也可以作用于对分布式数据集进行分组后所得到的分布式键值对集合中的每个键值对中的值所对应的分布式数据集上,从而支持对诸如分布式数据集以及分布式数据集分组后的分组数据进行操作的分布式计算任务,实现了代码可重用。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2是根据本申请的用于执行分布式计算任务的方法的一个实施例的流程图;图3是根据本申请的用于执行分布式计算任务的装置的一个实施例的结构示意图;图4是适于用来实现本申请实施例的分布式计算设备的计算机系统的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了可以应用本申请的用于执行分布式计算任务的方法或装置的实施例的示例性系统架构100。如图1所示,系统架构100可以包括分布式计算设备101、102、103、105和网络104。网络104用以在分布式计算设备101、102、103、105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。用户可以使用分布式计算设备101、102、103、105中的任一设备通过网络104与其他分布式计算设备交互,以接收或发送消息等。分布式计算设备101、102、103、105上可以安装有各种客户端应用,例如分布式计算应用、数据库应用等。分布式计算设备101、102、103、105可以是具有处理器并提供分布式计算服务的各种电子设备,包括但不限于膝上型便携计算机和台式计算机等等。例如分布式计算设备105可以将其上运行的分布式计算任务分配给分布式计算设备101、102、103分别执行部分计算任务,并接收分布式设备101、102、103分别返回的计算结果,再对接收到的各个结果进行汇总。分布式计算设备101、102、103、105上还可以存储有分布式计算任务所需的各种数据。需要说明的是,本申请实施例所提供的用于执行分布式计算任务的方法可以由分布式计算设备101、102、103、105中任一设备执行,相应地,用于执行分布式计算任务的装置可以设置于分布式计算设备101、102、103、105中任一设备中。应该理解,图1中的分布式计算设备和网络的数目仅仅是示意性的。根据实现需要,可以具有任意数目的分布式计算设备和网络。继续参考图2,其示出了根据本申请的用于执行分布式计算任务方法的一个实施例的流程图200。所述的用于执行分布式计算任务的方法,包括以下步骤:步骤201,解析分布式计算任务的表达式,得到算子关键字。在本实施例中,用于执行分布式计算任务的方法运行于其上的电子设备(例如图1所示的分布式计算设备)可以解析分布式计算任务的表达式,得到算子关键字。在本实施例中,算子关键字可以包括以下至少一项:分组算子关键字、操作算子关键字、遍历算子关键字、值获取算子关键字、键值对获取算子关键字、文件读取算子关键字、内存读取算子关键字、文件写入算子关键字、内存写入算子关键字。在本实施例中,分布式计算任务是把一个大计算任务拆分成多个小计算任务分布到不同的计算机上去执行,然后再将各个计算机执行小任务的结果进行汇总。通常,分布式计算任务都是通过表达式(即,使用分布式计算框架提供的接口编写的代码)来进行表示的。在分布式计算任务的表达式中可以包含算子关键字,例如,算子关键字可以是分布式计算框架提供的接口中的函数名。每个算子关键字都有对应的算子,该算子表示对数据的操作,例如,算子可以是分布式计算框架提供的接口中的函数。作为示例,分组算子关键字“group_by”对应的分组算子可以实现对分组算子作用于的分布式数据集进行分组操作;操作算子关键字“count”对应的操作算子可以实现对操作算子关键字“count”作用于的分布式数据集内的元素个数进行计数;操作算子关键字“kmeans”对应的操作算子可以实现对操作算子关键字“kmeans”作用于的分布式数据集进行K均值聚类操作。步骤202,利用算子关键字对应的算子,基于算子的输入参数执行分布式计算任务。在本实施例中,基于步骤201中得到的算子关键字,上述电子设备可以利用算子关键字对应的算子,基于算子的输入参数执行分布式计算任务。由于算子表示对数据的操作,算子的输入参数就是算子要操作的数据。在本实施例中,算子的输入参数可以包括以下至少一项:分布式存储的由至少一个数据元素组成的分布式数据集、分布式存储的由至少一对键值对组成的分布式键值对集合,其中,分布式键值对集合中键值对的值为分布式数据集或分布式键值对集合。在本实施例中,数据元素可以是能够被序列化的任何数据类型,例如,整型、浮点型、字符串等。分布式数据集可以是分布式存储在至少一台计算机中的数据元素的集合。分布式数据集中的数据元素之间没有顺序关系,数据类型也可以不同。分布式数据集中不同数据元素的取值可以相同(即,分布式数据集的数据元素可重复)。当然,只有一个数据元素的分布式数据集是数据元素,也是一种特殊的分布式数据集。分布式键值对集合中的键值对之间没有顺序关系。分布式键值对集合中不同键值对的取值可以相同(即,分布式键值对集合的键值对可重复)。分布式键值对中的值可以为分布式数据集或分布式键值对集合。在本实施例的一些可选的实现方式中,还可以利用算子关键字对应的算子,基于算子的输入参数和输出参数执行分布式计算任务。算子除了可以对算子的输入参数进行操作外,算子还可以将对算子的输入参数进行操作后的结果返回给算子的输出参数。算子的输出参数可以是分布式数据集或者分布式键值对集合。作为示例,在本实施例中,用PCollection表示分布式数据集,用PObject表示只有一个数据元素的分布式数据集,用PTable表示分布式键值对集合。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到分组算子关键字、用于指示上述分组算子关键字对应的分组算子作用于的分布式数据集的被分组分布式数据集关键字和用于指示对上述被分组分布式数据集关键字所指示的分布式数据集进行分组的分组依据的分组条件关键字;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:对上述被分组分布式数据集关键字所指示的分布式数据集按照上述分组条件关键字进行分组,得到分组数据,将上述分组条件关键字和上述分组数据组成键值对以得到分布式键值对集合。作为示例,对于一个包括数据元素[1,2,3,4,5,6]的分布式数据集pollection,执行表达式“pcollection.group_by(lambdanum:num%3);”对应的分布式计算任务包括:首先,解析上述表达式,得到分组算子关键字“group_by”、被分组分布式数据集关键字“pcollection”以及分组条件关键字“lambdanum:num%3”;然后,对被分组分布式数据集关键字“pcollection”所指示的分布式数据集“[1,2,3,4,5,6]”按照分组条件关键字“lambdanum:num%3”(即,按对3取余)进行分组,得到分组数据[3,6],[1,4]和[2,5],再将分组条件关键字和上述分组数据组成键值对以得到分布式键值对集合:{0:[3,6],1:[1,4],2:[2,5]}。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到操作算子关键字、用于指示上述操作算子关键字对应的操作算子作用于的分布式数据集的被操作分布式数据集关键字和用于指示对上述被操作分布式数据集关键字所指示的分布式数据集进行上述操作算子关键字对应的操作后返回的分布式数据集的返回分布式数据集关键字;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:对上述被操作分布式数据集关键字所指示的分布式数据集执行上述操作算子关键字对应的操作并返回新的分布式数据集,将上述新的分布式数据集作为上述返回分布式数据集关键字所指示的分布式数据集。作为示例,执行表达式“pcollection_2=pcollection_1.map(lambdanum:num*2);”对应的分布式计算任务包括:首先,解析上述表达式,得到操作算子关键字“map(lambdanum:num*2)”、被操作分布式数据集关键字“pcollection_1”以及返回分布式数据集关键字“pcollection_2”;然后,对被操作分布式数据集关键字“pcollection_1”所指示的分布式数据集pcollection_1执行操作算子关键字“map(lambdanum:num*2)”对应的操作(即,将分布式数据集pcollection_1中的各个数据元素乘以2),并将操作的结果作为新的分布式数据集返回,再将返回的新的分布式数据集作为返回分布式数据集关键字“pcollection_2”所指示的分布式数据集pcollection_2。又例如,执行表达式“pcollection_2=pcollection_1.count();”对应的分布式计算任务包括:首先,解析上述表达式,得到操作算子关键字“count()”、被操作分布式数据集关键字“pcollection_1”以及返回分布式数据集关键字“pcollection_2”;然后,对被操作分布式数据集关键字“pcollection_1”所指示的分布式数据集pcollection_1执行操作算子关键字“count()”对应的操作(即,对分布式数据集pcollection_1中的数据元素个数计数),并将操作的结果(即,计数结果)作为新的分布式数据集返回,并将新的分布式数据集作为返回分布式数据集关键字“pcollection_2”所指示的分布式数据集pcollection_2。这里,需要指出的是“pcollection_2”是一个特殊的分布式数据集,其中只有一个数据元素,该数据元素的取值为pcollection_1中的数据元素个数。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到遍历算子关键字、用于指示上述遍历算子关键字对应的遍历算子作用于的分布式键值对集合的被遍历分布式键值对集合关键字和用于指示上述遍历算子关键字对应的遍历算子作用于的算子的被遍历算子关键字;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:对上述被遍历分布式键值对集合关键字所指示的分布式键值对集合中各个键值对中的值所对应的分布式数据集执行上述被遍历算子关键字对应的操作。作为示例,执行表达式“ptable.apply_values(count_distinct);”对应的分布式计算任务包括:首先,解析上述表达式,得到遍历算子关键字“apply_values”、被遍历分布式键值对集合关键字“ptable”以及被遍历算子关键字“count_distinct”;然后,对被遍历分布式键值对集合关键字“ptable”所指示的分布式键值对集合ptable中各个键值对中的值所对应的分布式数据集执行被遍历算子关键字“count_distinct”对应的操作(即,统计分布式数据集中不重复的数据元素的个数)。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到值获取算子关键字、用于指示上述值获取算子关键字对应的值获取算子作用于的分布式键值对集合的被取值分布式键值对集合关键字和用于指示对上述被取值分布式键值对集合关键字所指示的分布式键值对集合执行上述值获取算子关键字对应的操作后返回的分布式数据集的值获取分布式数据集关键字;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:将上述被取值分布式键值对集合关键字所指示的分布式键值对集合中各个键值对中的值作为数据元素添加到上述值获取分布式数据集关键字所指示的分布式数据集中。作为示例,对一个取值为{0:[3,6],1:[1,4],2:[2,5]}的分布式键值对集合ptable,执行表达式“pcollection=ptable.flatten_values();”对应的分布式计算任务包括:首先,解析上述表达式,得到值获取算子关键字“flatten_values”、被取值分布式键值对集合关键字“ptable”以及值获取分布式数据集关键字“pcollection”;然后,将被取值分布式键值对集合关键字“ptable”所指示的分布式键值对集合中各个键值对中的值作为数据元素添加到值获取分布式数据集关键字“pcollection”所指示的分布式数据集pcollection中,所得到的pcollection的取值为:[1,2,3,4,5,6]。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到键值对获取算子关键字、用于指示上述键值对获取算子关键字对应的键值对获取算子作用于的分布式键值对集合的被取键值对分布式键值对集合关键字和用于指示对上述被取键值对分布式键值对集合关键字所指示的分布式键值对集合执行上述键值对获取算子关键字对应的操作后返回的分布式数据集的键值对获取分布式数据集关键字;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:对上述被取键值对分布式键值对集合关键字所指示的分布式键值对集合中各个键值对中值为分布式数据集的键值对,将该分布式数据集中的各个数据元素分别与该键值对中的键组合以形成新的键值对,将所形成的新的键值对作为数据元素添加到上述键值对获取分布式数据集关键字所指示的分布式数据集中。作为示例,对取值为{0:[3,6],1:[1,4],2:[2,5]}的分布式键值对集合ptable,执行表达式“pcollection=ptable.flatten();”对应的分布式计算任务包括:首先,解析上述表达式,得到键值对获取算子关键字“flatten”、被取键值对分布式键值对集合关键字“ptable”以及键值对获取分布式数据集关键字“pcollection”;然后,对被取键值对分布式键值对集合关键字“ptable”所指示的分布式键值对集合ptable中各个键值对中值为分布式数据集的键值对,将该分布式数据集中的各个数据元素分别与该键值对中的键组合以形成新的键值对,将所形成的新的键值对作为数据元素添加到键值对获取分布式数据集关键字“pcollection”所指示的分布式数据集pcollection中。所得到的pcollection为:[0:3,0:6,1:1,1:4,2:2,2:5],其中包括六个数据元素,每个数据元素都是一个键值对。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到文件读取算子关键字、用于指示上述文件读取算子关键字对应的文件读取算子作用于的分布式数据集的文件读取分布式数据集关键字和用于指示上述文件读取算子作用于的文件的读取文件存储路径;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:将上述读取文件存储路径所指示的文件中的数据写入上述文件读取分布式数据集关键字所指示的分布式数据集中。作为示例,执行表达式“pcollection=pipeline.read(From.TextFile('hdfs:///input.txt'));”对应的分布式计算任务包括:首先,解析上述表达式,得到文件读取算子关键字“pipeline.read(From.TextFile”、文件读取分布式数据集关键字“pcollection”以及读取文件存储路径“hdfs:///input.txt”;然后,将读取文件存储路径“hdfs:///input.txt”所指示的input.txt文件中的数据写入文件读取分布式数据集关键字“pcollection”所指示的分布式数据集pcollection中。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到内存读取算子关键字、用于指示上述内存读取算子作用于的分布式数据集的内存读取分布式数据集关键字和用于指示上述内存读取算子作用于的内存的读取内存地址关键字;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:将上述读取内存地址关键字所指示的内存中的数据写入上述内存读取分布式数据集关键字所指示的分布式数据集中。作为示例,执行表达式“pcollection=pipeline.parallelize([1,2,3]);”对应的分布式计算任务包括:首先,解析上述表达式,得到内存读取算子关键字“pipeline.parallelize”、内存读取分布式数据集关键字“pcollection”以及读取内存地址关键字“[1,2,3]”;然后,将读取内存地址关键字“[1,2,3]”所指示的内存中的数据[1,2,3]写入内存读取分布式数据集关键字“pcollection”所指示的分布式数据集pcollection中。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到文件写入算子关键字、用于指示上述文件写入算子作用于的分布式数据集的文件写入分布式数据集关键字和用于指示上述文件写入算子作用于的文件的写入文件存储路径;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:将上述文件写入分布式数据集关键字所指示的分布式数据集中的数据写入上述写入文件存储路径所指示的文件中。作为示例,执行表达式“pipeline.write(pcollection,To.SequenceFile('hdfs:///output.txt'));”对应的分布式计算任务包括:首先,解析上述表达式,得到文件写入算子关键字“pipeline.write”、文件写入分布式数据集关键字“pcollection”以及写入文件存储路径“hdfs:///output.txt”;然后,将文件写入分布式数据集关键字“pcollection”所指示的分布式数据集中的数据写入上述写入文件存储路径“hdfs:///output.txt”所指示的output.txt文件中。在本实施例的一些可选的实现方式中,上述解析分布式计算任务的表达式,得到算子关键字,可以包括:解析分布式计算任务的表达式,得到内存写入算子关键字、用于指示上述内存写入算子作用于的分布式数据集的内存写入分布式数据集关键字和用于指示上述内存写入算子作用于的内存的写入内存地址关键字;以及上述利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,可以包括:将上述内存写入分布式数据集关键字所指示的分布式数据集中的数据写入上述写入内存地址关键字所指示的内存中。作为示例,执行表达式“a_list=pcollection.get();”对应的分布式计算任务包括:首先,解析上述表达式,得到内存写入算子关键字“get()”、内存写入分布式数据集关键字“pcollection”和写入内存地址关键字“a_list”;然后,将内存写入分布式数据集关键字“pcollection”所指示的分布式数据集pcollection中的数据写入写入内存地址关键字“a_list”所指示的内存中。本申请的上述实施例提供的用于执行分布式计算任务的方法,通过解析分布式计算任务的表达式,得到算子关键字,再利用算子关键字对应的算子,基于算子的输入参数执行分布式计算任务。实现了对嵌套数据集的操作,使得算子既可以作用于分布式数据集上,也可以作用于对分布式数据集进行分组后所得到的分布式键值对集合中的每个键值对中的值所对应的分布式数据集上,从而支持对诸如分布式数据集以及分布式数据集分组后的分组数据进行操作的分布式计算任务,实现了代码可重用。进一步参考图3,作为对上述各图所示方法的实现,本申请提供了一种用于执行分布式计算任务的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。如图3所示,本实施例所述的用于执行分布式计算任务的装置300包括:表达式解析单元301和执行单元302。其中,表达式解析单元301,配置用于解析分布式计算任务的表达式,得到算子关键字,上述算子关键字包括以下至少一项:分组算子关键字、操作算子关键字、遍历算子关键字、值获取算子关键字、键值对获取算子关键字、文件读取算子关键字、内存读取算子关键字、文件写入算子关键字、内存写入算子关键字;执行单元302,配置用于利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,其中,上述算子的输入参数包括以下至少一项:分布式存储的由至少一个数据元素组成的分布式数据集、分布式存储的由至少一对键值对组成的分布式键值对集合,上述分布式键值对集合中键值对的值为分布式数据集或分布式键值对集合。在本实施例中,用于执行分布式计算任务的装置300的表达式解析单元301和执行单元302的具体处理及其所带来的技术效果可分别参考图2对应实施例中步骤201和步骤202的相关说明,在此不再赘述。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到分组算子关键字、用于指示上述分组算子关键字对应的分组算子作用于的分布式数据集的被分组分布式数据集关键字和用于指示对上述被分组分布式数据集关键字所指示的分布式数据集进行分组的分组依据的分组条件关键字;以及上述执行单元302可以进一步配置用于:对上述被分组分布式数据集关键字所指示的分布式数据集按照上述分组条件关键字进行分组,得到分组数据,将上述分组条件关键字和上述分组数据组成键值对以得到分布式键值对集合。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到操作算子关键字、用于指示上述操作算子关键字对应的操作算子作用于的分布式数据集的被操作分布式数据集关键字和用于指示对上述被操作分布式数据集关键字所指示的分布式数据集进行上述操作算子关键字对应的操作后返回的分布式数据集的返回分布式数据集关键字;以及上述执行单元302可以进一步配置用于:对上述被操作分布式数据集关键字所指示的分布式数据集执行上述操作算子关键字对应的操作并返回新的分布式数据集,将上述新的分布式数据集作为上述返回分布式数据集关键字所指示的分布式数据集。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到遍历算子关键字、用于指示上述遍历算子关键字对应的遍历算子作用于的分布式键值对集合的被遍历分布式键值对集合关键字和用于指示上述遍历算子关键字对应的遍历算子作用于的算子的被遍历算子关键字;以及上述执行单元302可以进一步配置用于:对上述被遍历分布式键值对集合关键字所指示的分布式键值对集合中各个键值对中的值所对应的分布式数据集执行上述被遍历算子关键字对应的操作。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到值获取算子关键字、用于指示上述值获取算子关键字对应的值获取算子作用于的分布式键值对集合的被取值分布式键值对集合关键字和用于指示对上述被取值分布式键值对集合关键字所指示的分布式键值对集合执行上述值获取算子关键字对应的操作后返回的分布式数据集的值获取分布式数据集关键字;以及上述执行单元302可以进一步配置用于:将上述被取值分布式键值对集合关键字所指示的分布式键值对集合中各个键值对中的值作为数据元素添加到上述值获取分布式数据集关键字所指示的分布式数据集中。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到键值对获取算子关键字、用于指示上述键值对获取算子关键字对应的键值对获取算子作用于的分布式键值对集合的被取键值对分布式键值对集合关键字和用于指示对上述被取键值对分布式键值对集合关键字所指示的分布式键值对集合执行上述键值对获取算子关键字对应的操作后返回的分布式数据集的键值对获取分布式数据集关键字;以及上述执行单元302可以进一步配置用于:对上述被取键值对分布式键值对集合关键字所指示的分布式键值对集合中各个键值对中值为分布式数据集的键值对,将该分布式数据集中的各个数据元素分别与该键值对中的键组合以形成新的键值对,将所形成的新的键值对作为数据元素添加到上述键值对获取分布式数据集关键字所指示的分布式数据集中。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到文件读取算子关键字、用于指示上述文件读取算子关键字对应的文件读取算子作用于的分布式数据集的文件读取分布式数据集关键字和用于指示上述文件读取算子作用于的文件的读取文件存储路径;以及上述执行单元302可以进一步配置用于:将上述读取文件存储路径所指示的文件中的数据写入上述文件读取分布式数据集关键字所指示的分布式数据集中。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到内存读取算子关键字、用于指示上述内存读取算子作用于的分布式数据集的内存读取分布式数据集关键字和用于指示上述内存读取算子作用于的内存的读取内存地址关键字;以及上述执行单元302可以进一步配置用于:将上述读取内存地址关键字所指示的内存中的数据写入上述内存读取分布式数据集关键字所指示的分布式数据集中。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到文件写入算子关键字、用于指示上述文件写入算子作用于的分布式数据集的文件写入分布式数据集关键字和用于指示上述文件写入算子作用于的文件的写入文件存储路径;以及上述执行单元302可以进一步配置用于:将上述文件写入分布式数据集关键字所指示的分布式数据集中的数据写入上述写入文件存储路径所指示的文件中。在本实施例的一些可选的实现方式中,上述表达式解析单元301可以进一步配置用于:解析分布式计算任务的表达式,得到内存写入算子关键字、用于指示上述内存写入算子作用于的分布式数据集的内存写入分布式数据集关键字和用于指示上述内存写入算子作用于的内存的写入内存地址关键字;以及上述执行单元302可以进一步配置用于:将上述内存写入分布式数据集关键字所指示的分布式数据集中的数据写入上述写入内存地址关键字所指示的内存中。下面参考图4,其示出了适于用来实现本申请实施例的分布式计算设备的计算机系统的结构示意图。如图4所示,计算机系统400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM403中,还存储有系统400操作所需的各种程序和数据。CPU401、ROM402以及RAM403通过总线404彼此相连。输入/输出(I/O)接口404也连接至总线404。以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口404。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的方法中限定的上述功能。附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括表达式解析单元和执行单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,表达式解析单元还可以被描述为“解析分布式计算任务的表达式的单元”。作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:解析分布式计算任务的表达式,得到算子关键字,上述算子关键字包括以下至少一项:分组算子关键字、操作算子关键字、遍历算子关键字、值获取算子关键字、键值对获取算子关键字、文件读取算子关键字、内存读取算子关键字、文件写入算子关键字、内存写入算子关键字;利用上述算子关键字对应的算子,基于上述算子的输入参数执行上述分布式计算任务,其中,上述算子的输入参数包括以下至少一项:分布式存储的由至少一个数据元素组成的分布式数据集、分布式存储的由至少一对键值对组成的分布式键值对集合,上述分布式键值对集合中键值对的值为分布式数据集或分布式键值对集合。以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。当前第1页1 2 3 当前第1页1 2 3