针对开放式数据处理服务的优化方法和装置的制造方法
【技术领域】
[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]第一优化模块,用于利用所述当前作业中的各个字段的归一化表达式,依据所述当前作业中的各个字段的字段计算成本,对所述当前作业中的各个字段进行优化,得
到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0059]第二优化模块,用于将所述当前作业对应的当前作业代码优化为能够得到所述最优归一化表达式、所述最优字段计算成本的最优作业代码。
[0060]进一步地,所述处理模块包括:
[0061]扫描单元,用于扫描所述当前作业对应的当前作业代码;
[0062]解析单元,用于解析所述当前作业代码中包含的数据的输入输出路径;
[0063]第一查找单元,用于根据所述当前作业代码中包含的数据的输入输出路径,从所述当前作业代码或所述当前作业代码对应的数据仓库中,查找到与所述当前作业代码对应的只有数据输出没有数据输入的源头数据单元;
[0064]作为单元,用于将所述源头数据单元中包括的字段作为源头字段。
[0065]进一步地,所述处理模块还包括:
[0066]第一获取单元,用于获取所述当前作业对应的优化时机信息,其中,所述优化时机信息包括静态优化或动态优化;
[0067]当所述优化时机信息为所述静态优化时,所述第二优化模块还包括:
[0068]返回单元,用于将所述当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,将所述最优作业代码返回给所述用户;
[0069]第一替换单元,用于当所述用户确认使用所述最优作业代码替换所述当前作业代码时,将所述当前作业代码替换为所述最优作业代码;
[0070]当所述优化时机信息为动态优化时,所述第二优化模块还包括:
[0071]第二替换单元,用于将所述当前作业代码替换为所述最优作业代码。
[0072]进一步地,所述处理模块还包括:
[0073]第二获取单元,用于获取所述当前作业对应的优化对象信息,其中,所述优化对象信息包括增量优化或全量优化;
[0074]第一判断单元,用于当所述优化对象信息为所述增量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业;
[0075]第二判断单元,用于如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本;
[0076]第一通知单元,用于如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则通知所述处理模块执行查找所述当前作业的源头字段的步骤;
[0077]第三判断单元,用于当所述优化对象信息为所述全量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业;
[0078]第四判断单元,用于如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业是否已经被优化过;
[0079]第二通知单元,用于如果所述关联作业已经被优化过,则通知所述处理模块执行查找所述当前作业的源头字段的步骤。
[0080]进一步地,当所述优化对象信息为所述增量优化,所述处理模块还包括:
[0081]第三通知单元,用于如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则通知所述处理模块执行查找所述当前作业的源头字段的步骤。
[0082]进一步地,当所述优化对象信息为所述增量优化,所述处理模块还包括:
[0083]第二查找单元,用于如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段;
[0084]第一建立单元,用于以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系;
[0085]第一计算单元,用于根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式;
[0086]第二计算单元,用于根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本,然后通知所述处理模块执行查找所述当前作业的源头字段的步骤。
[0087]进一步地,当所述优化对象信息为所述全量优化时,所述处理模块还包括:
[0088]第四通知单元,用于如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则通知所述处理模块执行查找所述当前作业的源头字段的步骤。
[0089]进一步地,当所述优化对象信息为所述全量优化时,所述处理模块还包括:
[0090]第五判断单元,用于如果所述关联作业没有被优化过,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本;
[0091]第三查找单元,用于如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段;
[0092]第二建立单元,用于以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系;
[0093]第三计算单元,用于根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式;
[0094]第四计算单元,用于根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本;
[0095]第一优化单元,用于利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0096]第二优化单元,用于将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后通知所述处理模块执行查找所述当前作业的源头字段的步骤。
[0097]进一步地,当所述优化对象信息为所述全量优化时,所述处理模块还包括:
[0098]第三优化单元,用于如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0099]第四优化单元,用于将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后通知所述处理模块执行查找所述当前作业的源头字段的步骤。
[0100]与现有技术相比,本申请可以获得包括以下技术效果:
[0101]不需要理解业务,由平台服务提供商作为一项服务提供,用户不需要专门投入专家进行优化,用户只需点击一下,选择使用该业务即可,可以自动实现全局优化,且优化成本远低于培养和聘请一个/群专家。优化方法是迭代式,自动运行的,避免了周期的大量重构,为用户节省了由此带来的大量的人力成本和时间机会成本。
[0102]当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
【附图说明】
[0103]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0104]图1是本申请实施例的第一种针对开放式数据处理服务的优化方法流程图;
[0105]图2是本申请实施例的第二种针对开放式数据处理服务的优化方法流程图;
[0106]图3是本申请实施例的第三种针对开放式数据处理服务的优化方法流程图;
[0107]图4是本申请实施例的一种针对开放式数据处理服务的优化方法应用示意图;
[0108]图5是本申请实施例的一种针对开放式数据处理服务的优化装置结构示意图。
【具体实施方式】
[0109]以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
[0110]在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0111]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0112]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0113]实施例描沭
[0114]下面以一实施例对本申请方法的实现作进一步说明。如图1所示,为本申请实施例的一种针对开放式数据处理服务的优化方法流程图,该方法包括:
[0115]SlOl:获取用户的当前作业,查找当前作业的源头字段。
[0116]其中,用户可以是大中型企业、中小型企业等的开发人员、建模专家等。作业包括用户为解决企业问题等而编写的代码、以及一些数据等,其他地方类似,不再一一赘述。
[0117]其中,源头字段是在与当前作业相关联的所有作业对应的所有数据集合中且没有上游的数据字段,查找当前作业的源头字段的目标是为数据仓库中与当前作业相关联的所有作业对应的所有的数据找到起点。查找源头字段的终点可以是数据仓库同步入口,也可以基础数据仓库,取舍原则是:标记的源头字段之前的处理过程不会参与全局优化;源头字段对应的数据必须保持相对问题,尽可能隔离前段业务数据的变化。基于这两个原则,一般选择查找源头字段的终点是基础数据仓库。
[0118]具体地,本实施例中查找当前作业的源头字段,包括:
[0119]扫描当前作业对应的当前作业代码;
[0120]解析当前作业代码中包含的数据的输入输出路径;
[0121]根据当前作业代码中包含的数据的输入输出路径,从当前作业代码或当前作业代码对应的数据仓库中,查找到与当前作业代码对应的只有数据输出没有数据输入的源头数据单元;
[0122]将源头数据单元中包括的字段作为源头字段。
[0123]其中,当前作业代码中包含的数据、数据仓库中的数据可以以表格等形式存储,当数据是以表格形式存储时,与当前作业代码对应的只有数据输出没有数据输入的源头数据单元可以称为源头数据表。
[0124]S102:以当前作业的源头字段对应的数据为起始点,以字段为粒度,建立当前作业中的所有字段对应的所有数据之间的上下游关系。
[0125]其中,在建立数据之间的上下游关系时,将作为计算第一数据的直接或间
接输入之一的第二数据称为第一数据的上游,第一数据称为第二数据的下游,且当第一数据是第二数据的唯一下游数据,第二数据是第一数据的唯一上游数据时,将第二数据称为第一数据的直接上游,第一数据称为第二数据的直接下游。
[0126]具体地,以当前作业的源头字段对应的数据为起始点,以字段为粒度,建立当前作业中的所有字段对应的所有数据之间的上下游关系,可以以当前作业对应的当前作业代码、元数据作为输入,以字段为粒度,建立当前作业中的所有字段对应的所有数据之间的上下游关系。并且,上下游关系可以以图或表等形式建立,可以将建立的上下游关系称为数据血缘、或字段级血缘关系等。
[0127]S103:根据当前作业中的所有字段对应的所有数据之间的上下游关系,计算得到当前作业中的各个字段的归一化表达式。
[0128]其中,归一化表达式是当前作业中的各个字段通过源头字段对应的数据直接计算得到的表示式,表达式是归一的,只要计算逻辑一样,得到的归一化表达式应该是一样的。归一化表达式由计算单元组成,计算单元是归一化表达式中最小单元。
[0129]例如:当前作业对应的源头字段A的归一化表达为A=A,当前作业中包括的第一中间字段B的归一化表达式为B=A+1,当前作业中包括的第二中间字段C的归一化表达式为C=3 (A+1)等。
[0130]S104:根据当前作业中的各个字段的归一化表达式,计算得到当前作业中的各个字段的字段计算成本。
[0131]其中,当前作业中的各个字段的字段计算成本是按照当前作业中的各个字段的归一化表达式所估算出来的计算成本。也就是从源头字段出发,按照归一化表达式定义的计算路径进行计算,在数据仓库上需要消耗的估算成本。
[0132]可以采用如下方式,计算字段计算成本:
[0133](I)建模:为每一种计算单元建立与输入数据量的模型;
[0134](2)使用历史数据作为输入,通过计算单元的模型估算每个计算单元的实际成本。
[0135](3)通过迭代的方式,累计组成归一化表达式的每个计算单元的成本,得到字段计算成本。
[0136]S105:利用当前作业中的各个字段的归一化表达式,依据当前作业中的各个字段的字段计算成本,对当前作业中的各个字段进行优化,得到当前作业中的各个字段的最优归一化表达式、最优字段计算成本。
[0137]例如:当前作业对应的源头字段A表示为A=A,当前作业中包括的第一中间字段B的归一化表达式为B=A+1,当前作业中包括的第二中间字段C的归一化表达式为C=3 (A+1)等。优化后,当前作业对应的源头字段A表示为A=A,当前作业中包括的第一中间字段B的归一化表达式为B=A+1,当前作业中包括的第二中间字段C的归一化表达式为C=3B等
[0138]S106:将当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码。
[0139]具体地,在进行优化的时候,还可以设置优化时机供用户选择,即在步骤SlOl中获取用户的当前作业时,还包括:
[0140]获取当前作业对应的优化时机信息,其中,优化时机信息包括静态优化或动态优化;
[0141]当优化时机信息为静态优化时,将当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,还包括:
[0142]将最优作业代码返回给用户;
[0143]当用户确认使用最优作业代码替换当前作业代码时,将当前作业代码替换为最优作业代码;
[0144]当优化时机信息为动态优化时,将当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,还包括:
[0145]将当前作业代码替换为最优作业代码。
[0146]具体地,用户可以根据实际需要,选择不同的优化时机进行优化,并且根据上述描述可以看出,静态优化是在用户提交作业后对作业进行优化重写,由用户确认后重新提交,用户可以看到优化后的代码。动态优化是在作业被调度时对作业进行优化,并将优化后的结果提交到调度系统实际运行,用户只可以看到的自己编写的优化前的代码。
[0147]具体地,在进行优化的时候,还可以设置优化范围(对象)供用户选择,即在步骤SlOl中获取用户的当前作业时,还包括:
[0148]获取当前作业对应的优化对象信息,其中,优化对象信息包括增量优化或全量优化。
[0149]其中,增量优化只对当前提交的当前作业进行优化。全量优化不仅对当前提交的当前作业进行优化,而且还对与当前作业相关的关联作业进行优化。其中,与当前作业相关的关联作业是指与当前作业之间存在数据上或计算等上的联系,是为了解决同一问题等而提交的作业。
[0150]参见图2,当优化对象信息为增量优化时,获取当前作业对应的优化对象信息之后,具体包括:
[0151]S201:判断当前作业代码对应的数据仓库中是否存在有与当前作业相关的关联作业,如果数据仓库中存在有与当前作业相关的关联作业,则执行S202 ;否则,执行SlOl中的查找当前作业的源头字段的步骤。
[0152]具体地,如果数据仓库中没有存在有与当前作业相关的关联作业,则当前作业可能是用户提交的第一次作业。
[0153]S202:判断关联作业中的各个字段是否有对应的归一化表达式和字段计算成本,如果关联作业中的各个字段有对应的归一化表达式和字段计算成本,则执行SlOl中的查找当前作业的源头字段的步骤;否则,执行S203。
[0154]具体地,如果用户在对当前作业进行全局优化之前,没有选择采用本实施例的方法对与当前作业相关的关联作业进行全局优化,则系统可以设置在接收到关联作业后,不计算关联作业中的各个字段有对应的归一化表达式和字段计算成本,也可以设置在接收到关联作业后,只计算关联作业中的各个字段有对应的归一化表达式和字段计算成本,而不对关联作业进行全局优化。
[0155]当用户在对当前作业进行全局优化之前,没有选择采用本实施例的方法对与当前作业相关的关联作业进行全局优化,且系统的设置为在接收到关联作业后,不计算关联作业中的各个字段有对应的归一化表达式和字段计算成本时,执行本步骤时的判断结果将是:关联作业中的各个字段没有对应的归一化表达式和字段计算成本。
[0156]S203:查找关联作业的源头字段。
[0157]S204:以关联作业的源头字段对应的数据为起始点,以字段为粒度,建立关联作业中的所有字段对应的所有数据之间的上下游关系。
[0158]S205:根据关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到关联作业中的各个字段的归一化表达式。
[0159]S206:根据关联作业中的各个字段的归一化表达式,计算得到关联作业中的各个字段的字段计算成本,然后执行SlOl中的查找当前作业的源头字段的步骤。
[0160]参见图3,当优化对象信息为全量优化时,获取当前作业对应的优化对象信息之后,具体包括:
[0161]S301:判断当前作业代码对应的数据仓库中是否存在有与当前作业相关的关联作业,如果数据仓库中存在有与当前作业相关的关联作业,则执行S302 ;否则,执行SlOl中的查找当前作业的源头字段的步骤。
[0162]S302:判断关联作业是否已经被优化过,如果关联作业已经被优化过,则执行SlOl中的查找当前作业的源头字段的步骤;否则,执行S303。
[0163]关联作业是否已经被优化过,即关联作业是否已经采用本实施例的全局优化方法进行了优化。
[0164]S303:判断关联作业中的各个字段是否有对应的归一化表达式和字段计算成本,如果关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则执行S304 ;否贝U,执行S308。
[0165]S304:查找关联作业的源头字段。
[0166]S305:以关联作业的源头字段对应的数据为起始点,以字段为粒度,建立关联作业中的所有字段对应的所有数据之间的上下游关系。
[0167]S306:根据关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到关联作业中的各个字段的归一化表达式。
[0168]S307:根据关联作业中的各个字段的归一化表达式,计算得到关联作业中的各个字段的字段计算成本。
[0169]S308:利用关联作业中的各个字段的归一化表达式,依据关联作业中的各个字段的字段计算成本,对关联作业中的各个字段进行优化,得到关联作业中的各个字段的最优归一化表达式、最优字段计算成本。
[0170]S309:将关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后执行SlOl中的查找当前作业的源头字段的步骤。
[0171]需要说明的是,可以建立归一化字段库,将各个字段的归一化表达式、最优归一化表达式、字段计算成本、最优字段计算成本存储在其中。并且,为了便于区分各个字段,可以为各个字段设置UUID,通过UUID唯一标识一个字段,当数据的形式为表格式,UUID可以由名字空间+表名+列名组成。并且还可以建立全局优化器,通过全局优化器执行全局优化,并收集优化的命中率等优化信息,主要的优化信息包括但不限于:重复出现的部分字段的未命中情况;重复出现的大量字段未命中情况;从不被命中,或很少被命中的模型数据。未命中的作业可以经过整理提供给专家进行人工优化,或者作为自动化模型优化系统的输入。还可以建立优化日志,将收集的优化信息存储在优化日志,根据优化日志中存储的优化信息,建立数据仓库模型,并提供个用户,供用户参考使用。
[0172]并且,需要说明的是,现有的针对开放式数据服务的优化主要是语句级别的优化,而本实施例的全局优化方法与现有的语句级别的优化并非互斥或者选择关系,而是可以叠加的,本实施例的全局优化方法可以对现有的语句级别的优化进行补充。
[0173]参见图4,为本实施例方法的一种具体应用实例的示意图。
[0174]本实施例的优化方法可以为部署在公有云或者私有云中的大规模、开放式数据处理服务提供一种优化方法。通过本实施例的优化方法,可以为数据处理服务服务的用户和/或提供商节省非常可观的计算时间和数据存储成本。
[0175]本实施例所述的针对开放式数据处理服务的优化方法,不需要理解业务,由平台服务提供商作为一项服务提供,用户不需要专门投入专家进行优化,用户只需点击一下,选择使用该业务即可,可以自动实现全局优化,且优化成本远低于培养和聘请一个/群专家。优化方法是迭代式,自动运行的,避免了周期的大量重构,为用户节省了由此带来的大量的人力成本和时间机会成本。
[0176]如图5所示,是本申请实施例的一种针对开放式数据处理服务的优化装置结构图,该装置包括:
[0177]处理模块401,用于获取用户的当前作业,查找当前作业的源头字段;
[0178]建立模块402,用于以当前作业的源头字段对应的数据为起始点,以字段为粒度,建立当前作业中的所有字段对应的所有数据之间的上下游关系,其中,在建立数据之间的上下游关系时,将作为计算第一数据的直接或间接输入之一的第二数据称为第一数据的上游,第一数据称为第二数据的下游,且当第一数据是第二数据的唯一
下游数据,第二数据是第一数据的唯一上游数据时,将第二数据称为第一数据的直接上游,第一数据称为第二数据的直接下游;
[0179]第一计算模块403,用于根据当前作业中的所有字段对应的所有数据之间的上下游关系,计算得到当前作业中的各个字段的归一化表达式;
[0180]第二计算模块404,用于根据当前作业中的各个字段的归一化表达式,计算得到当前作业中的各个字段的字段计算成本;
[0181]第一优化模块405,用于利用当前作业中的各个字段的归一化表达式,依据当前作业中的各个字段的字段计算成本,对当前作业中的各个字段进行优化,得到当前作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0182]第二优化模块406,用于将当前作业对应的当前作业代码优化为能够得到最优归一化表达式、最优字段计算成本的最优作业代码。
[0183]优选地,处理模块401包括:
[0184]扫描单元,用于扫描当前作业对应的当前作业代码;
[0185]解析单元,用于解析当前作业代码中包含的数据的输入输出路径;
[0186]第一查找单元,用于根据当前作业代码中包含的数据的输入输出路径,从当前作业代码或当前作业代码对应的数据仓库中,查找到与当前作业代码对应的只有数据输出没有数据输入的源头数据单元;
[0187]作为单元,用于将源头数据单元中包括的字段作为源头字段。
[0188]优选地,处理模块401还包括:
[0189]第一获取单元,用于获取当前作业对应的优化时机信息,其中,优化时机信息包括静态优化或动态优化;
[0190]当优化时机信息为所述静态优化时,第二优化模块还包括:
[0191]返回单元,用于将当前作业对应的当前作业代码优化为能够得到当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,将最优作业代码返回给所述用户;
[0192]第一替换单元,用于当所述用户确认使用最优作业代码替换当前作业代码时,将当前作业代码替换为最优作业代码;
[0193]当优化时机信息为动态优化时,第二优化模块406还包括:
[0194]第二替换单元,用于将当前作业代码替换为最优作业代码。
[0195]优选地,处理模块401还包括:
[0196]第二获取单元,用于获取当前作业对应的优化对象信息,其中,优化对象信息包括增量优化或全量优化;
[0197]第一判断单元,用于当优化对象信息为所述增量优化时,判断当前作业代码对应的数据仓库中是否存在有与当前作业相关的关联作业;
[0198]第二判断单元,用于如果数据仓库中存在有与当前作业相关的关联作业,则判断关联作业中的各个字段是否有对应的归一化表达式和字段计算成本;
[0199]第一通知单元,用于如果关联作业中的各个字段有对应的归一化表达式和字段计算成本,则通知处理模块401执行查找当前作业的源头字段的步骤;
[0200]第三判断单元,用于当优化对象信息为所述全量优化时,判断当前作业代码对应的数据仓库中是否存在有与当前作业相关的关联作业;
[0201]第四判断单元,用于如果数据仓库中存在有与当前作业相关的关联作业,则判断关联作业是否已经被优化过;
[0202]第二通知单元,用于如果关联作业已经被优化过,则通知处理模块401执行查找当前作业的源头字段的步骤。
[0203]优选地,当优化对象信息为所述增量优化,处理模块401还包括:
[0204]第三通知单元,用于如果数据仓库中没有存在有与当前作业相关的关联作业,则通知处理模块401执行查找当前作业的源头字段的步骤。
[0205]优选地,当优化对象信息为所述增量优化,处理模块401还包括:
[0206]第二查找单元,用于如果关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找关联作业的源头字段;
[0207]第一建立单元,用于以关联作业的源头字段对应的数据为起始点,以字段为粒度,建立关联作业中的所有字段对应的所有数据之间的上下游关系;
[0208]第一计算单元,用于根据关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到关联作业中的各个字段的归一化表达式;
[0209]第二计算单元,用于根据关联作业中的各个字段的归一化表达式,计算得到关联作业中的各个字段的字段计算成本,然后通知处理模块401执行查找当前作业的源头字段的步骤。
[0210]优选地,当优化对象信息为所述全量优化时,处理模块401还包括:
[0211]第四通知单元,用于如果数据仓库中没有存在有与当前作业相关的关联作业,则通知处理模块401执行查找当前作业的源头字段的步骤。
[0212]优选地,当优化对象信息为所述全量优化时,处理模块401还包括:
[0213]第五判断单元,用于如果关联作业没有被优化过,则判断关联作业中的各个字段是否有对应的归一化表达式和字段计算成本;
[0214]第三查找单元,用于如果关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找关联作业的源头字段;
[0215]第二建立单元,用于以关联作业的源头字段对应的数据为起始点,以字段为粒度,建立关联作业中的所有字段对应的所有数据之间的上下游关系;
[0216]第三计算单元,用于根据关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到关联作业中的各个字段的归一化表达式;
[0217]第四计算单元,用于根据关联作业中的各个字段的归一化表达式,计算得到关联作业中的各个字段的字段计算成本;
[0218]第一优化单元,用于利用关联作业中的各个字段的归一化表达式,依据关联作业中的各个字段的字段计算成本,对关联作业中的各个字段进行优化,得到关联作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0219]第二优化单元,用于将关联作业对应的关联作业代码优化为能够得到关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后通知处理模块401执行查找当前作业的源头字段的步骤。
[0220]优选地,当优化对象信息为所述全量优化时,处理模块401还包括:
[0221]第三优化单元,用于如果关联作业中的各个字段有对应的归一化表达式和字段计算成本,则利用关联作业中的各个字段的归一化表达式,依据关联作业中的各个字段的字段计算成本,对关联作业中的各个字段进行优化,得到关联作业中的各个字段的最优归一化表达式、最优字段计算成本;
[0222]第四优化单元,用于将关联作业对应的关联作业代码优化为能够得到关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后通知处理模块401执行查找当前作业的源头字段的步骤。
[0223]本实施例所述的针对开放式数据处理服务的优化装置,不需要理解业务,由平台服务提供商作为一项服务提供,用户不需要专门投入专家进行优化,用户只需点击一下,选择使用该业务即可,可以自动实现全局优化,且优化成本远低于培养和聘请一个/群专家。优化方法是迭代式,自动运行的,避免了周期的大量重构,为用户节省了由此带来的大量的人力成本和时间机会成本。
[0224]所述装置与前述的方法流程描述对应,不足之处参考上述方法流程的叙述,不再
--赘述。
[0225]上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。
【主权项】
1.一种针对开放式数据处理服务的优化方法,其特征在于,所述方法包括: 获取用户的当前作业,查找所述当前作业的源头字段; 以所述当前作业的源头字段对应的数据为起始点,以字段为粒度,建立所述当前作业中的所有字段对应的所有数据之间的上下游关系; 根据所述当前作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述当前作业中的各个字段的归一化表达式; 根据所述当前作业中的各个字段的归一化表达式,计算得到所述当前作业中的各个字段的字段计算成本; 利用所述当前作业中的各个字段的归一化表达式,依据所述当前作业中的各个字段的字段计算成本,对所述当前作业中的各个字段进行优化,得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本; 将所述当前作业对应的当前作业代码优化为能够得到所述最优归一化表达式、所述最优字段计算成本的最优作业代码。2.如权利要求1所述的方法,其特征在于, 在建立数据之间的上下游关系时,将作为计算第一数据的直接或间接输入之一的第二数据称为所述第一数据的上游,所述第一数据称为第二数据的下游,且当所述第一数据是所述第二数据的唯一下游数据,所述第二数据是所述第一数据的唯一上游数据时,将所述第二数据称为所述第一数据的直接上游,所述第一数据称为所述第二数据的直接下游。3.如权利要求2所述的方法,其特征在于,查找所述当前作业的源头字段,包括: 扫描所述当前作业对应的当前作业代码; 解析所述当前作业代码中包含的数据的输入输出路径; 根据所述当前作业代码中包含的数据的输入输出路径,从所述当前作业代码或所述当前作业代码对应的数据仓库中,查找到与所述当前作业代码对应的只有数据输出没有数据输入的源头数据单元; 将所述源头数据单元中包括的字段作为源头字段。4.如权利要求1或3所述的方法,其特征在于,获取用户的当前作业时,还包括: 获取所述当前作业对应的优化时机信息,其中,所述优化时机信息包括静态优化或动态优化; 当所述优化时机信息为所述静态优化时,将所述当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,还包括: 将所述最优作业代码返回给所述用户; 当所述用户确认使用所述最优作业代码替换所述当前作业代码时,将所述当前作业代码替换为所述最优作业代码; 当所述优化时机信息为动态优化时,将所述当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,还包括: 将所述当前作业代码替换为所述最优作业代码。5.如权利要求1或3所述的方法,其特征在于,获取用户的当前作业时,还包括: 获取所述当前作业对应的优化对象信息,其中,所述优化对象信息包括增量优化或全量优化; 当所述优化对象信息为所述增量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业; 如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本; 如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则执行查找所述当前作业的源头字段的步骤; 当所述优化对象信息为所述全量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业; 如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业是否已经被优化过; 如果所述关联作业已经被优化过,则执行查找所述当前作业的源头字段的步骤。6.如权利要求5所述的方法,其特征在于
,当所述优化对象信息为所述增量优化,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业之后,还包括: 如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则执行查找所述当前作业的源头字段的步骤。7.如权利要求5所述的方法,其特征在于,当所述优化对象信息为所述增量优化,判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本之后,还包括: 如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段; 以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系; 根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式; 根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本,然后执行查找所述当前作业的源头字段的步骤。8.如权利要求5所述的方法,其特征在于,当所述优化对象信息为所述全量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业之后,还包括: 如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则执行查找所述当前作业的源头字段的步骤。9.如权利要求5所述的方法,其特征在于,当所述优化对象信息为所述全量优化时,判断所述关联作业是否已经被优化过之后,还包括: 如果所述关联作业没有被优化过,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本; 如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段; 以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系; 根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式; 根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本; 利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本; 将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后执行查找所述当前作业的源头字段的步骤。10.如权利要求9所述的方法,其特征在于,当所述优化对象信息为所述全量优化时,判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本之后,还包括: 如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本; 将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后执行查找所述当前作业的源头字段的步骤。11.一种针对开放式数据处理服务的优化装置,其特征在于,所述装置包括: 处理模块,用于获取用户的当前作业,查找所述当前作业的源头字段; 建立模块,用于以所述当前作业的源头字段对应的数据为起始点,以字段为粒度,建立所述当前作业中的所有字段对应的所有数据之间的上下游关系; 第一计算模块,用于根据所述当前作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述当前作业中的各个字段的归一化表达式; 第二计算模块,用于根据所述当前作业中的各个字段的归一化表达式,计算得到所述当前作业中的各个字段的字段计算成本; 第一优化模块,用于利用所述当前作业中的各个字段的归一化表达式,依据所述当前作业中的各个字段的字段计算成本,对所述当前作业中的各个字段进行优化,得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本; 第二优化模块,用于将所述当前作业对应的当前作业代码优化为能够得到所述最优归一化表达式、所述最优字段计算成本的最优作业代码。12.如权利要求11所述的装置,其特征在于, 所述建立模块在建立数据之间的上下游关系时,将作为计算第一数据的直接或间接输入之一的第二数据称为所述第一数据的上游,所述第一数据称为第二数据的下游,且当所述第一数据是所述第二数据的唯一下游数据,所述第二数据是所述第一数据的唯一上游数据时,将所述第二数据称为所述第一数据的直接上游,所述第一数据称为所述第二数据的直接下游。13.如权利要求12所述的装置,其特征在于,所述处理模块包括: 扫描单元,用于扫描所述当前作业对应的当前作业代码; 解析单元,用于解析所述当前作业代码中包含的数据的输入输出路径; 第一查找单元,用于根据所述当前作业代码中包含的数据的输入输出路径,从所述当前作业代码或所述当前作业代码对应的数据仓库中,查找到与所述当前作业代码对应的只有数据输出没有数据输入的源头数据单元; 作为单元,用于将所述源头数据单元中包括的字段作为源头字段。14.如权利要求11或13所述的装置,其特征在于,所述处理模块还包括: 第一获取单元,用于获取所述当前作业对应的优化时机信息,其中,所述优化时机信息包括静态优化或动态优化; 当所述优化时机信息为所述静态优化时,所述第二优化模块还包括: 返回单元,用于将所述当前作业对应的当前作业代码优化为能够得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码之后,将所述最优作业代码返回给所述用户; 第一替换单元,用于当所述用户确认使用所述最优作业代码替换所述当前作业代码时,将所述当前作业代码替换为所述最优作业代码; 当所述优化时机信息为动态优化时,所述第二优化模块还包括: 第二替换单元,用于将所述当前作业代码替换为所述最优作业代码。15.如权利要求11或13所述的装置,其特征在于,所述处理模块还包括: 第二获取单元,用于获取所述当前作业对应的优化对象信息,其中,所述优化对象信息包括增量优化或全量优化; 第一判断单元,用于当所述优化对象信息为所述增量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业; 第二判断单元,用于如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本; 第一通知单元,用于如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则通知所述处理模块执行查找所述当前作业的源头字段的步骤; 第三判断单元,用于当所述优化对象信息为所述全量优化时,判断所述当前作业代码对应的数据仓库中是否存在有与所述当前作业相关的关联作业; 第四判断单元,用于如果所述数据仓库中存在有与所述当前作业相关的关联作业,则判断所述关联作业是否已经被优化过; 第二通知单元,用于如果所述关联作业已经被优化过,则通知所述处理模块执行查找所述当前作业的源头字段的步骤。16.如权利要求15所述的装置,其特征在于,当所述优化对象信息为所述增量优化,所述处理模块还包括: 第三通知单元,用于如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则通知所述处理模块执行查找所述当前作业的源头字段的步骤。17.如权利要求15所述的装置,其特征在于,当所述优化对象信息为所述增量优化,所述处理模块还包括: 第二查找单元,用于如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段; 第一建立单元,用于以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系; 第一计算单元,用于根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式; 第二计算单元,用于根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本,然后通知所述处理模块执行查找所述当前作业的源头字段的步骤。18.如权利要求15所述的装置,其特征在于,当所述优化对象信息为所述全量优化时,所述处理模块还包括: 第四通知单元,用于如果所述数据仓库中没有存在有与所述当前作业相关的关联作业,则通知所述处理模块执行查找所述当前作业的源头字段的步骤。19.如权利要求15所述的装置,其特征在于,当所述优化对象信息为所述全量优化时,所述处理模块还包括: 第五判断单元,用于如果所述关联作业没有被优化过,则判断所述关联作业中的各个字段是否有对应的归一化表达式和字段计算成本; 第三查找单元,用于如果所述关联作业中的各个字段没有对应的归一化表达式和字段计算成本,则查找所述关联作业的源头字段; 第二建立单元,用于以所述关联作业的源头字段对应的数据为起始点,以字段为粒度,建立所述关联作业中的所有字段对应的所有数据之间的上下游关系; 第三计算单元,用于根据所述关联作业中的所有字段对应的所有数据之间的上下游关系,计算得到所述关联作业中的各个字段的归一化表达式; 第四计算单元,用于根据所述关联作业中的各个字段的归一化表达式,计算得到所述关联作业中的各个字段的字段计算成本; 第一优化单元,用于利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本; 第二优化单元,用于将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后通知所述处理模块执行查找所述当前作业的源头字段的步骤。20.如权利要求19所述的装置,其特征在于,当所述优化对象信息为所述全量优化时,所述处理模块还包括: 第三优化单元,用于如果所述关联作业中的各个字段有对应的归一化表达式和字段计算成本,则利用所述关联作业中的各个字段的归一化表达式,依据所述关联作业中的各个字段的字段计算成本,对所述关联作业中的各个字段进行优化,得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本; 第四优化单元,用于将所述关联作业对应的关联作业代码优化为能够得到所述关联作业中的各个字段的最优归一化表达式、最优字段计算成本的最优作业代码,然后通知所述处理模块执行查找所述当前作业的源头字段的步骤。
【专利摘要】本申请公开了一种针对开放式数据处理服务的优化方法和装置,属于计算机通信领域。所述方法包括:获取用户的当前作业,查找所述当前作业的源头字段;建立所述当前作业中的所有字段对应的所有数据之间的上下游关系;计算得到所述当前作业中的各个字段的归一化表达式、字段计算成本;利用所述当前作业中的各个字段的归一化表达式,依据所述当前作业中的各个字段的字段计算成本,对所述当前作业中的各个字段进行优化,得到所述当前作业中的各个字段的最优归一化表达式、最优字段计算成本;将所述当前作业对应的当前作业代码优化为能够得到所述最优归一化表达式、所述最优字段计算成本的最优作业代码。可以自动实现全局优化,且优化成本低。
【IPC分类】G06F17/30
【公开号】CN104899209
【申请号】CN201410078866
【发明人】王磊
【申请人】阿里巴巴集团控股有限公司
【公开日】2015年9月9日
【申请日】2014年3月5日