[发明专利]基于模型转换由midcore生成Spark和Hadoop程序代码的方法有效

专利信息
申请号: 201711418644.2 申请日: 2017-12-25
公开(公告)号: CN108153522B 公开(公告)日: 2020-05-05
发明(设计)人: 张天;刘拨杰;潘敏学;李宣东 申请(专利权)人: 南京大学
主分类号: G06F8/35 分类号: G06F8/35;G06F8/30
代理公司: 南京知识律师事务所 32207 代理人: 张苏沛
地址: 210093 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 模型 转换 midcore 生成 spark hadoop 程序代码 方法
【权利要求书】:

1.一种基于模型转换由midcore生成Spark和Hadoop程序代码的方法,其特征在于,步骤包括:

步骤1:按照midcore语言的语法,建立抽象语法树,并在xtext工具中用xtext grammerlanguage准确描述出来;

步骤2:采用xtend根据xtext grammar language书写的语法分析树,书写midcore到spark代码的映射规则,合称M2S框架;

所述步骤2的具体步骤为:

步骤21:将Domain语句映射生成scala的数据类,Source语句生成输入数据类,加入输入数据解析的方法和输入路径,Target语句生成输出数据类,数据类的存放结构为ArrayList[Any]加入输出数据转化为文本的方法和输出路径,Class语句生成数据类的属性信息;

步骤22:将Rule语句映射生成scala的一个名为Main的object的主函数,并加入配置SparkConf和SparkContext的语句,并在主函数当中调用输入数据类的输入数据解析方法;

步骤23:将Filter语句生成相应的spark代码,调用RDD的filter方法进行数据处理;

步骤24:将Join语句映射生成相应的spark代码,调用RDD语句先让源数据对应的RDD生成对应的PairFunctionRDD,然后这些PairFunctionRDD调用join方法进行若干次连接,PariFunctionRDD中的ArrayList[Any]调用+=操作进行ArrayList的合并;

步骤25:将Deduplicate语句映射生成相应的spark代码,调用RDD的map方法首先转化成PairFunctionRDD,再调用reduce方法进行去重操作,最后再调用map方法转换回RDD;

步骤26:将Generate语句映射生成相应的spark代码,调用RDD的map或者flatmap方法,在其中新建一个ArrayList[Any],把生成的数据添加到这个结构中;

步骤27:将StopClause语句映射生成最后的赋值语句,赋值给最终结果,并调用输出数据类的输出数据方法,进行输出数据;

步骤3:在xtext和xtend书写好的M2S框架中输入midcore代码,生成spark代码,提交运行;

步骤4:采用xtend根据xtext grammer language书写的语法分析树,书写midcore到hadoop代码的映射规则,合称M2H框架;

所述步骤4的具体步骤为:

步骤41:将Rule对应生成Java的Main类和main函数,main函数包括了新创建一个hadoop的job;

步骤42:Domain里的Source和Target语句分别生成主类里面的两个静态方法,即输入数据的解析方法,将读入的文本数据按照格式进行解析,最终返回ArrayList[Object]类型;输出数据的解析方法将ArrayList类型转换按照要求的输出格式成文本进行输出;

步骤43:创建两轮Mapreduce处理过程,分别进行输入和输出操作,其中Map方法调用步骤42中数据输入和输出方法,Reducer不做操作;

步骤44:对于Filter语句,在Hadoop创建一轮mapreduce迭代job,map方法将ArrayList[Object]调用parallelStream()方法转化成Stream再调用filter方法进行数据处理,reduce方法不做操作;

步骤45:对于Join语句,新建一轮mapreduce迭代过程job,在map函数中调用parallellStream()方法转化成Stream类型,之后调用map方法抽取出用于匹配的关键字作为key,reduce方法中对key匹配的两个ArrayList调用addAll操作进行合并,完成连接操作;

步骤46:对于Deduplicate语句映射成相应hadoop代码,在hadoop中创建一轮mapreduce过程job,map方法将ArrayList[Object]调用parallelStream()方法转化成Stream再调用Streams中的reduce方法进行数据处理,Reducer中的reduce方法不做操作;

步骤47:对于Generate语句,新建一轮hadoop的mapreduce过程,在map函数中调用parallellStream()方法转化成Streams类型,之后调用Streams中的generate方法,创建新的ArrayList,放入想生成的数据,reduce过程不做操作;

步骤48:对于reduce语句,新建一轮hadoop的mapreduce过程job,mapper类中抽取key,接着为其定义一个reducer,在reduce函数中将Iterable类型转换成Stream类型,然后调用reduce方法进行reduce操作

步骤49:最后添加输出数据的这轮mapreduce过程job,FileInputFormat和FileOutputFormat类添加输入和输出路径,形成完整的hadoop程序;

步骤5:在xtext和xtend书写好的M2H框架中输入midcore代码,生成hadoop代码,提交运行。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201711418644.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top