首页> 中国专利> 分布式计算框架和分布式计算方法

分布式计算框架和分布式计算方法

摘要

本申请公开了分布式计算框架和分布式计算方法。该分布式计算框架的一具体实施方式包括:解析单元,用于解析分布式计算任务的表达式,确定算子、算子对应的字段;算子单元,用于提供算子,算子的输入参数包括:字段、字段型分布式数据集。实现了任意算子接收和返回的参数的类型均可以为字段型分布式数据集,任意算子均可对字段型分布式数据集中的对应于字段的数据进行操作。从而,任意算子均需实现一次,实现算子的复用。将分布式计算任务以较为简单的表达式显示地表达出来,简化了用户利用的分布式计算框架编写分布式计算程序的复杂度,进一步地,可以通过表达式确定分布式计算中涉及的算子,从而可以对分布式计算过程进行优化。

著录项

  • 公开/公告号CN106406985A

    专利类型发明专利

  • 公开/公告日2017-02-15

    原文格式PDF

  • 申请/专利权人 北京百度网讯科技有限公司;

    申请/专利号CN201610836654.7

  • 申请日2016-09-21

  • 分类号G06F9/46(20060101);

  • 代理机构11204 北京英赛嘉华知识产权代理有限责任公司;

  • 代理人王达佐;马晓亚

  • 地址 100085 北京市海淀区上地十街10号百度大厦2层

  • 入库时间 2023-06-19 01:32:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-11

    授权

    授权

  • 2017-03-15

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20160921

    实质审查的生效

  • 2017-02-15

    公开

    公开

说明书

技术领域

本申请涉及计算机领域,具体涉及分布式领域,尤其涉及分布式计算框架和分布式计算方法。

背景技术

在分布式计算程序的开发中,用户可以利用分布式计算框架提供的接口,例如分布式计算框架Hive的SQL-like接口、分布式计算框架Spark的DataFrame接口编写分布式计算程序。

然而,目前分布式框架提供的接口,一方面,无法实现算子的复用。以DataFrame接口为例,需要提供max/min/count等UDF,并且UDF都是处理单机数据集的,无法复用既有sum/count等操作。字段上可进行的操作极其有限,用户已实现的算子需要在某字段上使用时,无法复用算子。另一方面,不便于描述一些分布式计算中常见的分布式计算任务。以SQL-like接口为例,SQL-like接口缺少嵌套数据集的概念,当处理诸如将数据按某个字段分组,在每个分组上取某个字段最大的n条记录的分布式计算任务时,若采用表达式selectfield_1,field_2 from table_1 group by field1 order by field_2 desc limit 10,实际上是在全局取出10条记录,而非每个分组上取出10条记录。若采用表达式selectfield_1,field_2 from table_1 group by field1 limit 10 order by field_2 desc,则该表达式不符合SQL语法,导致无法对分布式计算任务进行描述。

发明内容

本申请提供了分布式计算框架和分布式计算方法,用于解决上述背景技术部分存在的技术问题。

第一方面,本申请提供了分布式计算框架,该分布式计算框架包括:解析单元,用于解析分布式计算任务的表达式,确定算子、算子对应的字段,其中,字段指示算子作用于的分布式数据集中的数据的属性;算子单元,用于提供算子,算子的输入参数包括:字段、字段型分布式数据集,其中,字段型分布式数据集包含至少一个元素,元素包含多个键值对,键值对的键为字段,值为分布式数据集中对应于字段的数据。

第二方面,本申请提供了分布式计算方法,该方法包括:解析分布式计算任务的表达式,确定算子、算子对应的字段,其中,字段指示算子作用于的分布式数据集中的数据的属性;生成算子的输入参数,算子的输入参数包括:字段、字段型分布式数据集,其中,字段型分布式数据集包含至少一个元素,元素包含多个键值对,键值对的键为字段,值为分布式数据集中对应于字段的数据;算子基于输入参数进行分布式计算。

