[发明专利]基于模型转换由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代码,提交运行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711418644.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种高耐磨的水性上光油的制备方法
- 下一篇:一种绝缘遮蔽罩试验装置