针对开放式数据处理服务的优化方法和装置的制造方法

文档序号:8922577阅读:315来源:国知局
针对开放式数据处理服务的优化方法和装置的制造方法
【技术领域】
[0001]本申请涉及计算机通信领域,具体涉及一种针对开放式数据处理服务的优化方法和装置。
【背景技术】
[0002]随着计算机通信技术的发展,能够为用户提供针对PB级别数据的、实时性要求相对不高的批量处理能力的开放式数据处理服务受到了用户的喜欢。开放式数据处理服务主要应用于数据分析、海量数据统计、数据挖掘、商业智能等领域。开放式数据处理服务可以以多租户共享的公有云方式提供(面向针对中小型企业和开发者),也可以以私有云的方式部署在客户企业内部(面向大中型企业)。
[0003]开放式数据处理服务需要使用到开放式的、大规模的数据仓库,数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decis1n Support)。大规模数据仓库的数据结构从技术角度可以划分为三个部分:分段存储区、基础数据仓库和数据集市。数据仓库的上层应用,如BI报表、决策分析产品、即席查询、数据挖掘等主要依赖于数据集市的聚合数据(其中数据挖掘还会大量依赖于基础数据仓库)。数据集市的聚合数据的复用程度基本上决定了数据仓库的效率,而数据集市的聚合数据的复用程度取决于以下几个条件:数据集市的模型和汇总层级等架构是否总是准确满足上层业务的需求,并且能够适应业务系统的快速变化;是否有相应的工具和系统支持,帮助上层业务系统的开发者是否总是能够准备找到、理解数据集市中的各种数据;数据集市的更新也需要上次业务团队积极响应和实施变更。目前,主要依赖于数据架构师/架构小组的个人能力来保证上述的条件被满足。但是随着企业的业务的增长,数据的规模在快速膨胀,特别是平台性质的公有数据仓库,通过传统的自顶向下的方式来维护数据集市变得一个不可能完成的任务,从而导致数据仓库中存在着大量的重复运算和重复存储。一般情况下,数据仓库专家,业务模型专家会定期实施数据仓库重构,即针对开放式数据处理服务进行全局优化。
[0004]现有针对开放式数据处理服务的优化方法,在进行全局优化时,需要在精通业务和数据处理知识的专家领导下进行周期性重构,现有针对开放式数据处理服务的优化方法无法自动实现全局优化,且优化成本高。

【发明内容】