本申请提供的分布式计算框架和分布式计算方法,通过解析单元,用于解析分布式计算任务的表达式,确定算子、算子对应的字段;算子单元,用于提供算子,算子的输入参数包括:字段、字段型分布式数据集。实现了任意算子接收和返回的参数的类型均可以为字段型分布式数据集,任意算子均可对字段型分布式数据集中的对应于字段的数据进行操作。从而,任意算子均需实现一次,实现算子的复用。将分布式计算任务以较为简单的表达式显示地表达出来,简化了用户利用的分布式计算框架编写分布式计算程序的复杂度,进一步地,可以通过表达式确定分布式计算中涉及的算子,从而可以对分布式计算过程进行优化。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出了根据本申请的分布式计算框架的一个实施例的结构示意图;

图2示出了根据本申请的分布式计算方法的一个实施例的流程图;

图3是适于用来实现本申请实施例的分布式计算框架的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图1,其示出了根据本申请的分布式计算框架的一个实施例的结构示意图。分布式计算框架100包括:解析单元101,算子单元102。解析单元101用于解析分布式计算任务的表达式,确定算子、算子对应的字段,其中,字段指示算子作用于的分布式数据集中的数据的属性;算子单元102用于提供算子,算子的输入参数包括:字段、字段型分布式数据集,字段型分布式数据集包含至少一个元素,包含多个键值对,键值对的键为字段,值为分布式数据集中对应于字段的数据。

在本实施例中,分布式计算任务可以利用表达式进行表示。分布式计算任务的表达式中可以包含各个算子对应的算子关键字和指示算子作用于的分布式数据集中的数据的属性的字段对应的字段关键字。解析单元可以解析表达式中的算子关键字和字段关键字,确定算子和算子对应的字段。

以分布式计算任务所需的数据为网站的点击率数据为例,网站的点击率数据包含网站数据和点击率数据两部分。算子可以作用于网站数据和点击率数据。分布式计算任务的表达式可以包含算子关键字、字段关键字。解析单元可以通过解析分布式计算任务的表达式中的算子关键字和字段关键字,确定算子和算子对应的字段即网站字段、点击率字段。

在本实施例中,分布式计算框架可以提供字段型分布式数据集SchemaPCollection。数据结构PCollection可以表示分布式数据集。SchemaPCollection数据结构可以表示结构化、带有字段的PCollection。SchemaPCollection数据结构可以相当于每个元素为一个字典的PCollection。算子单元提供的各个算子的输入参数可以包含SchemaPCollection和字段,返回值的类型也可以为SchemaPCollection。

在本实施例的一些可选的实现方式中,算子单元包括:字段型分布式数据集生成算子,用于根据字段,将分布式计算任务所需的数据对应的分布式数据集转换为字段型分布式数据集,字段型分布式数据集中的元素包含多个键值对,其中,每一个键值对的键为一个字段,值为分布式数据集中对应于字段的数据。

以分布式计算任务所需的数据为网站的点击率数据为例,每一条数据包含多个网站和点击率两部分。分布式计算任务所需的数据可以为PCollection。字段型分布式数据集生成算子可以接收字段参数,字段参数包含网站字段、点击率字段,生成分布式计算任务所需的数据对应的SchemaPCollection。分布式计算任务所需的数据对应的SchemaPCollection中的每一个元素可以为一个字典,该字典由多个键值对,键可以为网站集合、点击率。键网站集合对应的值为多个网站,键点击率对应的值为点击率数据。

在本实施例的一些可选的实现方式中,算子单元包括:拼接算子,用于对字段型分布式数据集中的每一个元素中包含有不同键的键值对进行组合,得到每一个元素为包含键不同的键值对的字段型分布式数据集。

在本实施例的一些可选的实现方式中,算子单元包括:分组算子,用于根据字段型分布式数据集中的元素中分组字段指示的键对应的值对字段型分布式数据集中的元素进行分组,得到多个分组后的字段型分布式数据集,其中,每一个分组字段指示的键对应的值对应一个分组后的字段型分布式数据集,分组后的字段型分布式数据集包括至少一个包含有分组字段指示的键对应的值的元素。

在本实施例的一些可选的实现方式中,算子单元包括:遍历算子,用于根据遍历字段,对字段型分布式数据集中的所有元素中遍历字段指示的键对应的值执行操作。

在本实施例的一些可选的实现方式中,聚合算子,用于聚合对字段型分布式数据集中的所有元素中遍历字段指示的键对应的值执行操作而得到的结果。

