基于MDE模型转换的MapReduce代码生成方法

文档序号:8361206阅读:531来源:国知局
基于MDE模型转换的MapReduce代码生成方法
【技术领域】
[0001] 本发明涉及模型驱动领域的模型转换问题,以及大数据处理领域大数据平台 Hadoop和Hadoop上的MapReduce编程。
【背景技术】
[0002] 模型驱动工程(MDE)是以模型作为软件开发的核心制品,并提升模型在开发过程 中的作用,利用模型指导开发人员对于软件系统的理解、设计、构造、维护和演化,从而提高 软件的开发和维护的效率,降低成本。
[0003] 在模型驱动工程中两项关键的技术就是软件建模技术和模型转换技术,模型转换 技术可以用于将开发过程中的一个模型自动或者半自动的转换成另一个模型,从而推动整 个开发过程。
[0004] 在机器学习和数据挖掘越来越火热的背景下,数据的预处理变得十分重要,但是 它却不讨人喜欢,因为完成它是费时费力的工作,往往需要编写很多代码,可能还需要反复 多次进行这种操作。
[0005] MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行 运算。概念"Map(映射)"和"Reduce(化简)",及他们的主要思想,都是从函数式编程语言 借来的,还有从矢量编程语言借来的特性。
[0006] Hadoop是一个由Apache基金会所开发的分布式系统基础架构,它提供了一种可 靠、高效、可伸缩的方式进行数据处理。它实现了MapReduce的编程范式,应用程序被分割 成许多的小部分,而每个部分都能在急群众的任意节点上执行或者重新执行,此外它还提 供一个分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带 宽。因为它的开源以及对大数据处理处理支持的程度,它现在应用非常广泛。

【发明内容】