[0005]本申请所要解决的技术问题在于提供一种针对开放式数据处理服务的优化方法和装置,不需要理解业务,由平台服务提供商作为一项服务提供,用户不需要专门投入专家进行优化,用户只需点击一下,选择使用该业务即可,可以自动实现全局优化,且优化成本远低于培养和聘请一个/群专家。
[0006]为了解决上述问题,本申请公开了一种针对开放式数据处理服务的优化方法,所述方法包括:
[0007]获取用户的当前作业,查找所述当前作业的源头字段;
[0008]以所述当前作业的源头字段对应的数据为起始点,以字段为粒度,建立所述当前作业中的所有字段对应的所有数据之间的上下游关系,其中,在建立数据之间的上下游关系时,将作为计算第一数据的直接或间接输入之一的第二数据称为所述第一数据的上游,所述第一数据称为第二数据的下游,且当所述第一数据是所述第二数据的唯一下游数据,所述第二数据是所述第一数据的唯一上游数据时,将所述第二数据称为所述第一数据的直接上游,所述第一数据称为所述第二数据的直接下游;
[0009]根据所述当前作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述当前作业中的各个字段的归一化表达式;
[0010]根据所述当前作业中的各个字段的归一化表达式,计算得到所述当前作业中的各个字段的字段计算成本;
[0011]利用所述当前作业中的各个字段的归一化表达式,依据所述当前作业中的各个字段的字段计算成本,对所述当前作业中的各个字段进行优化,得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0012]将所述当前作业对应的当前作业代码优化为能够得到所述最优归一化表达式、所述最优字段计算成本的最优作业代码。
[0013]进一步地,查找所述当前作业的源头字段,包括:
[0014]扫描所述当前作业对应的当前作业代码;
[0015]解析所述当前作业代码中包含的数据的输入输出路径;
[0016]根据所述当前作业代码中包含的数据的输入输出路径,从所述当前作业代码或所述当前作业代码对应的数据仓库中,查找到与所述当前作业代码对应的只有数据输出没有数据输入的源头数据单元;
[0017]将所述源头数据单元中包括的字段作为源头字段。
[0018]进一步地,获取用户的当前作业时,还包括:
[0019]获取所述当前作业对应的优化时机信息,其中,所述优化时机信息包括静态优化或动态优化;
[0020]当所述优化时机信息为所述静态优化时,将所述当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,还包括:
[0021]将所述最优作业代码返回给所述用户;
[0022]当所述用户确认使用所述最优作业代码替换所述当前作业代码时,将所述当前作业代码替换为所述最优作业代码;
[0023]当所述优化时机信息为动态优化时,将所述当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,还包括:
[0024]将所述当前作业代码替换为所述最优作业代码。
[0025]进一步地,获取用户的当前作业时,还包括:
[0026]获取所述当前作业对应的优化对象信息,其中,所述优化对象信息包括增量优化或全量优化;
[0027]当所述优化对象信息为所述增量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业;
[0028]如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本;
[0029]如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则执行查找所述当前作业的源头字段的步骤;
[0030]当所述优化对象信息为所述全量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业;
[0031]如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业是否已经被优化过;
[0032]如果所述关联作业已经被优化过,则执行查找所述当前作业的源头字段的步骤。
[0033]进一步地,当所述优化对象信息为所述增量优化,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业之后,还包括:
[0034]如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则执行查找所述当前作业的源头字段的步骤。
[0035]进一步地,当所述优化对象信息为所述增量优化,判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本之后,还包括:
[0036]如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段;
[0037]以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系;
[0038]根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式;
[0039]根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本,然后执行查找所述当前作业的源头字段的步骤。
[0040]进一步地,当所述优化对象信息为所述全量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业之后,还包括:
[0041]如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则执行查找所述当前作业的源头字段的步骤。
[0042]进一步地,当所述优化对象信息为所述全量优化时,判断所述关联作业是否已经被优化过之后,还包括:
[0043]如果所述关联作业没有被优化过,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本;
[0044]如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段;
[0045]以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系;
[0046]根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式;
[0047]根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本;
[0048]利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0049]将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后执行查找所述当前作业的源头字段的步骤。
[0050]进一步地,当所述优化对象信息为所述全量优化时,判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本之后,还包括:
[0051]如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0052]将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后执行查找所述当前作业的源头字段的步骤。
[0053]为了解决上述问题,本申请还公开了一种针对开放式数据处理服务的优化装置,所述装置包括:
[0054]处理模块,用于获取用户的当前作业,查找所述当前作业的源头字段;
[0055]建立模块,用于以所述当前作业的源头字段对应的数据为起始点,以字段为粒度,建立所述当前作业中的所有字段对应的所有数据之间的上下游关系,其中,在建立数据之间的上下游关系时,将作为计算第一数据的直接或间接输入之一的第二数据称为所述第一数据的上游,所述第一数据称为第二数据的下游,且当所述第一数据是所述第二数据的唯一下游数据,所述第二数据是所述第一数据的唯一上游数据时,将所述第二数据称为所述第一数据的直接上游,所述第一数据称为所述第二数据的直接下游;
[0056]第一计算模块,用于根据所述当前作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述当前作业中的各个字段的归一化表达式;
[0057]第二计算模块,用于根据所述当前作业中的各个字段的归一化表达式,计算得到所述当前作业中的各个字段的字段计算成本;
[0058]第一优化模块,用于利用所述当前作业中的各个字段的归一化表达式,依据所述当前作业中的各个字段的字段计算成本,对所述当前作业中的各个字段进行优化,得
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1