在本实施例中,算子单元可以包含拼接算子select算子和聚合算子agg算子。分布式计算框架可以向用户提供select算子和agg算子对应的select接口和agg接口。可以在select接口和agg接口的基础上,封装出辅助接口,例如join接口、distinct接口、sort_by接口。

在本实施例中,通过select接口和agg接口可以对SchemaPCollection进行处理。从而,可以复用在分布式计算框架中既有的作用于PCollection上的各种接口,select接口和agg接口可以与任意既有的作用于PCollection上的各种接口进行组合,进而组成可以完成各种分布式计算任务的操作,实现完备的功能。

下面结合代码来说明本申请中的分布式计算框架提供的算子的作用:

分布式计算任务所需的数据为以下网站的点击率数据:('alibaba.com,baidu.com,tencent.com',1),('baidu.com,tencent.com',2),('alibaba.com,tencent.com',3),('alibaba.com,baidu.com',2),('alibaba.com,jd.com',1)。分布式计算任务为按网站进行分组,计算每个网站的点击率的总和、点击率的最大值、点击率的平均值。

可以用于执行上述分布式计算任务的部分代码如下:

在本实施例中,每一个行代码可以相当于一个表达式,用户可以通过表达式的形式书写分布式计算任务的代码。分布式计算框架可以提供一个apply语法糖,apply语法糖的语义可以为:

.apply(f,*args)等价于f(pcollection,*args)

分布式计算任务所需的数据('alibaba.com,baidu.com,tencent.com',1),('baidu.com,tencent.com',2),('alibaba.com,tencent.com',3),('alibaba.com,baidu.com',2),('alibaba.com,jd.com',1)为一个分布式数据集PCollection。

对于上述代码中的.apply(schema.from_tuple,['websites','clicknum']),解析单元可以根据算子关键字from_tuple,确定字段型分布式数据集生成算子。通过字段关键字websites、clicknum,确定字段websites、clicknum。字段型分布式数据集生成算子可以根据字段websites和字段clicknum,将分布式计算任务所需的数据对应的PCollection按照字段websites、clicknum转换为字段型分布式数据集SchemaPCollection。SchemaPCollection中包含多个元素,每一个元素包含多个键值对,其中,每一个键值对的键为一个字段,值为PCollection对应于字段的数据。转换后的SchemaPCollection包含5个元素,每一个元素可以为字典。字典中包含由键websites和websites对应的值组成的键值对、由键clicknum和clicknum对应的值组成的键值对。

第一个元素中,包含键值对websites-alibaba.com,baidu.com,tencent.com和键值对clicknum-1。

第二个元素中,包含键值对websites-baidu.com,tencent.com和键值对clicknum-2。

第三个元素中,包含键值对websites-alibaba.com,tencent.com和键值对clicknum-3。

第四个元素中,包含键值对websites-alibaba.com,baidu.com和键值对clicknum-2。

第五个元素中,包含键值对websites-alibaba.com,jd.com和键值对clicknum-1。

对于上述代码中的.apply(schema.select,lambda cols:{'website':cols['websites'].flat_map(lambda line:line.split(',')),'clicknum':cols['clicknum']}),解析单元可以根据算子关键字select,确定拼接算子。根据字段关键字确定字段website、clicknum。

可以针对SchemaPCollection中的每一个元素中的键websites,调用flat_map算子将键websites对应的值按照逗号进行拆分,得到由键website和键website对应的值组成的键值对。

在对键websites对应的值按照逗号进行拆分之后,SchemaPCollection中的元素包含由键website和键website对应的值组成的键值对、由键clicknum和键clicknum对应的值组成的键值对。

第一个元素为键值对website-alibaba.com,键值对website-baidu.com,键值对website-tencent.com,键值对clicknum-1。

第二个元素为键值对website-baidu.com,键值对website-tencent.com,键值对clicknum-2。

第三个元素为键值对website-alibaba.com,键值对website-tencent.com,键值对clicknum-3。

第四个元素为键值对website-alibaba.com,键值对website-baidu.com,键值对clicknum-2。

第五个元素为键值对website-alibaba.com,键值对website-jd.com,键值对clicknum-1。

在本实施例中,拼接算子可以对字段型分布式数据集中的每一个元素中包含有不同键的键值对进行组合,得到每一个元素为包含键不同的键值对的字段型分布式数据集。