[0007] 本发明所要解决的问题是为了简便数据处理这类操作,使得数据处理人员可以 编写很少量的直观的模型转换代码,然后自动生成最终的能在大数据处理平台上运行的 MapReduce可执行代码,从而完成数据处理过程。
[0008] 为解决上述问题,本发明采用的方案如下:
[0009] 基于MDE模型转换的MapReduce代码生成方法,其特征在于,包括以下步骤:
[0010] Sl:获取模型转换程序;
[0011] S2 :逐个提取模型转换程序中定义的转换规则,生成转换原语描述的操作流程;
[0012] S3 :将转换原语描述的操作流程抽取为逻辑模型实例;
[0013] S4 :根据原语算子对应表,将逻辑模型实例转换成物理模型实例;
[0014] S5 :根据物理模型实例生完整的MapReduce代码;
[0015] 其中:所述模型转换程序用于定义基于MDE数据模型的输入输出之间转换规则, 采用QVT表述;所述原语算子对应表为预先定义的、用于描述转换原语与MapReduce操作算 子之间对应关系的表单;所述转换原语为不可分割的基本操作集,用于刻画模型转换执行 语义,至少包括以下三个属性:原语名称,逻辑语义和参数信息;所述逻辑语义用于描述转 换原语的功能;所述MapReduce操作算子为由MapReduce代码组成的模板代码集,至少包括 以下三个属性:操作算子名称,代码模板和Hadoop配置参数;所述代码模板包括Map操作 代码模板、Reduce操作代码模板、键/值类型代码模板以及Job配置代码模板;所述逻辑模 型实例由逻辑节点和逻辑有向边组成;所述逻辑节点至少包括以下属性:节点标识,转换 原语以及输入数据模式集,输出数据模式集;所述逻辑有向边用于表述逻辑节点之间的连 接关系以及标识各个操作之间的依赖关系和数据流向;所述物理模型实例由物理节点和物 理有向边组成;所述物理节点至少包括以下属性:节点标识、节点逻辑功能实现代码以及 输入数据模式集,输出数据模式集;所述物理有向边用于表述物理节点之间的连接关系以 及标识各个操作之间的依赖关系和数据流向;所述节点逻辑功能实现代码为MapReduce代 码。
[0016] 进一步,所述转换原语包括控制原语、匹配原语、改写原语、附加原语和计算原语; 所述控制原语用于控制模型转换规则的整理流程,所述匹配原语用于描述输入对模型的匹 配,所述改写原语用于描述模型的创建、删除或修改,所述附加原语用于在转换规则中添加 额外的信息,所述计算原语用于描述转换规则中表达式的计算。
[0017] 进一步,所述步骤S2中的"生成转换原语描述的操作流程"包括以下步骤:S21 :抽 取转换规则转换前后的数据集结构参数,分离出转换规则的源端代码和目标端代码;
[0018] S22 :根据转换规则构建相应的控制原语;
[0019] S23:根据转换规则的源端代码构建相应的匹配原语,提取原语参数,根据操作语 义生成输入数据模式集、输出数据模式集;
[0020] S24:根据转换规则的目标端代码构建相应的计算原语、附加原语和改写原语,提 取原语参数,根据操作语义生成输入数据模式集、输出数据模式集。
[0021] 进一步,所述步骤S3中的"将转换原语描述的操作流程抽取为逻辑模型实例"包 括以下步骤:
[0022] S31 :为每个转换原语创建一个逻辑节点,赋予该逻辑节点一个ID号;
[0023] S32 :逻辑节点继承转换原语的逻辑语义以及参数等信息;
[0024] S33 :填充抽取转换原语时生成的输入数据模式集和输出数据模式集;
[0025] S34:根据转换原语所属类别以及转换原语间数据流向在逻辑节点之间添加逻辑 有向边,得到逻辑模型实例。
[0026] 进一步,所述步骤S4中的"把逻辑模型实例转换成操作流程物理模型实例"包括 以下步骤:
[0027] S41 :对逻辑模型实例的所有逻辑节点进行有向无环图的拓扑排序;
[0028] S42 :按拓扑排序顺序的结果依次遍历每个逻辑节点,读取每个组件ID信息,输入 模式信息和输出模式信息以及转换原语中的名称信息,操作参数信息,逻辑语义信息;
[0029] S43 :实例化物理节点V= {ID,C},C为物理节点中逻辑语义的MapReduce代码实 现,其中ID由逻辑节点继承得到,C根据原语算子对应表生成逻辑语义的MapReduce代码 实现;
[0030] S44:按照遍历的先后顺序连接物理节点,构造物理模型的边信息,得到物理模型 有向无环图结构。
[0031] 进一步,所述步骤S43中的"根据原语算子对应表生成逻辑语义的MapReduce代 码"包括以下步骤:
[0032] S431 :根据原语算子对应表,依照原语信息以及逻辑节点的语义选择对应的 MapReduce操作算子;
[0033] S432:根据操作算子信息、操作参数信息以及输入输出模式信息生成该物理节点 输入输出类型类、Map和Reduce操作类;
[0034] S433 :根据操作算子中Hadoop参数以及Job配置模板生成每个物理节点的任务配 置代码,构造任务配置实例JobConf;
[0035] S434 :组合上述代码得逻辑功能的MapReduce代码实现。
[0036] 进一步,所述步骤S5包括以下步骤:
[0037] S51 :对每个物理节点中的任务配置实例JobConf构造成一个HadoopJob实例;
[0038] S52 :根据物理节点的连接关系,在每个节点任务上添加依赖的其他任务,构建各 个MapReduce任务之间的依赖关系,生成RunJob()方法;
[0039] S53:生成操作流程执行的入口代码并执行任务流程,即生成main函数执行 RunJob方法。
[0040] 本发明的技术效果如下:
[0041] 1、采用本发明方法,用户可以在高层次编写少量模型转换代码,系统将自动转换 成MapReduce执行代码。
[0042] 2、本发明方法降低了使用Hadoop来进行数据处理的门滥,使对于MapReduce不精 通的人也可以使用它来完成自己数据处理的任务。
[0043] 3、本发明方法高度自动化,生成的代码可靠有效,减少自己编写代码错误调试时 间。
[0044] 4、本发明的方法有良好的扩展性,可以以其为基础支持其他应用。
【附图说明】
[0045] 图1为根据转换原语构建的逻辑模型实例的结构示意图。
【具体实施方式】
[0046] 下面结合说明书附图对本发明做进一步详细说明。
[0047] 本发明的基于MDE模型转换的MapReduce代码生成方法,包括以下步骤:
[0048] Sl:获取模型转换程序;
[0049] S2 :逐个提取模型转换程序中定义的转换规则,生成转换原语描述的操作流程; [0050] S3 :将转换原语描述的操作流程抽取为逻辑模型实例;
[0051] S4 :根据原语算子对应表,将逻辑模型实例转换成物理模型实例;
[0052] S5 :根据物理模型实例生完整的MapReduce代码。<
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1