一种生成目标代码的方法、数据处理的方法及装置制造方法及图纸

技术编号:8489637 阅读:240 留言:0更新日期:2013-03-28 08:31
本发明专利技术提供了一种生成Map/Reduce模型的目标代码的方法、数据处理的方法及装置,其中生成Map/Reduce模型的目标代码的方法,包括:A.获取用户指令;B.根据所述用户指令生成中间码原始图;C.对所述中间码原始图进行分解,得到与Map/Reduce过程的各个执行阶段对应的中间码阶段图;D.将与Map/Reduce过程的各个执行阶段对应的中间码阶段图翻译为Map/Reduce过程的各个执行阶段的目标代码。通过上述方式,降低了普通开发人员的工作难度,提高了代码的可重用性,有利于代码的移植和维护。

【技术实现步骤摘要】
一种生成目标代码的方法、数据处理的方法及装置
本专利技术涉及数据处理技术,特别涉及一种生成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中,将所述中间码阶段图中的每个节点 翻译为所述目标代码中的代表不可再分割的数据处理操作的一个类的实例,将所述中间码 阶段图中的每条有向边翻译为所述目标代码中的代表数据传递的一个方法。本专利技术还提供了一种数据处理方法,包括a.获取待处理的数据;b.采用前文所 述的生成Map/Reduce模型的目标代码的方法生成的目标代码对所述待处理的数据进行处 理以得到处理结果。本专利技术还提供了 一种生成Map/Reduce模型的目标代码的装置,包括指令获取单 元,用于获取用户指令;图生成单元,用于根据所述用户指令生成中间码原始图,所述中间 码原始图由指代数据处理方式的节点和节点之间指代数据传递方向的有向边构成;分解单 元,用于对所述中间码原始图进行分解,得到与Map/Reduce过程的各个执行阶段对应的中 间码阶段图,其中所述执行阶段有一个或多个;翻译单元,用于将与Map/Reduce过程的各 个执行阶段对应的中间码阶段图翻译为Map/Reduce过程的各个执行阶段的目标代码。根据本专利技术之一优选实施例,所述图生成单元包括转化子单元,用于将所述用户 指令转化为多个不可再分割的数据处理操作;图生成子单元,用于将各个不可再分割的数 据处理操作转换为所述中间码原始图的各个节点,并根据所述用户指令中的数据传递方向 得到连接各个节点的有向边,从而得到所述中间码原始图。根据本专利技术之一优选实施例,所述分解单元包括补充子单元,用于按照预先定义 的节点类型,在所述中间码原始图中隐含分组逻辑节点前补充分组逻辑节点及聚合逻辑节 点,得到中间码补充图,所述预先定义的节点类型包括无分组逻辑节点、分组逻辑节点及 隐含分组逻辑的节点;拆分子单元,用于从所述中间码补充图的分组逻辑节点与聚合逻辑 节点之间进行切分,并在切分后的每个部分之间补充标记数据源的节点和按数据源标记接 收相应数据的节点,得到与Map/Reduce过程的各个执行阶段对应的中间码阶段图。根据本专利技术之一优选实施例,所述装置进一步包括优化单元,用于对所述中间码 原始图中的节点进行优化;所述优化的策略包括以下L1、L2和L3中的至少一项L1.从所述中间码原始图中的输出节点开始向前遍历,找出通过所述中间码原始图的有向边能到达该输出节点的所有前置节点并进行标记,删除所述中间码原始图中未被标记的节点; L2.将等价节点进行合并,其中所述等价节点是除了数据源属性不同,其他所有属性均相同,且不依赖其他节点或依赖相同节点的节点;L3.将仅依赖一个节点且满足合并策略的邻接节点进行合并。根据本专利技术之一优选实施例,所述L3采用的合并策略包括排序逻辑节点与取序列值逻辑节点合并为一个排序逻辑节点,或两个过滤逻辑节点合并为一个过滤逻辑节点, 或两个选择逻辑节点合并为一个选择逻辑节点。根据本专利技术之一优选实施例,所述翻译单元将所述中间码阶段图中的每个节点翻译为所述目标代码中的代表不可再分割的数据处理操作的一个类的实例,将所述中间码阶段图中的每条有向边翻译为所述目标代本文档来自技高网...

【技术保护点】
一种生成Map/Reduce模型的目标代码的方法,其特征在于,所述方法包括:A.获取用户指令;B.根据所述用户指令生成中间码原始图,所述中间码原始图由指代数据处理方式的节点和节点之间指代数据传递方向的有向边构成;C.对所述中间码原始图进行分解,得到与Map/Reduce过程的各个执行阶段对应的中间码阶段图,其中所述执行阶段有一个或多个;D.将与Map/Reduce过程的各个执行阶段对应的中间码阶段图翻译为Map/Reduce过程的各个执行阶段的目标代码。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈晓鸣付力力桑文锋
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1