拼接算子可以对每一个元素中的键website对应的键值对和键clicknum对应的键值对进行组合,得到每一个元素为包含一个website对应的键值对和一个键clicknum对应的键值对的SchemaPCollection。

在对每一个元素中的键website对应的键值对和键clicknum对应的键值对进行组合之后,SchemaPCollection中,第一个元素为键值对website-alibaba.com和键值对clicknum-1。

第二个元素为键值对website-baidu.com和键值对clicknum-1。

第三个元素为键值对website-tencent.com和键值对clicknum-1。

第四个元素为键值对website-baidu.com和键值对clicknum-2。

第五个元素为键值对website-tencent.com和键值对clicknum-2。

第六个元素为键值对website-alibaba.com和键值对clicknum-3。

第七个元素为键值对website-tencent.com和键值对clicknum-3。

第八个元素为键值对website-alibaba.com和键值对clicknum-2。

第九个元素为键值对website-baidu.com和键值对clicknum-2。

第十个元素为键值对website-alibaba.com和键值对clicknum-1。

第十一个元素为键值对website-jd.com和键值对clicknum-1。

对于上述代码中的.apply(schema.group_by,['website']),解析单元可以根据分组算子关键字group_by,确定分组算子。根据字段关键字website确定字段website。

在本实施例中,分组算子可以根据分组字段website指示的键website对应的值对SchemaPCollection中的元素进行分组,得到多个分组后的SchemaPCollection,每一个分组字段指示的键website对应的值对应一个分组后的SchemaPCollection,分组后的SchemaPCollection包括至少一个包含有分组字段指示的键website对应的值的元素。

分组算子可以聚合键website对应的值相同的元素,得到包含多个键website对应的值相同的键值对的分组后的SchemaPCollection。

第一个分组后的SchemaPCollection中,包含键值对website-baidu.com和键值对clicknum-1、键值对website-baidu.com和键值对clicknum-2、键值对website-baidu.com和键值对clicknum-2。

第二个分组后的SchemaPCollection中,包含键值对website-tencent.com和键值对clicknum-1、键值对website-tencent.com和键值对clicknum-2、键值对website-tencent.com和键值对clicknum-3。

第三个分组后的SchemaPCollection中,包含键值对website-alibaba.com和键值对clicknum-1、键值对website-alibaba.com和键值对clicknum-3、键值对website-alibaba.com和键值对clicknum-2、键值对website-alibaba.com和键值对clicknum-1。

第四个分组后的SchemaPCollection中,包含键值对website-jd.com和键值对clicknum-1。

对于上述代码中的.apply_values(schema.agg,lambda cols:{'max_click_num':cols['clicknum'].max(),'sum_click_num':cols['clicknum'].flat_map(lambdax:x['x']),'avg_click_num':cols['clicknum'].sum()/cols['clicknum'].count()}),解析单元可以根据遍历算子关键字apply_values,确定遍历算子。根据字段关键字clicknum,确定字段clicknum。遍历算子可以根据遍历字段clicknum,分别对每一个分组后的SchemaPCollection中的所有元素中的键clicknum对应的值执行max、sum、count操作。从而,可以分别计算出baidu.com、tencent.com、alibaba.com、jd.com的点击率最大值、点击率总和、点击率平均值。

解析单元可以根据聚合算子关键字agg,确定聚合算子。聚合算子可以聚合对每一个分组之后的字段型分布式数据集中的所有元素中遍历字段指示的键对应的值执行操作而得到的结果。聚合算子可以聚合对每一个分组后的SchemaPCollection中的所有元素中的键clicknum对应的值执行max、sum、count操作得到的baidu.com、tencent.com、alibaba.com、jd.com的点击率最大值、点击率总和、点击率平均值。

在本申请中,任意算子接收和返回的参数的类型均可以为字段型分布式数据集,任意算子均可对字段型分布式数据集中的对应于字段的数据进行操作。从而,任意算子均需实现一次,实现算子的复用。将分布式计算任务以较为简单的表达式显示地表达出来,简化了用户利用的分布式计算框架编写分布式计算程序的复杂度,进一步地,可以通过表达式确定分布式计算中涉及的算子,从而可以对分布式计算过程进行优化。

