[发明专利]一种生成目标代码的方法、数据处理的方法及装置有效
申请号: | 201110276309.X | 申请日: | 2011-09-16 |
公开(公告)号: | CN102999323A | 公开(公告)日: | 2013-03-27 |
发明(设计)人: | 陈晓鸣;付力力;桑文锋 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京鸿德海业知识产权代理事务所(普通合伙) 11412 | 代理人: | 袁媛 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 生成 目标 代码 方法 数据处理 装置 | ||
【技术领域】
本发明涉及数据处理技术,特别涉及一种生成Map/Reduce模型的目标代码的方法、数据处理的方法及装置。
【背景技术】
分布式计算研究如何将一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。而由Google提出的Map/Reduce模型,就是一个分布式计算模型。Map/Reduce模型,通过Map阶段,将可以并列执行的任务分别并列执行,然后再通过Reduce阶段,将Map阶段并列执行的任务产生的中间结果合并,从而得到最终结果。在现有技术中,已经实现的Map/Reduce模型的分布式计算开发平台,通常都是与开发语言紧密结合的,这使得普通开发人员,当需要在自己的程序中嵌入分布式应用时,必须熟悉相应的Map/Reduce平台及其相应的语言,这增加了开发人员的开发难度,同时也降低了代码的可重用性。请参考图1,图1为现有技术中采用Map/Reduce模型进行数据处理的方法的示意图。在图1中,Map阶段和Reduce阶段的目标代码,指的都是与某种开发语言结合的代码,在现有的Map/Reduce模型的实现方式中,这些目标代码都是由普通开发人员通过手工的方式来生成的。并且Map/Reduce过程可能存在多个阶段(如图1中的第一阶段、第N阶段),这些阶段也是由普通开发人员通过手工代码的方式进行划分的,可见,在现有的Map/Reduce分布式应用开发中,对普通开发人员的要求较高,并且由不同的开发人员开发的代码,也很难重用。
【发明内容】
本发明所要解决的技术问题是提供一种生成Map/Reduce模型的目标代码的方法、数据处理的方法及装置,以解决现有技术采用Map/Reduce模型进行数据处理时存在的对普通开发人员而言,开发难度高,代码可重用性差的缺陷。
本发明为解决技术问题而采用的技术方案是提供一种生成Map/Reduce模型的目标代码的方法,包括:A.获取用户指令;B.根据所述用户指令生成中间码原始图,所述中间码原始图由指代数据处理方式的节点和节点之间指代数据传递方向的有向边构成;C.对所述中间码原始图进行分解,得到与Map/Reduce过程的各个执行阶段对应的中间码阶段图,其中所述执行阶段有一个或多个;D.将与Map/Reduce过程的各个执行阶段对应的中间码阶段图翻译为Map/Reduce过程的各个执行阶段的目标代码。
根据本发明之一优选实施例,所述步骤B包括:B1.将所述用户指令转化为多个不可再分割的数据处理操作;B2.将各个不可再分割的数据处理操作转换为所述中间码原始图的各个节点,并根据所述用户指令中的数据传递方向得到连接各个节点的有向边,从而得到所述中间码原始图。
根据本发明之一优选实施例,所述步骤C包括:C1.按照预先定义的节点类型,在所述中间码原始图中隐含分组逻辑的节点前补充分组逻辑节点及聚合逻辑节点,得到中间码补充图,所述预先定义的节点类型包括:无分组逻辑节点、分组逻辑节点及隐含分组逻辑的节点;C2.从所述中间码补充图的分组逻辑节点与聚合逻辑节点之间进行切分,并在切分后的每个部分之间补充标记数据源的节点和按数据源标记接收相应数据的节点,得到与Map/Reduce过程的各个执行阶段对应的中间码阶段图。
根据本发明之一优选实施例,所述方法在步骤C前进一步包括:对所述中间码原始图中的节点进行优化;所述优化的策略包括以下S1、S2和S3中的至少一项:S1.从所述中间码原始图中的输出节点开始向前遍历,找出通过所述中间码原始图的有向边能到达该输出节点的所有前置节点并进行标记,删除所述中间码原始图中未被标记的节点;S2.将等价节点进行合并,其中所述等价节点是除了数据源属性不同,其他所有属性均相同,且不依赖于其他节点或依赖于相同节点的节点;S3.将仅依赖于一个节点且满足合并策略的邻接节点进行合并。
根据本发明之一优选实施例,所述S3采用的合并策略包括:排序逻辑节点与取序列值逻辑节点合并为一个排序逻辑节点,或两个过滤逻辑节点合并为一个过滤逻辑节点,或两个选择逻辑节点合并为一个选择逻辑节点。
根据本发明之一优选实施例,所述步骤D中,将所述中间码阶段图中的每个节点翻译为所述目标代码中的代表不可再分割的数据处理操作的一个类的实例,将所述中间码阶段图中的每条有向边翻译为所述目标代码中的代表数据传递的一个方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110276309.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:防核辐射防水卷材及其制备方法
- 下一篇:编码多视图图像的方法及装置