CN105164667A - 修改分析流 - Google Patents

修改分析流 Download PDF

Info

Publication number
CN105164667A
CN105164667A CN201380076218.9A CN201380076218A CN105164667A CN 105164667 A CN105164667 A CN 105164667A CN 201380076218 A CN201380076218 A CN 201380076218A CN 105164667 A CN105164667 A CN 105164667A
Authority
CN
China
Prior art keywords
flow graph
stream
enforcement engine
flow
engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380076218.9A
Other languages
English (en)
Other versions
CN105164667B (zh
Inventor
A·西米特西斯
W·K·威尔金森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Antite Software Co., Ltd.
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN105164667A publication Critical patent/CN105164667A/zh
Application granted granted Critical
Publication of CN105164667B publication Critical patent/CN105164667B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24524Access plan code generation and invalidation; Reuse of access plans
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本文公开了用于修改分析流的技术。流可以与执行引擎关联。可以获得表示流的流图。该流图可以用逻辑语言修改。例如,可以生成用逻辑语言表达的新流图。可以从修改后的流图生成程序。

Description

修改分析流
背景技术
存在很多用于处理分析流的执行引擎。这些引擎可能只接受用高级编程语言,如特定的脚本语言(例如,PigLatin、结构化查询语言(SQL))或者某个流设计工具(例如,Pentaho数据集成(PDI)平台)的语言所表示的输入流。而且,即使是支持相同的编程语言或者流设计工具的执行引擎也可能会提供分析操作的不同实现等等。因此,一个引擎的输入流可能与另一个引擎的输入流不同,即使这两个流是要达到相同的结果。出于这些考虑,修改分析流可能是具有挑战性的并且耗时。而且,若要用一种通用的解决方案在各种各样的经常包括各种执行引擎的分析环境中修改分析流同样是困难的。
附图说明
下面的详细描述参考附图,其中:
图1图示出根据示例的修改分析流的方法。
图2图示出根据示例的修改流图的方法。
图3图示出根据示例的示例流。
图4图示出根据示例的与示例流对应的、具有解析记号的示例执行计划。
图5图示出根据示例的用于修改分析流的计算系统。
图6图示出根据示例的用于修改分析流的计算机可读介质。
图7图示出根据示例的使用所公开的技术获得的实验结果。
具体实施方式
如本文所描述的,本申请涉及对一个或多个数据集应用一系列操作的分析数据处理引擎。此一系列操作在本文中被称为“流”,因为可以将分析计算建模成有向图,在有向图中,节点表示对数据集的操作,并且弧线表示操作之间的数据流。流通常用人们容易编写、阅读和理解的高级语言来说明。给定流的高级语言表示在本文中被称为“程序”。例如,高级语言可以是特定的脚本语言(例如,PigLatin、结构化查询语言(SQL))或者某个流设计工具(例如,Pentaho数据集成(PDI)平台)的语言。在一些情况下,分析引擎是个黑盒子,即,其内部的处理是隐藏的。为了修改要输入到黑盒子执行引擎中的程序,通常要编写一个附属处理引擎,该附属处理引擎是在执行引擎和应用程序中间用于创建程序的一个独立的软件模块中间体。然后,这个附属引擎可以用于从源程序创建一个新的、修改后的程序,其中新程序具有附加的特征。为此,附属引擎通常需要理解程序的语义。编写这样的附属引擎可能会是困难的,因为在各种各样的分析环境中,有大量不同的执行引擎,这些执行引擎支持各种语言,并且其中许多执行引擎具有特定于唯一引擎的操作实现。而且,经常可以用各种方式表达一个程序,以达到相同的结果。此外,翻译程序会需要元数据,而从黑盒子执行引擎的外部看不见元数据,因此需要进行推断,这通常容易出错。
许多分析引擎支持“解释计划”命令,在给定源程序的情况下,“解释计划”命令会返回该程序的流图。这个流图可以被称作“执行计划”或“解释计划”(在下文中,称作“执行计划”)。所公开的系统和方法通过解析执行计划而非解析特定于用户的高级语言程序来均衡执行计划。这样,可能任务更简单,并且信息更丰富,因为分析引擎优化器所做的一些实体性的选择可能在执行计划中是有用的,而在原始的源程序(例如,实现算法、成本估计、资源利用)中会是不可用的。接着,附属引擎可以修改流图,以增加功能。然后,附属引擎可以从修改后的流图生成高级语言的新程序,以在黑盒子执行引擎(或者某些其它引擎)中执行。并且,可以利用优化和分解,以便用更为有效的方式执行流。
根据示例,实现本文所描述的原理的技术可以包括:接收与第一执行引擎关联的流。可以获得表示该流的流图。例如,可以从第一执行引擎请求执行计划。流图可以用逻辑语言修改。例如,可以生成用逻辑语言表达的逻辑流图。可以从修改后的流图生成程序,以在执行引擎上执行。执行引擎可以是第一执行引擎,或者可以是不同的执行引擎。而且,执行引擎可以是一个以上执行引擎,使得多个程序被生成。以下参考附图描述附加示例、优点、特征、修改等等。
图1图示出根据示例的修改分析流的方法。方法100可以通过计算设备、系统或者计算机,例如计算系统500或者计算机600来执行。用于实现方法100的计算机可读指令可以存储在计算机可读存储介质上。在本文中,这些存储在介质上的指令被称作“模块”,并且可以由计算机执行。
方法100可以从110开始,在110处,可以接收与第一执行引擎关联的流。该流可以包括例如实现类型、资源、存储路径等等的实现细节,并且这些实现细节是特定于第一执行引擎的。例如,取决于第一执行引擎的类型,该流可以用高级编程语言来表达,比如用特定的编程语言(例如,SQL、PigLatin)或者用如提取-变换-加载(ELT)流设计工具PDI这样的特定流设计工具的语言来表达。
可以有一个以上的流。例如,可以接收混合流,该混合流可以包括针对不同执行引擎的多个部分(即,子流)。例如,第一流可以用SQL编写,而第二部分可以用PigLatin编写。另外,在支持相同编程语言的执行引擎之间也可能有差异。例如,第一SQL执行引擎(例如,HPVerticaSQL引擎)的脚本可能与第二SQL执行引擎(例如,OracleSQL引擎)不兼容(例如,可能不正确地运行)。
在120处,可以获得表示该流的流图。该流图可以是从第一执行引擎获得的执行计划。例如,可以用解释计划命令请求执行计划。如果有多个流,可以从每个流的相应执行引擎获得该流的单独执行计划。如果流用流设计工具的语言表达,则可以从关联的执行引擎请求流说明(例如,用XML表达的)。可以基于从引擎接收的流说明而生成流图。
在130处,可以使用逻辑语言修改流图。图2图示出根据示例的修改流图的方法200。
在210处,可以将流图解析为多个要素。例如,解析器可以分析流图,并针对流图中每个操作符或者数据存储获取特定于引擎的信息。解析器可以输出构成流图的节点(此处称为“要素”)。因为解析器是特定于引擎的,所以每个被支持的引擎可以有一个单独的解析器。这样的解析器可以作为插件被添加到系统中。
在220处,可以将解析后的流图转换为采用逻辑语言的第二流图。该第二流图在本文中被称作“逻辑流图”。该逻辑流图可以通过将多个要素转换为用逻辑语言表示的逻辑要素而生成。这里,示例的逻辑语言是xLM,该语言是由惠普公司的惠普实验室为分析流而研发的。但是,也可以用其他的逻辑语言。另外,可以使用字典来进行这个转换。字典可以包括逻辑语言和与第一实体流的至少一个执行引擎相关的编程语言之间的映射。因此,字典224使得将特定于引擎的多个要素翻译成引擎不可知的逻辑要素,逻辑要素构成逻辑流。在2013年6月24日提交的PCT/US2013/047252中,进一步详细描述了字典和相关转换,其内容通过引用包含于此。
在230处,可以修改逻辑流图。例如,可以以自动的方式或者通过在GUI中的手动操作的方式对逻辑流图进行各种优化。因为各种原因,比如因为流是混合流、因为流包括不能被流的执行引擎所优化的用户定义的功能等等原因,在只处理流时,可能不能进行这样的优化。与此相关,可以收集逻辑流图的统计数据。另外,可以在图形用户界面(GUI)上以图形的方式显示逻辑流图。这样可以让用户更好地理解流(与其源对应物相比),特别是在流是混合流的情况下。
而且,可以将逻辑流图分解为子流,以利用特定的执行环境。例如,执行环境可以有各种各样的执行引擎,可以均衡这些执行引擎来协作,以更有效的方式执行整个流。在这方面,可以采用流执行调度器。类似地,该逻辑流图可以和与另一个流关联的另一个逻辑流图组合。该另一个流可以针对不同的执行引擎,并且可能与第一执行引擎不兼容。但是,表示在逻辑流图中的是,这两个流现在可以用连接器组合。
返回到图1,在140处,可以从修改后的流图(即,逻辑流图)生成程序。该程序可以被生成以在执行引擎上执行。执行引擎可以是第一执行引擎,或者可以是不同的执行引擎。另外,在将逻辑流图分解为子流的情况下,可以有多个执行引擎。这样,可以将程序用适于每个它所用的执行引擎的高级语言来表达。
这个转换可以包括生成特定于引擎的逻辑流图的中间版本,然后由该中间版本生成程序代码。当逻辑流图描述主要流结构时,在初始转换为逻辑语言(例如,xLM)的过程中,可能不包括许多特定于引擎的细节。这些细节包括到脚本中的数据存储的路径,或者坐标,或者流设计中的其他设计元数据。当生成特定于引擎的xLM时,可以获取这样的细节。另外,其他xLM结构,例如操作符类型或者用于表示操作符参数的表达式的规范表达式形式,应当被转换为特定于引擎的格式。这些转换可以由xLM解析器进行。另外,一些引擎需要一些额外的流元数据(例如,流设计工具可能需要流结构的形状、颜色、大小和位置)以处理和利用流。字典可以包括用于在不同的引擎中表示操作符的具有默认元数据信息的模板。
最终可以通过从特定于引擎的第二逻辑表示(特定于引擎的xLM)生成代码而生成程序。代码可以在一个或多个执行引擎上执行。这个到可执行代码的转换可以使用代码模板来完成。通过解析特定于引擎的xLM中的每个xLM要素,来解析特定于引擎的xLM,确保重视每个要素可能具有的依附关系。具体地,可以搜索每个要素的代码模板,来找到xML要素所表示的与特定的操作、实现和引擎对应的模板。
对于包括多个部分的流(例如,混合流),逻辑流可以将该多个部分表示为经由连接器操作符连接。为了生成执行代码,根据所选择的执行引擎和存储库,可以将连接器操作符实例化为适当的格式(例如,映射-归纳(map-reduce)连接器的数据库、将数据从存储库A转移到存储库B的脚本)。然后,可以将程序输出并分发到适当的引擎以执行。
现在描述包括流和执行计划的例示性示例。图3图示出被表述为SQL查询的示例性流300。所示的流300分成三个主逻辑部分。这些划分线是用于添加将此单个流分解成多个部分(或者“子流”)的分割点的候选。
图4图示出执行引擎响应于解释计划命令而可能生成的流300的示例执行计划400。所示的执行计划400也被分成相同的三个逻辑部分,与流300对应。执行计划400如下被解析。为了在将流操作符从执行计划400中读取时,添加流操作符,可以维护一个队列Q(此处是后入先出(LIFO)队列)。解析可以从计划400的根部(由“+-”表示)开始,其接着是操作符名称(“SELECT”)。将SELECT加到Q中。该计划有不同的级别,这些级别由符号“┊”表示。接着继续对该计划全部进行解析,将每个新操作符加到Q中。在每个级别,第一个遇到的操作符优先。在图4中,用符号“┊+->”表示新操作符。如果一个操作符是二元的,那么对其子成员分别进行表示(例如,在JOIN操作符中,通过内部关系分开外部)。在这种情况下,可以用一个特殊的符号对其进行表示(例如,此处,“┊┊┊┊+--Inner->”表示深度为4的内部关系)。当解析完这个计划时,将所有的要素反向从队列Q中出列。每个要素是流图中的一个流操作符。
如前文所描述那样,附属的处理引擎可以通过进行流分解而修改流。流分解在使执行更快或者减少资源竞争方面是有用的。可能的划分流的候选位置是在不同的级别,当嵌套有选择类型的操作符时,在开销大的操作之后,等等。这样的点还可以作为恢复点,使得加强后的程序的容错性得到改善。
为了辅助分解,可以基于执行要求和服务级别目标(其可以用目标函数表示)来确定流的嵌套度λ。一个旨在减少资源竞争的示例性目标函数可以作为给定流的参数(argument)、流可接受的执行窗的阈值、运行流的关联执行引擎、以及系统状态(例如,系统利用率、未决工作量)。
嵌套度λ可以是具体的值(例如,数字或者百分比),或者是更抽象的值(例如,在[‘低-未嵌套’、‘中’、‘高-嵌套’]的范围内)。使用λ可以估计要产生多少个流片段k(即,应当将输入的流分解成多少个子流)。可以根据流大小与λ的比值(例如:#节点数/λ)计算出一个示例的估计值。λ的值大(高嵌套),流片段的数目k低,随着λ→∞,k→0。相反,λ的值较小,可以更积极地分解流。因此,另一个极端是,随着λ→0,k→∞,这实质上意味着,应当在每个操作符之后分解流(每个操作符包括一个流片段/子流)。
作为示例,如果流是用SQL实现的,那么可以将流看作是查询。在这种情况下,随着λ→∞,尽可能地嵌套查询。例如,对于由创建一个表和一个视图(例如,该视图从表中读取数据)的两个SQL语句构成的流,该流包含的流片段不能少于两个。但是,对于流300而言,嵌套版本如图4所示。另一方面,随着λ→0,将查询分解成和其操作符一样多的片段,这些片段彼此之间通过中间表连接。例如,流300可以被分解成最多三个片段,每个片段与三个主逻辑部分中的一个相对应。
随后,当嵌套度可用时,可以使用λ解析执行计划。例如,可以将执行解析的解析函数看作是嵌套度的可选参数。然后,在每个新操作符处,可以评估成本函数,以检查在该点处增加分割点是否有意义。基于λ值,可以在当前正在解析的操作符之后增加分割点。这样,λ值可以被认为是确定成本函数应该更为保守或更不保守(或者,积极)的要点。
图5图示出根据示例的用于修改分析流的计算系统。计算系统500可以包括一个或多个计算机和/或由一个或多个计算机实现。例如,计算机可以是服务器计算机、工作站计算机、台式计算机、笔记本电脑、移动设备等等,并且可以是分布式系统的一部分。计算机可以包括一个或多个控制器和一个或多个机器可读存储介质。
控制器可以包括处理器和存储器,用于实现机器可读指令。处理器可以包括至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个如数字图像处理单元的数字信号处理器(DSP)、其他适于获取并执行存储在存储器上的指令的硬件设备或者处理元件、或者其组合。处理器可以包括单芯片单核或多核、跨多芯片多核、跨多设备多核、或者其组合。处理器可以从存储器获取指令,并对其进行解码、执行,以完成各种功能。作为获取并执行指令的一种替换方式,或者除此之外,处理器可以包括至少一个集成电路(IC)、其他控制逻辑、其他电子电路、或者其组合,其包括多个用于完成各种任务或者功能的电子组件。
控制器可以包括存储器,比如机器可读存储介质。机器可读存储介质可以是任何包含或者存储可执行指令的电子、磁性、光学或者其他物理的存储设备。因此,机器可读存储介质可以包括,例如各种随机存取存储器(RAM)、只读存储器(ROM)、闪存及其组合。例如,机器可读介质可以包括非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动、NAND闪存等等。此外,机器可读存储介质可以是计算机可读和非暂时性的。另外,系统500可以包括与一个或多个控制器分离的一个或多个机器可读存储介质。
计算系统500可以包括存储器510、流图模块520、解析器530、逻辑流生成器540、逻辑流处理器550、以及代码生成器560,并可以构成附属处理引擎,或者是其一部分。这些组件中的每一个组件都可以通过单个计算机或者多个计算机来实现。这些组件可以包括软件、用于存储软件的一个或多个机器可读介质、以及用于执行软件的一个或多个处理器。软件可以是包括机器可执行指令的计算机程序。
另外,计算系统500的用户可以通过一个或多个其他计算机与计算系统500交互,该一个或多个其他计算机可以被认为或不认为是计算系统500的一部分。作为示例,用户可以通过驻留在系统500或者另一个计算机(比如,台式电脑、工作站电脑、平板电脑等等)上的计算机应用与系统500交互。计算机应用可以包括用户界面(例如,触摸界面、鼠标、键盘、手势输入设备)。
计算机系统500可以执行方法100和200及其变型,并且组件520至560可以被配置为执行方法100和200的各个部分及其变型。另外,组件520至560实现的功能可以是较大的软件平台、系统、应用等等的部分。例如,这些组件可以是数据分析系统的部分。
在示例中,存储器510可以被配置为存储与执行引擎关联的流512。该流可以用高级编程语言来表达。流图模块520可以被配置为获得表示流512的流图。流图模块520可以被配置为通过从执行引擎请求流512的执行计划来获得流图。解析器530可以被配置为将流图解析为多个要素。逻辑流生成器340可以被配置为基于多个要素生成用逻辑语言(例如,xLM)表达的逻辑流图。逻辑流处理器550可以被配置为将逻辑流图与第二逻辑流图进行组合,以生成一个逻辑流图。逻辑流处理器550还可以被配置为优化逻辑流图、将逻辑流图分解成子流、或者表示逻辑流图的图形视图。代码生成器560可以被配置为从逻辑流图生成程序。该程序可以用高级编程语言表达,以在一个或多个执行引擎上执行。
图6图示出根据示例的用于修改分析流的计算机可读介质。计算机600可以是多种计算设备或者系统中的一种,例如像系统500那样。
计算机600可以访问数据库630。数据库630可以包括一个或多个计算机,并可以包括一个或多个控制器和机器可读存储介质,如此处描述的。计算机600可以经由网络连接到数据库630。网络可以是任意类型的通信网络,包括但不限于:基于导线的网络(例如,有线)、无线网络(例如,蜂窝、卫星)、蜂窝通信网络、基于IP的电信网络(例如,互联网协议传输声音(VoiceoverIP)网络)。网络还可以包括传统的固网或者公共交换电话网(PSTN)或者前述网络的组合。
处理器610可以是至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、其他适于获得并执行存储在机器可读存储介质620上的指令的硬件设备或处理元件、或其组合。处理器610可以包括单芯片单核或多核、跨多芯片多核、跨多设备多核、或者其组合。处理器610可以获取指令622-628,并对其进行解码、执行,以实现各种处理。作为获取和执行指令的替换方式,或者除此之外,处理器610可以包括至少一个集成电路(IC)、其他控制逻辑、其他电子电路、或者其组合,其包括用于执行指令622-628的功能的多个电子组件。相应地,处理器610可以跨多个处理单元来实现,并且指令622-628可以通过计算机600的不同区域中的不同处理单元来实现。
机器可读存储介质620可以是任何包含或存储可执行指令的电子、磁性、光学或其他物理的存储设备。因此,机器可读存储介质可以包括,例如各种随机存取存储器(RAM)、只读存储器(ROM)、闪存及其组合。例如,机器可读介质可以包括非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动、NAND闪存等等。此外,机器可读存储介质620可以是机器可读和非暂时性的。机器可读存储介质620可以被编码有一系列可执行指令,用于管理处理元件。
指令622-628在由处理器610(例如,经由处理器的一个处理元件或多个处理元件)执行时,能够使处理器610执行处理,例如方法100、200及其变型。而且,计算机600可以与系统500类似,并且可以具有类似的功能,且使用方式与上文描述的方式相同。
例如,获取指令622可以使处理器610获取表示流632的流图。流632可以与第一执行引擎相关联,并可以存储在数据库630中。LFG生成指令624可以使处理器610从流图生成用逻辑语言(例如,xLM)表达的逻辑流图。分解指令626可以使处理器610将逻辑流图分解为多个子流。程序生成指令628可以使处理器610生成与子流相对应的多个程序,以在多个执行引擎上执行。
图7(a)至图7(b)图示出根据示例的使用所公开的技术获得的实验结果。具体地,通过这些结果来说明使用本文公开的技术分解流的益处。该实验包括运行由930个混合的分析流构成的工作量。这些流是在并行数据库上运行的TPC-DS(事务处理性能委员会-决策支持)查询。总共有93个TPC-DS查询的十个实例用MPL8(多编程级别8)按随机的顺序运行。这些流实例标示在x轴上,而对应的执行时间标示在y轴上。图7(a)图示出不分解任何流的工作量执行。图7(b)图示出使用所公开的技术进行分解的有益效果。具体地,对一些长的运行流进行分解,这创建了额外的一些流,产生了1100个流(而非930个流)的工作量。尽管在流的纯粹的数目上工作量增加,但显然,执行时间显著改善,尤其是对于图7(a)中较长的运行流而言。额外的好处是,改善了系统的资源竞争,因为不再有任何流比其它流在相当长的一段时间内独占资源。
虽然可以针对每个特定于引擎的编程语言手动进行分解或者通过写分析器进行分解,所公开的技术可以通过均衡执行引擎将它们的程序在数据集和操作方面表达为执行计划(解释计划)的能力而避免这个工作。为用这种形式表达的计算编写解析器会更简单,因而所公开的技术使得支持如图7(a)至图7(b)中示出的技术(并获得结果)的附属处理引擎成为可能。
在前面的描述中,陈述了许多细节以提供对本文公开的主题的理解。但是,即使没有这些细节中的一些或者全部,也可以实现实施方式。其他实施方式可以包括对上文讨论的细节的修改和变型。所附权利要求旨在覆盖这些修改和变型。

Claims (15)

1.一种用于修改分析流的方法,包括由处理系统:
接收与第一执行引擎关联的流;
获得表示所述流的流图;
使用逻辑语言修改所述流图;以及
从修改后的流图生成程序以在执行引擎上执行。
2.根据权利要求1所述的方法,其中所述流图是所述第一执行引擎响应于对所述流的执行计划的请求而输出的执行计划。
3.根据权利要求1所述的方法,其中所述流图基于与所述流对应的流说明而生成。
4.根据权利要求1所述的方法,其中修改所述流图包括:
解析所述流图;以及
将解析后的流图转换为采用所述逻辑语言的第二流图。
5.根据权利要求4所述的方法,其中修改所述流图进一步包括优化所述第二流图。
6.根据权利要求4所述的方法,
其中修改所述流图进一步包括:将所述第二流图分解成子流,并且
其中从修改后的流图生成程序包括:基于所述子流中的一个生成至少第一程序以在所述第一执行引擎上执行,以及基于所述子流中的另一个生成第二程序以在第二执行引擎上执行。
7.根据权利要求4所述的方法,其中修改所述流图进一步包括:将所述第二流图和与另一个流关联的至少一个其它流图组合。
8.根据权利要求4所述的方法,进一步包括:
在解析所述流图之前,确定所述流的嵌套度;并且
其中修改所述流图进一步包括:基于所述嵌套度将所述第二流图分解成子流。
9.根据权利要求8所述的方法,其中所述嵌套度基于所述流、所述流的执行窗、所述第一执行引擎、以及包括所述第一执行引擎的系统的状态信息来确定。
10.根据权利要求1所述的方法,其中所述流用与所述第一执行引擎关联的第一高级语言来表达,并且所述程序用与所述执行引擎关联的第二高级语言来表达。
11.一种用于修改分析流的系统,包括:
流图模块,用于获得表示与执行引擎关联的流的流图;
解析器,用于将所述流图解析成多个要素;
逻辑流生成器,用于基于所述多个要素生成用逻辑语言表达的逻辑流图;以及
代码生成器,用于从所述逻辑流图生成程序。
12.根据权利要求11所述的系统,进一步包括逻辑流处理器,用于优化所述逻辑流图、分解所述逻辑流图、或者呈现所述逻辑流图的图形视图中的至少一个。
13.根据权利要求12所述的系统,其中所述逻辑流处理器被配置为将所述逻辑流图与第二逻辑流图组合,以生成单个逻辑流图。
14.根据权利要求11所述的系统,其中所述流图模块被配置为通过从所述执行引擎请求所述流的执行计划而获得所述流图。
15.一种非暂时性计算机可读存储介质,所述介质存储由计算机执行以修改分析流的指令,该指令在执行时,使所述计算机:
获得表示与第一执行引擎关联的流的流图;
从所述流图生成用逻辑语言表达的逻辑流图;
将所述逻辑流图分解成多个子流;以及
生成与所述子流对应的多个程序,以在多个执行引擎上执行。
CN201380076218.9A 2013-06-26 2013-06-26 修改分析流 Expired - Fee Related CN105164667B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/047765 WO2014209292A1 (en) 2013-06-26 2013-06-26 Modifying an analytic flow

Publications (2)

Publication Number Publication Date
CN105164667A true CN105164667A (zh) 2015-12-16
CN105164667B CN105164667B (zh) 2018-09-28

Family

ID=52142432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380076218.9A Expired - Fee Related CN105164667B (zh) 2013-06-26 2013-06-26 修改分析流

Country Status (4)

Country Link
US (1) US20160154634A1 (zh)
EP (1) EP3014470A4 (zh)
CN (1) CN105164667B (zh)
WO (1) WO2014209292A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109033109A (zh) * 2017-06-09 2018-12-18 杭州海康威视数字技术股份有限公司 数据处理方法及系统
CN110895542A (zh) * 2019-11-28 2020-03-20 中国银行股份有限公司 高风险sql语句筛选方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015094269A1 (en) * 2013-12-19 2015-06-25 Hewlett-Packard Development Company, L.P. Hybrid flows containing a continuous flow
US10419586B2 (en) 2015-03-23 2019-09-17 Sap Se Data-centric integration modeling
US11275735B2 (en) * 2019-02-15 2022-03-15 Microsoft Technology Licensing, Llc Materialized graph views for efficient graph analysis

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101034390A (zh) * 2006-03-10 2007-09-12 日电(中国)有限公司 用于语言模型切换和自适应的装置和方法
US20070214111A1 (en) * 2006-03-10 2007-09-13 International Business Machines Corporation System and method for generating code for an integrated data system
CN101727513A (zh) * 2008-10-28 2010-06-09 北京芯慧同用微电子技术有限责任公司 一种超长指令字处理器的设计和优化方法
US20110239202A1 (en) * 2005-11-17 2011-09-29 The Mathworks, Inc. Application of optimization techniques to intermediate representations for code generation
WO2012033497A1 (en) * 2010-09-10 2012-03-15 Hewlett-Packard Development Company, L.P. System and method for interpreting and generating integration flows
US8160999B2 (en) * 2006-12-13 2012-04-17 International Business Machines Corporation Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation
CN102681878A (zh) * 2001-08-17 2012-09-19 梁扶汉 无需修改现有代码即可增加新软件特征的方法
US20130097592A1 (en) * 2011-10-15 2013-04-18 Hewlett-Packard Development Company L.P. User selected flow graph modification

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
EP1649344A4 (en) * 2003-07-07 2010-02-10 Netezza Corp SQL CODE GENERATION FOR HETEROGICAL ENVIRONMENT
US8126870B2 (en) * 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US20130096967A1 (en) * 2011-10-15 2013-04-18 Hewlett-Packard Development Company L.P. Optimizer
US9229983B2 (en) * 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US9311354B2 (en) * 2012-12-29 2016-04-12 Futurewei Technologies, Inc. Method for two-stage query optimization in massively parallel processing database clusters
US9031933B2 (en) * 2013-04-03 2015-05-12 International Business Machines Corporation Method and apparatus for optimizing the evaluation of semantic web queries
US10102039B2 (en) * 2013-05-17 2018-10-16 Entit Software Llc Converting a hybrid flow

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681878A (zh) * 2001-08-17 2012-09-19 梁扶汉 无需修改现有代码即可增加新软件特征的方法
US20110239202A1 (en) * 2005-11-17 2011-09-29 The Mathworks, Inc. Application of optimization techniques to intermediate representations for code generation
CN101034390A (zh) * 2006-03-10 2007-09-12 日电(中国)有限公司 用于语言模型切换和自适应的装置和方法
US20070214111A1 (en) * 2006-03-10 2007-09-13 International Business Machines Corporation System and method for generating code for an integrated data system
US8160999B2 (en) * 2006-12-13 2012-04-17 International Business Machines Corporation Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation
CN101727513A (zh) * 2008-10-28 2010-06-09 北京芯慧同用微电子技术有限责任公司 一种超长指令字处理器的设计和优化方法
WO2012033497A1 (en) * 2010-09-10 2012-03-15 Hewlett-Packard Development Company, L.P. System and method for interpreting and generating integration flows
US20130097592A1 (en) * 2011-10-15 2013-04-18 Hewlett-Packard Development Company L.P. User selected flow graph modification

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109033109A (zh) * 2017-06-09 2018-12-18 杭州海康威视数字技术股份有限公司 数据处理方法及系统
CN109033109B (zh) * 2017-06-09 2020-11-27 杭州海康威视数字技术股份有限公司 数据处理方法及系统
CN110895542A (zh) * 2019-11-28 2020-03-20 中国银行股份有限公司 高风险sql语句筛选方法及装置
CN110895542B (zh) * 2019-11-28 2022-09-27 中国银行股份有限公司 高风险sql语句筛选方法及装置

Also Published As

Publication number Publication date
CN105164667B (zh) 2018-09-28
EP3014470A1 (en) 2016-05-04
WO2014209292A1 (en) 2014-12-31
US20160154634A1 (en) 2016-06-02
EP3014470A4 (en) 2017-02-22

Similar Documents

Publication Publication Date Title
US9772890B2 (en) Sophisticated run-time system for graph processing
US9383982B2 (en) Data-parallel computation management
Minder et al. Crowdlang: A programming language for the systematic exploration of human computation systems
US9400700B2 (en) Optimized system for analytics (graphs and sparse matrices) operations
KR20210025024A (ko) 데이터흐름 그래프 최적화를 위한 시스템 및 방법
CN102541631B (zh) 以多线程不同驱动源执行计划处理查询的方法和系统
CN105164667A (zh) 修改分析流
EP3387525B1 (en) Learning from input patterns in programing-by-example
Barbierato et al. Modeling apache hive based applications in big data architectures
Li et al. P6: A declarative language for integrating machine learning in visual analytics
Kchaou et al. UML models change impact analysis using a text similarity technique
JP4830108B2 (ja) プログラム処理装置、プログラム処理方法、並列処理プログラム用コンパイラおよび並列処理プログラム用コンパイラを格納した記録媒体
EP3014472B1 (en) Generating a logical representation from a physical flow
Jahnavi et al. A novel processing of scalable web log data using map reduce framework
Antonov et al. Development and implementation of the Algo500 scalable digital platform architecture
US20140214731A1 (en) Method and System for Automated Computer Program Generation
Szárnyas et al. Evaluation of optimization strategies for incremental graph queries
Rouhani et al. What do we know about the big data researches? A systematic review from 2011 to 2017
CN103294654B (zh) 一种文本列表组合控件
Arkin et al. Systematic approach for deriving feasible mappings of parallel algorithms to parallel computing platforms
Aslam et al. Cloud migration framework clustering method for social decision support in modernizing the legacy system
EP4242837A1 (en) Data processing apparatus and method
Hong et al. Evaluating Presto and SparkSQL with TPC-DS
Neubauer Model-based symbolic design space exploration at the electronic system level: a systematic approach
Lin et al. ML-QLS: Multilevel Quantum Layout Synthesis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161111

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership

TA01 Transfer of patent application right

Effective date of registration: 20180611

Address after: American California

Applicant after: Antite Software Co., Ltd.

Address before: American Texas

Applicant before: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180928

Termination date: 20200626

CF01 Termination of patent right due to non-payment of annual fee