请参考图2,其示出了根据本申请的分布式计算方法的一个实施例的流程200。该方法包括以下步骤:

步骤201:解析分布式计算任务的表达式,确定算子、算子对应的字段。

在本实施例中,字段指示算子作用于的分布式数据集中的数据的属性。分布式计算任务可以利用表达式进行表示。以分布式计算任务所需的数据为网站的点击率数据为例,网站的点击率数据包含网站数据和点击率数据两部分。算子可以作用于网站数据和点击率数据。分布式计算任务的表达式可以包含算子关键字、字段关键字。解析单元可以通过解析分布式计算任务的表达式中的算子关键字和字段关键字,确定算子和算子对应的字段即网站字段、点击率字段。

步骤202:生成算子的输入参数。

在本实施例中,算子的输入参数包括:字段、字段型分布式数据集,字段型分布式数据集包含至少一个元素,元素包含多个键值对,键值对的键为字段,值为分布式数据集中对应于字段的数据。

在本实施例中,分布式计算框架可以提供字段型分布式数据集SchemaPCollection。数据结构PCollection可以表示分布式数据集。SchemaPCollection数据结构可以表示结构化、带有字段的PCollection。SchemaPCollection数据结构可以相当于每个元素为一个字典的PCollection。各个算子的输入参数可以包含SchemaPCollection和字段,返回值的类型也可以为SchemaPCollection。

在本实施例的一些可选的实现方式中,还包括:根据字段,将分布式计算任务所需的数据对应的分布式数据集转换为字段型分布式数据集,字段型分布式数据集中的元素包含多个键值对,其中,每一个键值对的键为一个字段,值为分布式数据集中对应于字段的数据。

以分布式计算任务所需的数据为网站的点击率数据为例,每一条数据包含多个网站和点击率两部分。分布式计算任务所需的数据可以为PCollection。可以根据网站字段、点击率字段,生成分布式计算任务所需的数据对应的SchemaPCollection。分布式计算任务所需的数据对应的SchemaPCollection中的每一个元素可以为一个字典,该字典由多个键值对,键可以为网站集合、点击率。键网站集合对应的值为多个网站,键点击率对应的值为点击率数据。

例如,分布式计算任务所需的数据为以下网站的点击率数据:('alibaba.com,baidu.com,tencent.com',1),('baidu.com,tencent.com',2),('alibaba.com,tencent.com',3),('alibaba.com,baidu.com',2),('alibaba.com,jd.com',1)。分布式计算任务所需的数据为一个分布式数据集PCollection。

在本实施例中,可以根据字段websites和字段clicknum,将分布式计算任务所需的数据对应的PCollection按照字段websites、clicknum转换为字段型分布式数据集SchemaPCollection。SchemaPCollection中包含多个元素,每一个元素包含多个键值对,其中,每一个键值对的键为一个字段,值为PCollection对应于字段的数据。

SchemaPCollection包含5个元素,每一个元素可以为字典。字典中包含由键websites和websites对应的值组成的键值对、由键clicknum和clicknum对应的值组成的键值对。

第一个元素中,包含键值对websites-alibaba.com,baidu.com,tencent.com和键值对clicknum-1。

第二个元素中,包含键值对websites-baidu.com,tencent.com和键值对clicknum-2。

第三个元素中,包含键值对websites-alibaba.com,tencent.com和键值对clicknum-3。

第四个元素中,包含键值对websites-alibaba.com,baidu.com和键值对clicknum-2。

第五个元素中,包含键值对websites-alibaba.com,jd.com和键值对clicknum-1。

步骤203:算子基于输入参数进行分布式计算。

在本实施例中,在通过步骤202生成算子的输入参数之后,算子可以根据输入参数SchemaPCollection和字段,进行分布式计算。

在本实施例中,可以提供一个apply语法糖,apply语法糖的语义可以为:

.apply(f,*args)等价于f(pcollection,*args)

在本实施例的一些可选的实现方式中,还包括:对字段型分布式数据集中的每一个元素中包含有不同键的键值对进行组合,得到每一个元素为包含键不同的键值对的字段型分布式数据集。

在本实施例中,可以对字段型分布式数据集中的每一个元素中包含有不同键的键值对进行组合,得到每一个元素为包含键不同的键值对的字段型分布式数据集。

