一种将MapReduce转换为SQL的方法和装置的制造方法

文档序号:9235264阅读:192来源:国知局
一种将MapReduce转换为SQL的方法和装置的制造方法
【技术领域】
[0001]本申请涉及计算机技术领域,具体涉及一种将MapReduce转换为SQL的方法和装置。
【背景技术】
[0002]随着大数据时代的到来,为了解决大规模数据并行化计算的需求,出现了分布式运行系统(简称分布式系统)。为了满足数据分析人员的需求,常见的分布式系统都会提供SQL (Structured Query Language,结构化查询语言)功能。但SQL缺乏清晰的变量声明、循环分支等一般编程语言都具备的基础功能,使得很多编程人员不习惯于用SQL来表述复杂逻辑,而MapReduce (映射化简)则可以满足此类需求,并且在表述复杂逻辑时,比SQL还可能更清晰。
[0003]然而并不是所有提供SQL功能的分布式系统都提供MapReduce功能,目前没有存在有将MapReduce自动转换为SQL的方法,使用户可以通过MapReduce编程后运行于提供SQL功能的分布式系统。

【发明内容】

[0004]本申请所要解决的技术问题在于提供一种将MapReduce转换为SQL的方法和装置,可以将MapReduce自动转换成SQL,用户只需编写简单的MapReduce,就可以运行在提供SQL功能的分布式系统上,实现简单便捷。
[0005]为了解决上述问题,本申请公开了一种将MapReduce转换为SQL的方法,所述方法包括:
[0006]获取用户通过MapReduce框架输入的映射化简MapReduce ;
[0007]解析所述MapReduce,得到所述MapReduce的函数类型;其中,所述MapReduce的函数类型为只包括有映射Map函数的Map类型,或同时包括有Map函数和化简Reduce函数的 MapReduce 类型;
[0008]根据所述MapReduce的函数类型,查询得到与所述函数类型相应的MapReduce与结构化查询语言SQL映射关系,以及SQL模板;
[0009]根据与所述函数类型相应的MapReduce与SQL映射关系,以及SQL模板,将所述MapReduce 转换为 SQL。
[0010]进一步地,当所述MapReduce的函数类型为所述Map类型时,根据与所述函数类型相应的MapReduce与SQL映射关系,以及SQL模板,将所述MapReduce转换为SQL,包括:
[0011]获取所述MapReduce对应的输入定义信息;其中,所述输入定义信息包括输入数据来源;
[0012]根据所述输入定义信息中包括的输入数据来源,生成与所述Map类型相应的SQL模板中包括的Map函数的来自from功能的元素;
[0013]提取所述MapReduce中包括的Map函数的输入和输出;
[0014]将所述MapReduce中包括的Map函数的输入和输出,分别作为与所述Map类型相应的SQL模板中包括的Map函数的输入和输出;
[0015]将生成的与所述Map类型相应的SQL模板中包括的Map函数的from功能的元素,与所述Map类型相应的SQL模板中包括的Map函数的输入和输出,分别添加到与所述Map类型相应的SQL模板的相应位置,得到所述SQL。
[0016]进一步地,当所述MapReduce中包括的Map函数的输入和输出是通过动态方式定义时,提取所述MapReduce中包括的Map函数的输入和输出,包括:
[0017]从所述MapReduce中包括的Map函数的注释annotate中提取输入和输出。
[0018]进一步地,对所述压缩包进行解压缩时,还包括:
[0019]当所述MapReduce的函数类型为MapReduce类型时,根据与所述函数类型相应的MapReduce与SQL映射关系,以及SQL模板,将所述MapReduce转换为SQL,包括:
[0020]获取所述MapReduce对应的输入定义信息;其中,所述输入定义信息包括输入数据来源;
[0021]根据所述输入定义信息中包括的输入数据来源,生成与所述MapReduce类型相应的SQL模板中包括的Map函数的from功能的元素;
[0022]提取所述MapReduce中包括的Map函数的输入和输出;
[0023]将所述MapReduce中包括的Map函数的输入和输出,分别作为与所述MapReduce类型相应的SQL模板中包括的Map函数的输入和输出;
[0024]提取所述MapReduce中包括的Map函数的键值信息、所述MapReduce的分区排序需求息;
[0025]根据所述MapReduce中包括的Map函数的键值信息、所述MapReduce的分区排序需求信息,确定与所述MapReduce类型相应的SQL模板中包括的发布distribute by功能的键值、排序sort by功能的键值;
[0026]提取所述MapReduce中包括的Reduce函数的输入和输出;
[0027]将所述MapReduce中包括的Reduce函数的输入和输出,分别作为与所述MapReduce类型相应的SQL模板中包括的Reduce函数的输入和输出;
[0028]将生成的与所述MapReduce类型相应的SQL模板中包括的Map函数的from功能的元素,与所述MapReduce类型相应的SQL模板中包括的Map函数的输入和输出,与所述MapReduce类型相应的SQL模板中包括的distribute by功能的键值、sort by功能的键值,与所述MapReduce类型相应的SQL模板中包括的Reduce函数的输入和输出,分别添加到与所述MapReduce类型相应的SQL模板的相应位置,得到所述SQL。
[0029]进一步地,当所述MapReduce中包括的Map函数的输入和输出是通过动态方式定义时,提取所述MapReduce中包括的Map函数的输入和输出,包括:
[0030]从所述MapReduce中包括的Map函数的annotate中提取输入和输出;
[0031]相应地,提取所述MapReduce中包括的Reduce函数的输入和输出,包括:
[0032]从所述MapReduce中包括的Reduce函数的annotate中提取输入和输出。
[0033]进一步地,将所述MapReduce转换为SQL之后,还包括:
[0034]生成与所述SQL对应的用户自定义函数UDF适配器,其中,所述UDF适配器用于直接调用所述SQL中的Map函数,或所述SQL中的Map函数和Reduce函数。
[0035]为了解决上述问题,本申请还公开了一种将MapReduce转换为SQL的装置,所述装置包括:
[0036]获取模块,用于获取用户通过MapReduce框架输入的映射化简MapReduce ;
[0037]解析模块,用于解析所述MapReduce,得到所述MapReduce的函数类型;其中,所述MapReduce的函数类型为只包括有映射Map函数的Map类型,或同时包括有Map函数和化简Reduce 函数的 MapReduce 类型;
[0038]查询模块,用于根据所述MapReduce的函数类型,查询得到与所述函数类型相应的MapReduce与结构化查询语言SQL映射关系,以及SQL模板;
[0039]转换模块,用于根据与所述函数类型相应的MapReduce与SQL映射关系,以及SQL模板,将所述MapReduce转换为SQL。
[0040]进一步地,当所述MapReduce的函数类型为所述Map类型时,所述转换模块包括:
[0041]第一获取单元,用于获取所述MapReduce对应的输入定义信息;其中,所述输入定义信息包括输入数据来源;
[0042]第一生成单元,用于根据所述输入定义信息中包括的输入数据来源,生成与所述Map类型相应的SQL模板中包括的Map函数的来自from功能的元素;
[0043]第一提取单元,用于提取所述MapReduce中包括的Map函数的输入和输出;
[0044]第一处理单元,用于将所述MapReduce中包括的Map函数的输入和输出,分别作为与所述Map类型相应的SQL模板中包括的Map函数的输入和输出;
[0045]第一添加单元,用于将生成的与所述Map类型相应的SQL模板中包括的Map函数的from功能的元素,与所述Map类型相应的SQL模板中包括的Map函数的输入和输出,分别添加到与所述Map类型相应的SQL模板的相应位置,得到所述SQL。
[0046]进一步地,当所述MapReduce中包括的Map函数的输入和输出是通过动态方式定义时,所述第一提取单元包括:
[0047]第一提取子单元,用于从所述MapReduce中包括的Map函数的注释annotate中提取输入和输出。
[0048]进一步地,当所述MapReduce的函数类型为MapReduce类型时,所述转换模块包括:
[0049]第二获取单元,用于获取所述MapReduce对应的输入定义信息;其中,所述输入定义信息包括输入数据来源;
[0050]第二生成单元,用于根据所述输入定义信息中包括的输入数据来源,生成与所述MapReduce类型相应的SQL模板中包括的Map函数的from功能的元素;
[0051]第二提取单元,用于提取所述MapReduce中包括的Map函数的输入和输出;
[0052]第二处理单元,用于将所述MapReduce中包括的Map函数的输入和输出,分别作为与所述MapReduce类型相应的SQL模板中包括的Map函数的输入和输出;
[0053]第三提取单元,用于提取所述MapReduce中包括的Map函数的键值信息、所述MapReduce的分区排序需求信息;
[0054]确定单元,用于根据所述MapReduce中包括的Map函数的键值信息、所述MapReduce的分区排序需求信息,确定与所述MapReduce类型相应的SQL模板中包括的发布distribute by功能的键值、排序sort by功能的键值;
[0055]第四提取单元,用于提取所述MapReduce中包括的Reduce函数的输入和输出;
[0056]第三处理单元,用于将所述MapReduce中包括的Reduce函数的输入和输出,分别作为与所述MapReduce类型相应的SQL模板中包括的Reduce函数的输入和输出;
[0057]第二添加单元,用于将生成的与所述MapReduce类型相应的SQL模板中包括的Map函数的from功能的元素,与所述MapReduce类型相应的SQL模板中包括的Map
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1