以分布式计算任务所需的数据为网站的点击率数据为例,每一条数据包含多个网站和点击率两部分。分布式计算任务所需的数据可以为PCollection。可以根据网站字段、点击率字段,生成分布式计算任务所需的数据对应的SchemaPCollection。分布式计算任务所需的数据对应的SchemaPCollection中的每一个元素可以为一个字典,该字典由多个键值对,键可以为网站集合、点击率。键网站集合对应的值为多个网站,键点击率对应的值为点击率数据。

例如,SchemaPCollection中的元素包含由键website和键website对应的值组成的键值对、由键clicknum和键clicknum对应的值组成的键值对。

第一个元素为键值对website-alibaba.com,键值对website-baidu.com,键值对website-tencent.com,键值对clicknum-1。

第二个元素为键值对website-baidu.com,键值对website-tencent.com,键值对clicknum-2。

第三个元素为键值对website-alibaba.com,键值对website-tencent.com,键值对clicknum-3。

第四个元素为键值对website-alibaba.com,键值对website-baidu.com,键值对clicknum-2。

第五个元素为键值对website-alibaba.com,键值对website-jd.com,键值对clicknum-1。

可以对每一个元素中的键website对应的键值对和键clicknum对应的键值对进行组合,得到每一个元素为包含一个website对应的键值对和一个键clicknum对应的键值对的SchemaPCollection。

在对每一个元素中的键website对应的键值对和键clicknum对应的键值对进行组合之后,SchemaPCollection中,第一个元素为键值对website-alibaba.com和键值对clicknum-1。

第二个元素为键值对website-baidu.com和键值对clicknum-1。

第三个元素为键值对website-tencent.com和键值对clicknum-1。

第四个元素为键值对website-baidu.com和键值对clicknum-2。

第五个元素为键值对website-tencent.com和键值对clicknum-2。

第六个元素为键值对website-alibaba.com和键值对clicknum-3。

第七个元素为键值对website-tencent.com和键值对clicknum-3。

第八个元素为键值对website-alibaba.com和键值对clicknum-2。

第九个元素为键值对website-baidu.com和键值对clicknum-2。

第十个元素为键值对website-alibaba.com和键值对clicknum-1。

第十一个元素为键值对website-jd.com和键值对clicknum-1。

在本实施例的一些可选的实现方式中,还包括:根据字段型分布式数据集中的元素中分组字段指示的键对应的值对字段型分布式数据集中的元素进行分组,得到多个分组后的字段型分布式数据集,其中,每一个分组字段指示的键对应的值对应一个分组后的字段型分布式数据集,分组后的字段型分布式数据集包括至少一个包含有分组字段指示的键对应的值的元素。

例如,在SchemaPCollection中,第一个元素为键值对website-alibaba.com和键值对clicknum-1。

第二个元素为键值对website-baidu.com和键值对clicknum-1。

第三个元素为键值对website-tencent.com和键值对clicknum-1。

第四个元素为键值对website-baidu.com和键值对clicknum-2。

第五个元素为键值对website-tencent.com和键值对clicknum-2。

第六个元素为键值对website-alibaba.com和键值对clicknum-3。

第七个元素为键值对website-tencent.com和键值对clicknum-3。

第八个元素为键值对website-alibaba.com和键值对clicknum-2。

第九个元素为键值对website-baidu.com和键值对clicknum-2。

第十个元素为键值对website-alibaba.com和键值对clicknum-1。

第十一个元素为键值对website-jd.com和键值对clicknum-1。

可以根据分组字段website,按照元素中website指示的键website对应的值对SchemaPCollection中的元素进行分组,得到多个分组后的SchemaPCollection,每一个分组字段指示的键website对应的值对应一个分组后的SchemaPCollection,分组后的SchemaPCollection包括至少一个包含有分组字段指示的键website对应的值的元素。

可以聚合SchemaPCollection中键website对应的值相同的元素,得到包含多个键website对应的值相同的键值对的分组后的SchemaPCollection。

第一个分组后的SchemaPCollection中,包含键值对website-baidu.com和键值对clicknum-1、键值对website-baidu.com和键值对clicknum-2、键值对website-baidu.com和键值对clicknum-2。

第二个分组后的SchemaPCollection中,包含键值对website-tencent.com和键值对clicknum-1、键值对website-tencent.com和键值对clicknum-2、键值对website-tencent.com和键值对clicknum-3。

第三个分组后的SchemaPCollection中,包含键值对website-alibaba.com和键值对clicknum-1、键值对website-alibaba.com和键值对clicknum-3、键值对website-alibaba.com和键值对clicknum-2、键值对website-alibaba.com和键值对clicknum-1。

第四个分组后的SchemaPCollection中,包含键值对website-jd.com和键值对clicknum-1。

在本实施例的一些可选的实现方式中,还包括:根据遍历字段,对字段型分布式数据集中的所有元素中遍历字段指示的键对应的值执行操作。

以根据分组字段website,按照元素中website指示的键website对应的值对SchemaPCollection中的元素进行分组,得到多个分组后的SchemaPCollection为例,第一个分组后的SchemaPCollection中,包含键值对website-baidu.com和键值对clicknum-1、键值对website-baidu.com和键值对clicknum-2、键值对website-baidu.com和键值对clicknum-2。

第二个分组后的SchemaPCollection中,包含键值对website-tencent.com和键值对clicknum-1、键值对website-tencent.com和键值对clicknum-2、键值对website-tencent.com和键值对clicknum-3。

第三个分组后的SchemaPCollection中,包含键值对website-alibaba.com和键值对clicknum-1、键值对website-alibaba.com和键值对clicknum-3、键值对website-alibaba.com和键值对clicknum-2、键值对website-alibaba.com和键值对clicknum-1。

第四个分组后的SchemaPCollection中,包含键值对website-jd.com和键值对clicknum-1。

可以根据遍历字段clicknum,分别对每一个分组后的SchemaPCollection中的所有元素中的键clicknum对应的值执行max、sum、count操作。从而,可以分别计算出baidu.com、tencent.com、alibaba.com、jd.com的点击率最大值、点击率总和、点击率平均值。

在本实施例的一些可选的实现方式中,还包括:聚合对字段型分布式数据集中的所有元素中遍历字段指示的键对应的值执行操作而得到的结果。

以分组后的SchemaPCollection为例,可以聚合对每一个分组后的SchemaPCollection中的所有元素中的键clicknum对应的值执行max、sum、count操作得到的baidu.com、tencent.com、alibaba.com、jd.com的点击率最大值、点击率总和、点击率平均值。输出结果可以采用以下形式进行表示:

[{'sum_click_num':7,'website':'alibaba.com','avg_click_num':1,'max_click_num':3},

{'sum_click_num':6,'website':'tencent.com','avg_click_num':2,'max_click_num':3},

{'sum_click_num':5,'website':'baidu.com','avg_click_num':1,'max_click_num':2},

{'sum_click_num':1,'website':'jd.com','avg_click_num':1,'max_click_num':1}]。

在本申请中,任意算子接收和返回的参数的类型均可以为字段型分布式数据集,任意算子均可对字段型分布式数据集中的对应于字段的数据进行操作。从而,任意算子均需实现一次,实现算子的复用。将分布式计算任务以较为简单的表达式显示地表达出来,简化了用户利用的分布式计算框架编写分布式计算程序的复杂度,进一步地,可以通过表达式确定分布式计算中涉及的算子,从而可以对分布式计算过程进行优化。

下面参考图3,其示出了适于用来实现本申请实施例的分布式计算框架的计算机系统300的结构示意图。

如图3所示,计算机系统300包括中央处理单元(CPU)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储部分308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有系统300操作所需的各种程序和数据。CPU 301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。

以下部件连接至I/O接口305:包括键盘、鼠标等的输入部分306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分307;包括硬盘等的存储部分308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储部分308。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:解析分布式计算任务的表达式,确定算子、所述算子对应的字段,其中,所述字段指示算子作用于的分布式数据集中的数据的属性;生成所述算子的输入参数,算子的输入参数包括:字段、字段型分布式数据集,其中,所述字段型分布式数据集包含至少一个元素,所述元素包含多个键值对,键值对的键为字段,值为分布式数据集中对应于所述字段的数据;所述算子基于所述输入参数进行分布式计算。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号