CN106104468B - 动态地确定数据处理应用程序的模式 - Google Patents
动态地确定数据处理应用程序的模式 Download PDFInfo
- Publication number
- CN106104468B CN106104468B CN201480068323.2A CN201480068323A CN106104468B CN 106104468 B CN106104468 B CN 106104468B CN 201480068323 A CN201480068323 A CN 201480068323A CN 106104468 B CN106104468 B CN 106104468B
- Authority
- CN
- China
- Prior art keywords
- data
- mode
- processing application
- data processing
- size
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
一种方法包括接收用以使用数据处理应用程序来处理数据集合的请求。该方法还包括基于与数据集合相关联的特征,在以下模式之间进行选择:(1)第一模式,其中在第一模式中,使用数据处理应用程序的一个或多个运行中的处理来处理数据集合,以及(2)第二模式,其中在第二模式中,启动数据处理应用程序的一个或多个新处理。该方法还包括使得根据所选择的模式来执行数据处理应用程序以处理数据集合。
Description
优先权要求
本申请要求2013年12月13日提交的美国临时申请序列号61/915,805的优先权,在此通过引用包含其全部内容。
背景技术
本说明书涉及动态地确定数据处理应用程序的操作模式。
复杂的计算通常可以通过(被称为“数据流图”的)有向图表示为数据流,其中计算的组件与图的顶点相关联并且组件之间的数据流与图的链接(弧、边)相对应。这些组件可以包括:数据处理组件,用于在一个或多个输入端口处接收数据,处理该数据,并且从一个或多个输出端口提供该数据;以及数据集组件,其用作数据流的源(source)或宿(sink)。
发明内容
在一般方面,一种方法包括接收用以使用数据处理应用程序来处理数据集合的请求。所述方法还包括:基于与所述数据集合相关联的特征在以下模式之间进行选择:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理。所述方法还包括使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
实施例可以包括以下特征中的一个或多个特征。
在接收到用以处理所述数据集合的请求之前对所述一个或多个运行中的处理进行编译并加载到存储器中。
在接收到用以处理所述数据集合的请求之前,所述一个或多个运行中的处理处于待机模式。
所述方法还包括:在选择所述第二模式的情况下,对所述数据处理应用程序进行编译并且将编译后的数据处理应用程序加载到存储器中。
所述一个或多个新处理包括在接收到用以处理所述数据集合的请求之前未编译或者未加载到存储器中的处理。
与所述数据集合相关联的特征包括所述数据集合的大小、所述数据集合的格式和所述数据集合的复杂度中的一个或多个。
在所述第一模式和所述第二模式之间进行选择包括:在所述数据集合的大小等于或小于阈值大小的情况下选择所述第一模式;以及在所述数据集合的大小超过所述阈值大小的情况下选择所述第二模式。
在一些情况下,所述阈值大小基于所述数据集合的格式,并且至少两个不同的格式各自与不同的阈值大小相关联。在一些情况下,所述阈值大小基于与所述数据集合相关联的处理要求,并且至少两个不同的处理要求各自与不同的阈值大小相关联。在一些情况下,所述阈值大小基于表示所述数据处理应用程序的操作的历史数据。在一些情况下,所述方法包括例如通过以下处理在所述数据处理应用程序的执行期间确定所述阈值大小:在根据所述第一模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,减小所述阈值大小;以及在根据所述第二模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,增大所述阈值大小。
所述方法还包括:确定所述数据集合的大小。在一些情况下,所述数据集合包括文件,以及确定所述数据集合的大小包括确定所述文件的大小。在一些情况下,所述数据集合包括数据库中所存储的数据,以及确定所述数据集合的大小包括查询所述数据库。
与所述数据集合相关联的特征包括与所述数据集合相关联的处理要求,诸如用于处理所述数据集合的容许时间等。
在所述第一模式中,在接收到所述请求之前将所述数据处理应用程序的组件编译成机器码,并且在所述第二模式中,在接收到所述请求之后将所述组件编译成机器码。
在所述第一模式中,串行执行所述一个或多个运行中的处理,并且在所述第二模式中,并行执行所述一个或多个新处理中的至少部分新处理。
在一般方面,一种软件存储在计算机可读介质上,所述软件包括用于使计算***执行以下步骤的指令:接收用以使用数据处理应用程序来处理数据集合的请求;基于与所述数据集合相关联的特征,在以下模式之间进行选择:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理;以及使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
在一般方面,一种计算***,包括:至少一个处理器,用于:接收用以使用数据处理应用程序来处理数据集合的请求;基于与所述数据集合相关联的特征,在以下模式之间进行选择:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理;以及使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。在一个方面,这里所述的方法所执行的操作可以由计算***和/或存储在计算机可读介质上的软件来执行。
在一般方面,一种计算***,包括:用于接收用以使用数据处理应用程序来处理数据集合的请求的部件;用于基于与所述数据集合相关联的特征在以下模式之间进行选择的部件:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理;以及用于使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合的部件。
在一般方面,一种方法包括:接收用以使用数据处理应用程序来处理数据集合的请求;基于所述数据集合的大小从所述数据处理应用程序的多个操作模式中识别特定操作模式;以及根据所述特定操作模式来执行所述数据处理应用程序以处理所述数据集合。
实施例可以包括以下特征中的一个或多个特征。
识别所述特定操作模式包括选择批处理模式或连续处理模式。识别所述特定操作模式包括:在所述数据集合的大小超过阈值大小的情况下,选择所述批处理模式;以及在所述数据集合的大小小于所述阈值大小的情况下,选择所述连续处理模式。
所述方法还包括确定所述数据集合的大小。所述数据集合包括文件,以及确定所述数据集合的大小包括确定所述文件的大小。所述数据集合包括数据库中所存储的数据,以及确定所述数据集合的大小包括查询所述数据库。
识别所述特定操作模式包括判断所述数据集合的大小是否超过阈值大小。所述阈值大小基于所述数据集合的格式或者与所述数据集合相关联的处理要求。所述处理要求包括用于处理所述数据集合的容许时间。所述方法还包括:确定所述阈值大小。所述方法还包括:基于表示所述数据处理应用程序的操作的历史数据来确定所述阈值大小。所述方法还包括:动态地确定所述阈值大小。
所述数据处理应用程序包括至少一个计算图。可以以批处理模式或者连续处理模式来执行所述计算图。
各方面可以包括以下优点中的一个或多个优点。
用以动态地确定数据处理应用程序的操作模式的方式使得单个应用程序能够以灵活的方式来高效地处理大的数据集合和小的数据集合这两者。例如,在大多数请求涉及小的数据集合并且仅偶尔的请求涉及大的数据集合的状况下,可以通过相同的处理框架来高效地处理这两种请求。另外,由于数据处理应用程序与其操作模式无关地使用相同的算法和相同的代码,因此可以简化数据处理应用程序的设计和编写,由此减少了成本、开发工作量以及诸如研究、开发或组织工作等的环境中的停工时间。
根据以下的说明书、以及根据权利要求书,本发明的其它特征和优点将变得明显。
附图说明
图1是数据处理***的框图。
图2是数据处理应用程序所用的处理框架的框图。
图3是查找表的示例。
图4是流程图。
图5是处理框架的框图。
图6A是数据处理应用程序的框图。
图6B和6C是图6A的数据处理应用程序的部分的截屏。
具体实施方式
这里说明用以动态地确定数据处理应用程序的操作模式的方式。根据要处理的数据的特征(诸如数据的特性以及与数据的处理相关联的要求等),可执行以处理数据集合的数据处理应用程序可以以多种模式来执行。执行模式还可以依赖于与用于执行数据处理应用程序的计算***相关联的操作特性。例如,批处理模式可以用于处理大的数据集合并且具有最小启动时间的连续处理模式可以用于处理较小的数据集合。例如,在接收到用以利用数据处理应用程序来处理数据集合的请求的情况下,可以动态地选择数据处理应用程序的操作模式。
图1示出数据处理***100的示例,其中在该数据处理***100中,可以使用用于动态地确定数据处理应用程序的操作模式的技术。***100包括数据源102,其中该数据源102可以包括诸如存储装置或者至线上数据流的连接等的一个或多个数据的源,其中该一个或多个数据的源各自可以以各种格式(例如,数据库表、电子表格文件、非结构文本(flattext)文件或大型计算机所使用的原本格式)中的任何格式来存储或提供数据。数据可以是逻辑数据、分析数据或机器数据。执行环境104包括预处理模块106和执行模块112。执行环境104例如可以在诸如某个版本的UNIX操作***等的适当的操作***的控制下安装在一个或多个通用计算机上。例如,执行环境104可以包括包含使用多个中央处理单元(CPU)或多个处理器内核的计算机***的结构的多节点并行计算环境,可以是本地的(例如,诸如对称多处理(SMP)计算机等的多处理器***)或本地分布式的(例如,作为集群所连接的多个处理器或大规模并行处理(MPP)***)、或者远程或远程分布式的(例如,经由局域网(LAN)和/或广域网(WAN)连接的多个处理器)、或者它们的任何组合。
提供数据源102的存储装置相对于执行环境104可以是本地的,例如,可以存储在连接至安装有执行环境104的计算机的存储介质(例如,硬盘驱动器108)上,或者相对于执行环境104可以是远程的,例如,安装在经由(例如,云计算基础设施所提供的)远程连接与安装有执行环境104的计算机进行通信的远程***(例如,大型计算机110)上。
预处理模块106从数据源102读取数据并且使数据处理应用程序为执行做准备。例如,预处理模块106可以编译数据处理应用程序,相对于执行环境104可访问的数据存储***116存储和/或加载编译后的数据处理应用程序,并且进行用以使数据处理应用程序为执行做准备的其它任务。
执行模块112执行预处理模块106所准备的数据处理应用程序,以处理数据集合并生成通过该处理所得到的输出数据114。输出数据114可以存储回数据源102或者存储在执行环境104可访问的数据存储***116中,或者被使用。开发环境118也可以访问数据存储***116,其中在开发环境118中,开发者120能够对执行模块112所要执行的数据处理应用程序进行设计和编辑。在一些实现中,开发环境118是用于开发作为数据流图的应用程序的***,其中数据流图包括顶点(表示数据处理组件或数据集),并且这些顶点通过顶点之间的有向链接(directed link)(表示工作元素(即,数据)的流)相连接。例如,在通过引用包含于此的标题为“Managing Parameters for Graph-Based Applications”的美国专利公开号2007/0011668中更详细地说明了这种环境。在全部内容通过引用包含于此的标题为“EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS”的美国专利5,966,072中说明了用于执行这种基于图的计算的***。根据该***所制作的数据流图提供用于将信息输入至图组件所表示的个别处理或从图组件所表示的个别处理获得信息的方法、用于在处理之间移动信息的方法以及用于定义处理的运行顺序的方法。该***包括用于从任何可用方法中选取处理间通信方法的算法(例如,与图的链接相对应的通信路径可以使用TCP/IP或UNIX域套接字或者使用共享存储器在处理之间传递数据)。
预处理模块106可以接收来自包括不同形式的数据库***的可以实现数据源102的各种***的数据。该数据可以被组织成具有针对各字段(还被称为“属性”或“列”)的值的可能包括空值的记录。在第一次从数据源读取数据的情况下,预处理模块106通常从与该数据源中的记录有关的一些初始格式信息开始。在一些情形中,数据源的记录结构最初可能是未知的并且作为替代可以在对该数据源或数据进行了分析之后才确定。与记录有关的初始信息例如可以包括表示独特值的位的数量、记录内的字段的顺序以及位所表示的值的类型(例如,字符串、有符号/无符号整数)。
参考图2,在一些示例中,执行模块112执行用作针对数据处理应用程序200的接口的处理框架10。数据处理应用程序200可以是处理来自诸如文件202、数据库204或其它类型的数据源等的数据源的数据的任何可执行应用程序。例如,数据处理应用程序200可以是用于记录电话交易数据的应用程序、用于检索所请求的***交易数据的应用程序或者其它类型的应用程序。在一些情况下,数据处理应用程序200可以作为数据流图来实现。处理框架10是可以作为针对数据处理应用程序200的接口但不清楚特定数据处理应用程序200的性质的一个或多个计算用组件的集合。可以重复使用处理框架10。也就是说,例如,可以使用处理框架10的相同组件作为不同的数据处理应用程序200的接口。
在一些实现中,处理框架10包括接口块206,该接口块206用于接收用以处理诸如特定文件202或来自特定数据库204的某些记录等的特定数据集合的请求208。请求208可以由诸如人或自动计算***等的请求方210来进行发送。在一些情况下,可以从用于存储等待处理的一个或多个请求的队列209接收请求208。请求208可以包括与要针对数据集合执行的作业类型有关的信息(例如,数据处理应用程序200的标识符)以及与数据集合的源有关的信息(例如,文件202或数据库204的标识符)。
在一些示例中,要处理的数据集合是入站馈送,这意味着请求208包括或者直接标识出数据集合(例如,请求208可以包括文件202的路径和文件名)。入站馈送的示例是利用请求208所提供的支付文件,其中该支付文件包括表示多个用户的***活动的数据并且被提供给数据处理应用程序200以待验证、映射并且载入数据库表。在一些示例中,要处理的数据集合是出站馈送,这意味着请求208标识出要通过数据处理应用程序200从数据库204中检索出的数据。例如,请求208可以包括可以被数据处理应用程序200用来生成要应用于数据库204的查询的信息。出站馈送的一个示例是满足个人***客户用以查看十月份的***交易的请求的数据集合。出站馈送的另一示例是满足来自自动记账***针对2013年第二季度期间购物世界百货商店的所有销售交易的请求的数据集合。
为了处理响应于请求208的数据集合,可以以多个操作模式(例如,批处理模式214或连续模式216)中的任意模式来执行数据处理应用程序200。处理框架10的决定块212可以选择数据处理应用程序200为了处理数据(例如,来自特定文件202或数据库204的数据)的特定集合而要使用的操作模式。例如,决定块212可以基于数据集合的一个或多个特征来选择数据处理应用程序200的操作模式。数据集合的特征例如可以包括数据集合的特性或者与处理数据集合相关联的要求。数据集合的示例特性例如包括数据集合的大小(例如,数据集合的容量、数据集合中的记录的数量、数据集合的复杂度等)、数据集合的格式(例如,文件202的文件格式或数据库204中的记录的记录格式)、数据集合的复杂度(例如,与数据集合相关联的矢量或子矢量)以及/或者数据集合的其它特性等。例如,在一个示例中,数据处理应用程序200可以在用以处理大量数据的批处理模式214下进行工作并且可以在用以处理少量数据的连续模式216下进行工作。与处理数据集合相关联的示例要求包括分配给处理数据集合的时间的量。在一些示例中,决定块212可以基于与执行数据处理应用程序200的计算***相关联的一个或多个操作特性(诸如,一天中的时间或一周中的星期几、***容量(例如,实时容量、预计容量或平均容量)或者其它操作特性等)来选择数据处理应用程序200的操作模式。
以批处理模式214来操作数据处理应用程序使得数据处理应用程序200能够快速但以相对长的启动时间为代价来处理大量数据。在以连续模式216进行工作的情况下,数据处理应用程序200具有很短~零启动时间但处理数据不那么快。也就是说,在以连续模式216进行工作的情况下,如以下更详细地论述,运行数据处理应用程序并且不需要为了处理数据而执行诸如编译和加载等的启动处理。可以以批处理模式或连续模式来执行通过数据处理应用程序200实现的相同的数据处理算法。
在一些示例中,决定块212可以评估要处理的数据集合的大小(例如,文件202的大小或响应于查询而将从数据库204中检索出的记录的大小),并且将该大小与数据处理应用程序200所用的阈值大小进行比较。如果数据集合的大小大于阈值大小,则决定块212可以发送命令213以使得以批处理模式214来执行数据处理应用程序200。如果数据集合的大小小于阈值大小,则命令213使得以连续模式216来执行数据处理应用程序200。在数据处理应用程序200处接收数据(例如,文件202或者来自数据库204的记录)并且根据命令213所指定的模式来处理该数据。
阈值大小可以依赖于数据集合的一个或多个特征。例如,在一些实施例中,阈值大小可以依赖于诸如文件202的文件格式或者数据库204中的记录的记录格式等的数据集合的格式。也就是说,例如,各文件格式或记录格式可以具有关联的阈值大小。例如,第一数据库可以包含具有大量字段(例如,包括sale_price(销售价格)字段的50个字段)的销售交易记录,而第二数据库包含具有少量字段(例如,包括sale_price字段的5个字段)的销售交易记录。对于仅对任意记录的sale_price字段进行操作的数据处理应用程序200,记录的绝对大小与将要处理的记录的数量相比没那么重要。也就是说,由于第一数据库的记录是第二数据库的记录的十倍之多,因此针对第一数据库的记录的阈值大小可以是针对第二数据库的记录的阈值大小的约十倍大。
在一些示例中,阈值大小可以依赖于与处理数据集合相关联的要求。例如,使用数据处理应用程序200来处理数据的客户(例如,***公司)可以与数据处理应用程序200的提供方达成诸如服务等级协议(SLA)等的协议,其中该协议指定该客户的数据所用的约定处理时间。在一些示例中,客户可以具有针对要处理的多个大小的数据中的各个大小指定约定处理时间的分层SLA。例如,分层SLA可以指定:代表小于100000次交易的数据集合要在10秒钟内处理,代表100000~一百万次交易的数据集合要在3分钟内处理,并且代表一百万~一千万次交易的数据集合要在30分钟内处理。特定客户的SLA所指定的处理时间可以用来确定针对该客户的阈值大小。例如,阈值大小可以被设置为使得能够满足客户的SLA(这例如基于数据处理应用程序的连续模式执行可以处理多大的数据集合以满足SLA)。
在一些示例中,阈值大小可以依赖于与执行数据处理应用程序200的计算***相关联的操作特性。例如,阈值大小可以基于表示数据处理应用程序200在批处理模式214和连续模式216下的性能的历史数据。阈值大小可以基于表示数据处理应用程序200的当前性能的实时数据。例如,在一个示例中,如果实时数据表示连续模式216的数据处理应用程序200运行得比参考速率(例如,历史平均速率)更慢,则可以动态地减小阈值大小以将更多数据集合转移至批处理模式处理214。如果实时数据表示批处理模式214的数据处理应用程序200运行得比参考速率(例如,历史平均速率)更慢,则可以动态地增大阈值大小。在一个示例中,如果实时数据表示执行数据处理应用程序200的计算***的容量比平常少,则可以动态地改变阈值大小以针对该计算***的有所减小的容量进行调整。
在一些示例中,阈值块218可以针对特定客户在诸如阈值数据库的查找表等的阈值数据库220中查找要通过特定数据处理应用程序来处理的特定数据集合所用的阈值大小。例如,阈值数据库220可以包括针对特定数据处理应用程序的查找表,其中该查找表包括用于表示针对各种数据格式以及针对各种客户的阈值大小的记录。
图3示出阈值数据库220中的查找表30的示例的一部分。查找表30中的各条目32代表针对特定数据格式34以及针对特定客户36的阈值大小。如果客户36具有诸如SLA等的指定了用于处理特定大小的数据的一个或多个约定处理时间的协议,则阈值时间可以反映该客户的协议。如果客户36不具有协议,则可以使用默认阈值大小。在图3的示例中,客户ABC公司和信贷公司(Credit Co.)共用共通的默认阈值大小。客户史密斯具有诸如SLA等的提供更快的约定处理时间的协议,因而要求要在更短的时间内完成史密斯的数据的处理。为了满足史密斯的SLA,针对史密斯的数据的阈值大小更大,这使得能够以连续模式来处理更大的数据集合。
在一些示例中,针对给定数据处理应用程序、数据格式和/或客户的阈值大小是由用户(例如,由***操作人员)来指定的。在一些示例中,阈值大小是通过阈值块218来确定的。例如,阈值块218可以通过识别批处理模式214的处理时间等于或快于连续模式216的处理时间的数据集合的大小,来确定针对特定数据处理应用程序200以及针对特定数据格式的默认阈值大小。为了并入客户特有的关于处理时间的协议,阈值块218可以确定批处理模式214和/或连续模式216在约定量的时间内能够处理的数据集合的大小。在一些示例中,阈值块218可以基于表示数据处理应用程序200在批处理模式214和连续模式216下的性能的历史数据来确定诸如默认阈值大小或客户特有阈值大小等的阈值大小。
在一些情况下,阈值块218可以例如基于表示数据处理应用程序200的当前性能的实时数据来动态地确定阈值大小。例如,在一个示例中,如果实时数据表示连续模式216的数据处理应用程序200运行得比其历史平均速率更慢,则阈值块218可以动态地减小阈值大小以将更多的数据集合转移至批处理模式处理214。在一个示例中,如果实时数据表示执行数据处理应用程序200的计算***的容量比平常少,则阈值块218可以动态地改变阈值大小以针对该计算***的有所减小的容量进行调整。
如上所述,可以选择数据处理应用程序200的批处理模式操作214来处理大的数据集合。批处理模式是指在接收到用以处理数据集合的请求之后启动(例如,作为新处理来编译并开始)数据处理应用程序200。新处理是在接收到用以处理数据的请求之后进行编译并加载到存储器中的处理。在一些示例中,可以在处理了整个数据集合之后终止批处理模式的数据处理应用程序。在一些示例中,在批处理模式处理下,可以在编译并开始了数据处理应用程序之后并行运行数据处理应用程序的多个处理。通常,批处理模式操作214与(以下论述的)连续模式操作相比涉及更长的启动时间,这使得在仅处理少量的数据的情况下,批处理模式操作比连续模式效率低。然而,在以批处理模式214开始数据处理应用程序200之后,数据处理应用程序200可以快速且高效地处理数据。
例如,在以批处理模式214执行的情况下,数据处理应用程序200在数据集合的第一项已经准备好由数据处理应用程序来处理的情况下作为新处理而启动。启动任务包括编译并加载数据处理应用程序的组件并且将编译并加载后的数据处理应用程序整合在处理框架10中。在完成了启动任务之后,可以在一个或多个计算装置上并行运行与数据处理应用程序相关联的多个处理,这使得批处理模式的数据处理应用程序能够高效地处理大量的数据。在完成了处理的情况下,终止数据处理应用程序200的操作。也就是说,为了以批处理模式214来操作数据处理应用程序200,将数据处理应用程序作为新处理来启动以处理离散的数据集合并且在完成了处理之后终止该数据处理应用程序。
编译是使诸如数据处理应用程序200等的计算机程序准备好由计算机来执行的处理。编译可以使得生成机器码、准备好在计算机上执行的指令以及/或者要通过计算机上所执行的虚拟机来执行的中间代码(例如,Java字节码)。用以编译数据处理应用程序200并且使数据处理应用程序200为执行做准备的处理涉及各种阶段。从数据存储器(例如,从数据存储***116)中检索数据处理应用程序200的未编译表示以及用于提供要用在编译处理中的值的任何关联参数。示例参数包括以下信息:例如执行数据处理应用程序200的计算装置的名称、数据处理应用程序200的结果要输出至的目录、这些结果要写入至的文件的文件名以及其它参数等。在静态参数解析阶段期间,对静态参数(在运行时间之前指定该静态参数的值以进行解析)进行解析并且将解析值绑定至这些静态参数。一些参数可以被指定为在编译期间保持未解析并且稍后(例如在紧邻运行时间之前)再作解析的动态参数。在一些示例中,批处理模式的数据处理应用程序200在运行时间从文件读取未解析的参数。在编译阶段期间,生成代表数据处理应用程序200的数据结构以供在数据处理应用程序200的执行期间使用。编译还可以包括将以脚本语言编写的嵌入脚本编译为字节码或机器码。在运行时间,将与数据处理应用程序200相关联的任何动态参数绑定至解析值。通过启动一个或多个处理、打开任何所需的文件以及/或者链接动态库来开始编译后的数据处理应用程序200的数据结构。还可以例如通过分配共享存储器或打开TCP/IP流来建立通过数据处理应用程序200的数据流。
在编译并加载了批处理模式的数据处理应用程序200之后,可以相对快地处理数据集合。然而,如果数据集合较小,则编译数据处理应用程序200、加载数据处理应用程序200以及使数据处理应用程序200为执行做准备所涉及的时间(统称为启动时间)可以主导数据处理应用程序200的执行时间。也就是说,如果仅通过批处理模式的数据处理应用程序200处理少量的数据,则启动时间可以与处理时间相当或者甚至可以超过处理时间。例如,如果批处理模式的数据处理应用程序200的启动时间约为5秒并且小的数据集合所用的处理时间约为5秒,则所经过的总时间中仅有一半的时间用于数据集的实际处理。因而,相对长的启动时间使得以批处理模式214来执行数据处理应用程序200对于处理小的数据集而言相对低效。
为了避免长启动时间的低效,可以通过处于连续模式216的数据处理应用程序200来处理小的数据集合。连续模式是指在接收数据以进行处理之前对数据处理应用程序进行编译、加载和初始化。有时将在接收数据以进行处理之前对数据处理应用程序进行编译、加载和初始化称为运行中的处理。即使在处理没有活跃地处理数据的情况下,例如,在由于不存在输入数据以供某一处理进行处理而使得该处理处于待机的情况下,也可以将该处理视为运行中的处理。在一些示例中,连续模式处理在处理数据时可以串行运行。在连续模式216中,在批处理模式的数据处理应用程序200的启动期间所进行的部分任务改为在不针对每个数据集合均发生的较早期编译阶段中进行。相反,在以连续模式216执行的情况下,在接收数据以进行处理之前对数据处理应用程序200进行编译、加载和初始化。也就是说,例如,在连续模式216中,数据处理应用程序200在计算装置上是持续活跃的,并且可以在接收到针对处理的请求时立即开始处理数据。因而,与对数据处理应用程序进行编译、加载和准备相关联的启动时间并不适用于各个独立的数据集合,这使得能够更高效地处理小的数据集合。为了确保连续模式的数据处理应用程序200根据适合于特定数据集合的参数来处理该数据集合,将这些参数与用以处理该数据集合的请求一起传递至连续模式的数据处理应用程序200。
在一些示例中,为了以连续模式216执行,数据处理应用程序200可以作为能够动态地加载到处理框架10中(并且从处理框架10卸载的)一个或多个“微图(micrograph)”来实现。微图是以编译形式存储在数据存储***(例如,数据存储***116)中的预编译数据流图。编译后的微图包括代表微图的组件的数据结构以及使得微图能够整合在处理框架10中的链接。可以对编译后的微图进行动态检索并且可以实时地(例如在指令208指示数据处理应用程序200以连续模式216执行的情况下)将编译后的微图直接嵌入处理框架10。在全部内容通过引用包含于此的2011年6月15日提交的美国申请序列号13/161,010中更详细地说明了微图。
例如,为了实现微图的快速加载,可以在将微图存储在数据存储***116中之前使微图串行化。串行化是将编译后的数据处理应用程序200转换成0和1的二进制流以使得数据处理应用程序200采用可以容易存储在永久性存储器或存储缓冲器中的形式的处理。串行化的微图易于检索并且其数据结构易于在运行时间动态地去串行化并加载,由此使得能够快速地加载微图。
在一些示例中,在接收到命令208从而以连续模式216来执行数据处理应用程序200以处理数据集合的情况下,加载预编译后的微图并且将预编译后的微图整合在处理框架10中。在一些情况下,在完成了数据集合的处理之后,可以将微图从处理框架10分离并卸载。在一些情况下,微图可以从处理框架10分离但可以(例如,使用缓存机制)继续加载在存储器中,以使得稍后(例如,在接收到命令以处理后续的数据集合的情况下)可以在无需重新加载分离的微图的情况下将该微图迅速地重新整合在处理框架10中。
决定块212自身可以以连续模式来实现(例如,实现为微图),以避免针对数据处理应用程序200选择适当的操作模式的延迟。
在一些示例中,数据处理应用程序可以实现单个微图的多次复制,例如,以使得能够测量针对通过数据处理应用程序的数据流的控制。例如,可以根据诸如轮询方法、利用得最少的微图的选择或其它算法等的负载均衡算法,将要通过数据处理应用程序200来处理的数据集合分割在一组两个或更多个的微图中。
在一些示例中,可以以串行批处理模式来执行数据处理应用程序200,其中在串行批处理模式中,将大的数据集合分成多个组,以待数据处理应用程序200顺次处理。例如,在以串行批处理模式执行的情况下,可以对数据处理应用程序200进行单次编译并顺次执行以处理多组数据。在一些示例中,可以以并行批处理模式来执行数据处理应用程序200,其中在并行批处理模式中,将大的数据集合分成多个组,以待并行运行的多个相同的数据处理应用程序同时处理。
参考图4,在一般的方式中,接收用以使用数据处理应用程序来处理数据集合的请求(400)。在一些示例中,该请求可以包括诸如要通过数据处理应用程序来处理的文件(入站馈送)等的数据集合。例如,请求208可以包括文件202。在一些示例中,该请求可以标识出要通过数据处理应用程序从数据库中检索出的数据(出站馈送)。
确定或估计数据集合的大小(402)。对于入站馈送(例如,文件),数据集合的大小是文件的大小并且可以例如通过访问与该文件相关联的属性来确定。例如,如果入站馈送是包含要添加至数据库的***交易记录的支付文件,则数据集合的大小是该支付文件的大小。对于出站馈送(例如,从数据库检索出的数据),数据集合的大小是响应于查询而要从数据库中检索出的记录的大小。在一些示例中,出站馈送的大小可以通过对数据库进行预查询(例如,通过请求满足查询的前100个记录)来确定。如果数据库迅速返回该前100个记录,则可以估计为该出站馈送的大小较小。如果数据库缓慢地返回或根本没有返回该前100个记录,则可以估计为该出站馈送的大小较大。在一些示例中,出站馈送的大小可以通过在数据库中查询满足查询的记录的数量来确定。
例如,通过访问将数据处理应用程序所用的针对各种数据格式和/或针对各种客户的阈值大小制成表格的查找表,来识别数据集合的阈值大小(404)。阈值大小可以基于数据集合的特性,诸如数据集合的大小(例如,数据集合的容量、数据集合中的记录的数量、数据集合的复杂度等)、数据集合的格式(例如,文件202的文件格式或数据库204中的记录的记录格式)、数据集合的复杂度(例如,与数据集合相关联的矢量或子矢量)以及/或者数据集合的其它特性等。阈值大小还可以基于与处理数据集合相关联的要求,诸如指定用于处理数据集合的容许时间的客户特有协议(例如,SLA)等。阈值大小还可以基于与执行数据处理应用程序的计算***相关联的操作特性,诸如,一天中的时间或一周中的星期几、***容量或其它操作特性等。
将要处理的数据集合的大小与阈值大小进行比较(406)并且基于该比较来选择数据处理应用程序所用的操作模式。例如,如果数据集合的大小大于阈值大小,则选择批处理模式处理(408)。如果要处理的数据集合的大小等于或小于阈值大小,则选择连续模式处理(410)。
根据所选择的操作模式来执行数据处理应用程序以对数据集合进行处理(412)。例如,对于批处理模式处理,在处理数据集合之前,对数据处理应用程序的批处理模式实现进行编译、加载并将该实现整合在处理框架中。对于连续模式处理,动态地加载预编译后的数据处理应用程序(即,预编译后的微图)并使用该预编译后的数据处理应用程序来处理数据集合。将处理的结果从数据处理应用程序输出(414)至诸如队列、文件、数据库和/或下游用户的显示器等的下游位置。
参考图5,在处理框架10的示例图形表示的截屏中,接收到用以处理数据集合的请求并且在接口组件500处读取到该请求。该请求可以包括与要针对数据集合执行的作业类型有关的信息(例如,要用来处理数据集合的数据处理应用程序的标识符)以及与数据集合的源有关的信息(例如,文件或数据库的标识符)。在一些示例中,在通过接口组件500接收这些请求之前,使这些请求在队列502中排队。在一些示例中,接口组件500执行以上针对接口块206所述的功能。
建立组件504对请求进行处理并且该处理到达决定组件506。决定组件506对该请求进行评价以判断要处理的数据集合是被认为大还是小。基于该评价,决定组件506向连续组件509(例如,微图组件)或批处理组件508发送命令。在一些示例中,决定组件506执行以上针对决定块212所述的功能。
图6A~6C示出被配置为以批处理模式或连续模式执行的数据流图600的示例。“读取作业文件”组件602将数据流图600整合在处理框架10(图5)中。例如,“读取作业文件”组件602可以利用依赖于以批处理模式还是以连续模式执行数据流图600而以不同方式执行的子图610来实现。如果以批处理模式来执行数据流图600,则该图从读取将运行时间参数传递至批处理模式的数据流图600的作业文件612开始。在连续模式中,诸如运行时间参数等的作业信息经由“job_info(作业信息)”组件614到达编译、加载和初始化后的连续模式的数据流图600。
数据流图600在一个或多个处理组件604处以批处理模式或者连续模式对数据进行处理。例如,在批处理模式中,处理组件604可以包括能够并行执行以提供快速、高效的数据处理的多个处理。在连续模式中,处理组件604可以包括要串行执行的多个处理。在完成了处理的情况下,“发送应答”组件606(例如,通过对数据流图600的输出进行适当的格式化并且将该输出发送至处理框架10)将数据流图600的输出整合回处理框架10。例如,“发送应答”组件606可以利用依赖于以批处理模式还是以连续模式执行数据流图600而以不同方式执行的子图620来实现。根据数据流图600的操作模式,应答组件624或者使数据为队列622做准备的复制组件621对输出数据进行处理。如果以批处理模式来执行数据流图,则应答(例如,输出数据)经由队列622返回至处理框架10。在连续模式中,应答经由应答组件624返回。
可以使用执行适当软件的计算***来实现用以动态地确定数据处理应用程序的操作模式的方式。例如,该软件可以包括在一个或多个编程或可编程计算***(可以具有诸如分布式、客户端/服务器或网格等的各种架构)上执行的一个或多个计算机程序中的进程,其中该一个或多个编程或可编程计算***各自包括至少一个处理器、至少一个数据存储***(包括易失性和/或非易失性存储器和/或存储元件)、(用于使用至少一个输入装置或端口接收输入、并且用于使用至少一个输出装置或端口提供输出的)至少一个用户界面。该软件可以包括例如提供与数据流图的设计、结构和执行相关的服务的更大程序的一个或多个模块。该程序的模块(例如,数据流图的元素)可以实现为数据结构或符合数据仓库中所存储的数据模型的其它有组织的数据。
可以将软件设置在诸如CD-ROM或(例如,利用通用或专用计算***或装置可读取的)其它计算机可读介质等的有形非瞬态介质上、或者经由网络的通信介质(例如,以编码在传送信号中的形式)传递至执行该软件的计算***的有形非瞬态介质。可以在专用计算机上、或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用集成电路(ASIC)等的专用硬件来进行该处理的一部分或全部。可以以利用不同的计算元件来进行软件所指定的计算的不同部分的分布式方式来实现该处理。优选将这种计算机程序各自存储在通用或专用可编程计算机可访问的存储装置的计算机可读存储介质(例如,固态存储器或介质、或者磁性或光学介质)上或者下载至该计算机可读存储介质,以在利用计算机读取存储装置介质以进行这里所述的处理的情况下配置计算机并使该计算机进行工作。本发明的***还可被视为作为配置有计算机程序的有形非瞬态介质来实现,其中如此配置成的介质使计算机以特定的预定义方式进行工作,以进行这里所述的处理步骤中的一个或多个。
已经说明了多个实施例。然而,应当理解,上述说明意图例示而并非限制由所附权利要求书的范围所定义的本发明的范围。因此,其它实施例也在所附权利要求书的范围内。例如,可以在没有背离本发明的范围的情况下进行各种变形。另外,上述步骤中的一部分可以是顺序独立的,因而可以以与所述顺序不同的顺序来进行。
例如,除上述特征以外或者作为上述特征的替代,说明以下实施例。
实施例1涉及一种方法,包括:接收用以使用数据处理应用程序来处理数据集合的请求;基于与所述数据集合相关联的特征,在以下模式之间进行选择:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理;以及使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
实施例2涉及实施例1,其中,在接收到用以处理所述数据集合的请求之前对所述一个或多个运行中的处理进行编译并加载到存储器中。
实施例3涉及前述的实施例中的任一项,其中,在接收到用以处理所述数据集合的请求之前,所述一个或多个运行中的处理处于待机模式。
实施例4涉及前述的实施例中的任一项,其中,还包括:在选择所述第二模式的情况下,对所述数据处理应用程序进行编译并且将编译后的数据处理应用程序加载到存储器中。
实施例5涉及前述的实施例中的任一项,其中,所述一个或多个新处理包括在接收到用以处理所述数据集合的请求之前未编译或者未加载到存储器中的处理。
实施例6涉及前述的实施例中的任一项,其中,与所述数据集合相关联的特征包括所述数据集合的大小、所述数据集合的格式和所述数据集合的复杂度中的一个或多个。
实施例7涉及前述的实施例中的任一项,其中,在所述第一模式和所述第二模式之间进行选择包括:在所述数据集合的大小等于或小于阈值大小的情况下选择所述第一模式;以及在所述数据集合的大小超过所述阈值大小的情况下选择所述第二模式。
实施例8涉及实施例7,其中,所述阈值大小基于所述数据集合的格式,并且至少两个不同的格式各自与不同的阈值大小相关联。
实施例9涉及实施例7或8,其中,所述阈值大小基于与所述数据集合相关联的处理要求,并且至少两个不同的处理要求各自与不同的阈值大小相关联。
实施例10涉及实施例7~9中的任一项,其中,所述阈值大小基于表示所述数据处理应用程序的操作的历史数据。
实施例11涉及实施例7~10中的任一项,其中,还包括:在所述数据处理应用程序的执行期间确定所述阈值大小。
实施例12涉及实施例11,其中,在所述数据处理应用程序的执行期间确定所述阈值大小包括:在根据所述第一模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,减小所述阈值大小;以及在根据所述第二模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,增大所述阈值大小。
实施例13涉及前述的实施例中的任一项,其中,还包括:确定所述数据集合的大小。
实施例14涉及实施例13,其中,所述数据集合包括文件,以及确定所述数据集合的大小包括确定所述文件的大小。
实施例15涉及实施例13或14,其中,所述数据集合包括数据库中所存储的数据,以及确定所述数据集合的大小包括查询所述数据库。
实施例16涉及前述的实施例中的任一项,其中,与所述数据集合相关联的特征包括与所述数据集合相关联的处理要求。
实施例17涉及实施例16,其中,所述处理要求包括用于处理所述数据集合的容许时间。
实施例18涉及前述的实施例中的任一项,其中,在所述第一模式中,在接收到所述请求之前将所述数据处理应用程序的组件编译成机器码,并且在所述第二模式中,在接收到所述请求之后将所述组件编译成机器码。
实施例19涉及前述的实施例中的任一项,其中,在所述第一模式中,串行执行所述一个或多个运行中的处理,并且在所述第二模式中,并行执行所述一个或多个新处理中的至少部分新处理。
实施例20涉及一种计算机可读介质上所存储的软件,所述软件包括用于使计算***执行以下步骤的指令:接收用以使用数据处理应用程序来处理数据集合的请求;基于与所述数据集合相关联的特征,在以下模式之间进行选择:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理;以及使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
实施例21涉及一种计算***,包括:至少一个处理器,用于:接收用以使用数据处理应用程序来处理数据集合的请求;基于与所述数据集合相关联的特征,在以下模式之间进行选择:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理;以及使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
实施例22涉及一种计算***,包括:用于接收用以使用数据处理应用程序来处理数据集合的请求的部件;用于基于与所述数据集合相关联的特征在以下模式之间进行选择的部件:(1)第一模式,其中在所述第一模式中,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及(2)第二模式,其中在所述第二模式中,启动所述数据处理应用程序的一个或多个新处理;以及用于使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合的部件。
实施例23涉及一种方法,所述方法包括:接收用以使用数据处理应用程序来处理数据集合的请求;基于所述数据集合的大小从所述数据处理应用程序的多个操作模式中识别特定操作模式;以及根据所述特定操作模式来执行所述数据处理应用程序以处理所述数据集合。
实施例24涉及实施例23,其中,识别所述特定操作模式包括选择批处理模式或连续处理模式。实施例25涉及实施例23或24,其中,识别所述特定操作模式包括:在所述数据集合的大小超过阈值大小的情况下,选择所述批处理模式;以及在所述数据集合的大小小于所述阈值大小的情况下,选择所述连续处理模式。
实施例26涉及实施例23~25中的任一项,其中,还包括确定所述数据集合的大小。
实施例27涉及实施例26,其中,所述数据集合包括文件,以及确定所述数据集合的大小包括确定所述文件的大小。
实施例28涉及实施例26或27,其中,所述数据集合包括数据库中所存储的数据,以及确定所述数据集合的大小包括查询所述数据库。
实施例29涉及实施例23~28中的任一项,其中,识别所述特定操作模式包括判断所述数据集合的大小是否超过阈值大小。
实施例30涉及实施例29,其中,所述阈值大小基于所述数据集合的格式或者与所述数据集合相关联的处理要求。
实施例31涉及实施例30,其中,所述处理要求包括用于处理所述数据集合的容许时间。
实施例32涉及实施例29~31中的任一项,其中,还包括:确定所述阈值大小。
实施例33涉及实施例29~32中的任一项,其中,还包括:基于表示所述数据处理应用程序的操作的历史数据来确定所述阈值大小。
实施例34涉及实施例29~33中的任一项,其中,还包括:动态地确定所述阈值大小。
实施例35涉及实施例23~34中的任一项,其中,所述数据处理应用程序包括至少一个计算图。
实施例36涉及实施例35,其中,可以以批处理模式或者连续处理模式来执行所述计算图。
Claims (38)
1.一种用于操作数据处理应用程序的方法,所述方法包括:
接收用以使用所述数据处理应用程序来处理数据集合的请求;
响应于接收到的请求并至少基于所述数据集合的大小,在以下模式之间进行选择:
(1)第一模式,其中在所述第一模式中,至少基于所述数据集合的大小等于或小于阈值大小,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及
(2)第二模式,其中在所述第二模式中,至少基于所述数据集合的大小超过所述阈值大小,启动所述数据处理应用程序的一个或多个新处理;以及
使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
2.根据权利要求1所述的方法,其中,在接收到用以处理所述数据集合的请求之前对所述一个或多个运行中的处理进行编译并加载到存储器中。
3.根据权利要求1或2所述的方法,其中,在接收到用以处理所述数据集合的请求之前,所述一个或多个运行中的处理处于待机模式。
4.根据权利要求1或2所述的方法,其中,还包括:在选择所述第二模式的情况下,对所述数据处理应用程序进行编译并且将编译后的数据处理应用程序加载到存储器中。
5.根据权利要求1或2所述的方法,其中,所述一个或多个新处理包括在接收到用以处理所述数据集合的请求之前未编译或者未加载到存储器中的处理。
6.根据权利要求1或2所述的方法,其中,在所述第一模式和所述第二模式之间进行选择包括:
在所述数据集合的大小等于或小于阈值大小的情况下选择所述第一模式;以及
在所述数据集合的大小超过所述阈值大小的情况下选择所述第二模式。
7.根据权利要求6所述的方法,其中,所述阈值大小基于所述数据集合的格式,并且至少两个不同的格式各自与不同的阈值大小相关联。
8.根据权利要求6所述的方法,其中,所述阈值大小基于与所述数据集合相关联的处理要求,并且至少两个不同的处理要求各自与不同的阈值大小相关联。
9.根据权利要求6所述的方法,其中,所述阈值大小基于表示所述数据处理应用程序的操作的历史数据。
10.根据权利要求6所述的方法,其中,还包括:在所述数据处理应用程序的执行期间确定所述阈值大小。
11.根据权利要求10所述的方法,其中,在所述数据处理应用程序的执行期间确定所述阈值大小包括:
在根据所述第一模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,减小所述阈值大小;以及
在根据所述第二模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,增大所述阈值大小。
12.根据权利要求1或2所述的方法,其中,还包括:确定所述数据集合的大小。
13.根据权利要求12所述的方法,其中,
所述数据集合包括文件,以及
确定所述数据集合的大小包括确定所述文件的大小。
14.根据权利要求12所述的方法,其中,
所述数据集合包括数据库中所存储的数据,以及
确定所述数据集合的大小包括查询所述数据库。
15.根据权利要求1或2所述的方法,其中,选择所述第一模式或所述第二模式包括还基于与所述数据集合相关联的处理要求进行选择。
16.根据权利要求15所述的方法,其中,所述处理要求包括用于处理所述数据集合的容许时间。
17.根据权利要求1或2所述的方法,其中,在所述第一模式中,在接收到所述请求之前将所述数据处理应用程序的组件编译成机器码,以及
在所述第二模式中,在接收到所述请求之后将所述组件编译成机器码。
18.根据权利要求1或2所述的方法,其中,在所述第一模式中,串行执行所述一个或多个运行中的处理,以及
在所述第二模式中,并行执行所述一个或多个新处理中的至少一部分新处理。
19.一种用于操作数据处理应用程序的计算***,包括:
至少一个处理器,用于:
接收用以使用所述数据处理应用程序来处理数据集合的请求;
响应于接收到的请求并至少基于所述数据集合的大小,在以下模式之间进行选择:
(1)第一模式,其中在所述第一模式中,至少基于所述数据集合的大小等于或小于阈值大小,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及
(2)第二模式,其中在所述第二模式中,至少基于所述数据集合的大小超过所述阈值大小,启动所述数据处理应用程序的一个或多个新处理;以及
使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
20.根据权利要求19所述的计算***,其中,在接收到用以处理所述数据集合的请求之前对所述一个或多个运行中的处理进行编译并加载到存储器中。
21.根据权利要求19或20所述的计算***,其中,在接收到用以处理所述数据集合的请求之前,所述一个或多个运行中的处理处于待机模式。
22.根据权利要求19或20所述的计算***,其中,所述处理器被配置为在选择所述第二模式的情况下,编译所述数据处理应用程序并且将编译后的数据处理应用程序加载到存储器中。
23.根据权利要求19或20所述的计算***,其中,所述一个或多个新处理包括在接收到用以处理所述数据集合的请求之前未编译或者未加载到存储器中的处理。
24.根据权利要求19或20所述的计算***,其中,在所述第一模式和所述第二模式之间进行选择包括:
在所述数据集合的大小等于或小于阈值大小的情况下选择所述第一模式;以及
在所述数据集合的大小超过所述阈值大小的情况下选择所述第二模式。
25.根据权利要求24所述的计算***,其中,所述阈值大小基于所述数据集合的格式,并且至少两个不同的格式各自与不同的阈值大小相关联。
26.根据权利要求24所述的计算***,其中,所述阈值大小基于与所述数据集合相关联的处理要求,并且至少两个不同的处理要求各自与不同的阈值大小相关联。
27.根据权利要求24所述的计算***,其中,所述阈值大小基于表示所述数据处理应用程序的操作的历史数据。
28.根据权利要求24所述的计算***,其中,所述处理器被配置为在所述数据处理应用程序的执行期间确定所述阈值大小。
29.根据权利要求28所述的计算***,其中,在所述数据处理应用程序的执行期间确定所述阈值大小包括:
在根据所述第一模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,减小所述阈值大小;以及
在根据所述第二模式所执行的所述数据处理应用程序执行得比参考速率更慢的情况下,增大所述阈值大小。
30.根据权利要求19或20所述的计算***,其中,所述处理器被配置为确定所述数据集合的大小。
31.根据权利要求30所述的计算***,其中,所述数据集合包括文件,以及确定所述数据集合的大小包括确定所述文件的大小。
32.根据权利要求30所述的计算***,其中,所述数据集合包括数据库中所存储的数据,以及确定所述数据集合的大小包括查询所述数据库。
33.根据权利要求19或20所述的计算***,其中,选择所述第一模式或所述第二模式包括还基于与所述数据集合相关联的处理要求进行选择。
34.根据权利要求33所述的计算***,其中,所述处理要求包括用于处理所述数据集合的容许时间。
35.根据权利要求19或20所述的计算***,其中,在所述第一模式中,在接收到所述请求之前将所述数据处理应用程序的组件编译成机器码,以及在所述第二模式中,在接收到所述请求之后将所述组件编译成机器码。
36.根据权利要求19或20所述的计算***,其中,在所述第一模式中,串行执行所述一个或多个运行中的处理,以及在所述第二模式中,并行执行所述一个或多个新处理中的至少一部分新处理。
37.一种用于操作数据处理应用程序的计算***,包括:
用于接收用以使用所述数据处理应用程序来处理数据集合的请求的部件;
用于响应于接收到的请求并至少基于所述数据集合的大小在以下模式之间进行选择的部件:
(1)第一模式,其中在所述第一模式中,至少基于所述数据集合的大小等于或小于阈值大小,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及
(2)第二模式,其中在所述第二模式中,至少基于所述数据集合的大小超过所述阈值大小,启动所述数据处理应用程序的一个或多个新处理;以及
用于使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合的部件。
38.一种存储有计算机程序的计算机可读介质,其中,所述计算机程序包括指令,所述指令用于使计算***进行:
接收用以使用数据处理应用程序来处理数据集合的请求;
响应于接收到的请求并至少基于所述数据集合的大小,在以下模式之间进行选择:
(1)第一模式,其中在所述第一模式中,至少基于所述数据集合的大小等于或小于阈值大小,使用所述数据处理应用程序的一个或多个运行中的处理来处理所述数据集合,以及
(2)第二模式,其中在所述第二模式中,至少基于所述数据集合的大小超过所述阈值大小,启动所述数据处理应用程序的一个或多个新处理;以及
使得根据所选择的模式来执行所述数据处理应用程序以处理所述数据集合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361915805P | 2013-12-13 | 2013-12-13 | |
US61/915,805 | 2013-12-13 | ||
PCT/US2014/070002 WO2015089390A1 (en) | 2013-12-13 | 2014-12-12 | Dynamically determing a mode of a data processing application |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106104468A CN106104468A (zh) | 2016-11-09 |
CN106104468B true CN106104468B (zh) | 2020-03-10 |
Family
ID=52146777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480068323.2A Active CN106104468B (zh) | 2013-12-13 | 2014-12-12 | 动态地确定数据处理应用程序的模式 |
Country Status (8)
Country | Link |
---|---|
US (2) | US10261801B2 (zh) |
EP (1) | EP3080691B1 (zh) |
JP (1) | JP6573612B2 (zh) |
KR (1) | KR102307221B1 (zh) |
CN (1) | CN106104468B (zh) |
AU (1) | AU2014362192B2 (zh) |
CA (1) | CA2931335C (zh) |
WO (1) | WO2015089390A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4375833A3 (en) | 2013-12-05 | 2024-07-31 | AB Initio Technology LLC | Managing interfaces for dataflow graphs composed of sub-graphs |
CA2931335C (en) | 2013-12-13 | 2022-08-23 | Ab Initio Technology Llc | Dynamically determing a mode of a data processing application |
US10686814B2 (en) * | 2015-04-10 | 2020-06-16 | Hewlett Packard Enterprise Development Lp | Network anomaly detection |
US10657134B2 (en) * | 2015-08-05 | 2020-05-19 | Ab Initio Technology Llc | Selecting queries for execution on a stream of real-time data |
US10530666B2 (en) * | 2016-10-28 | 2020-01-07 | Carrier Corporation | Method and system for managing performance indicators for addressing goals of enterprise facility operations management |
US11308119B2 (en) * | 2018-12-03 | 2022-04-19 | International Business Machines Corporation | Replicating large statements with low latency |
JP7298145B2 (ja) * | 2018-12-04 | 2023-06-27 | 富士通株式会社 | 証券取引装置、証券取引方法及び証券取引プログラム |
CN110058903B (zh) * | 2019-04-16 | 2019-12-31 | 深圳市摩天之星企业管理有限公司 | 一种程序接入方法 |
US11527101B1 (en) | 2021-08-11 | 2022-12-13 | Alclear, Llc | Biometric gallery management using wireless identifiers |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103403718A (zh) * | 2011-02-15 | 2013-11-20 | 吉林克斯公司 | 混合语言的模拟 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3560935A (en) * | 1968-03-15 | 1971-02-02 | Burroughs Corp | Interrupt apparatus for a modular data processing system |
US3518413A (en) * | 1968-03-21 | 1970-06-30 | Honeywell Inc | Apparatus for checking the sequencing of a data processing system |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
JPH10228450A (ja) * | 1997-02-13 | 1998-08-25 | Fujitsu Ltd | バッチプロセス管理方法およびクライアント/サーバシステムおよびクライアント/サーバコンピュータ |
US7962622B2 (en) | 2001-08-07 | 2011-06-14 | Motorola Mobility, Inc. | System and method for providing provisioning and upgrade services for a wireless device |
US6934714B2 (en) * | 2002-03-04 | 2005-08-23 | Intelesis Engineering, Inc. | Method and system for identification and maintenance of families of data records |
EP1493086A4 (en) | 2002-03-29 | 2006-09-20 | Good Technology Inc | SYSTEM AND METHOD FOR COMPLETE WIRELESS SYNCHRONIZATION BETWEEN A DATA PROCESSING DEVICE AND A DATA SERVICE |
US8689185B1 (en) * | 2004-01-27 | 2014-04-01 | United Services Automobile Association (Usaa) | System and method for processing electronic data |
US7644050B2 (en) | 2004-12-02 | 2010-01-05 | International Business Machines Corporation | Method and apparatus for annotation-based behavior extensions |
US7716630B2 (en) | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
CA2750479C (en) | 2009-02-13 | 2019-03-12 | Ab Initio Technology Llc | Communicating with data storage systems |
JP2010268150A (ja) | 2009-05-13 | 2010-11-25 | Ntt Docomo Inc | 移動局及び無線通信方法 |
US8301798B2 (en) * | 2009-06-12 | 2012-10-30 | Barclays Captial Inc. | System and method for processing large amounts of transactional data |
CN103069385B (zh) * | 2010-06-15 | 2016-12-28 | 起元技术有限责任公司 | 用于动态加载基于图的计算的***和方法 |
EP2633398B1 (en) | 2010-10-25 | 2020-05-27 | Ab Initio Technology LLC | Managing data set objects in a dataflow graph that represents a computer program |
US8924252B2 (en) | 2012-05-14 | 2014-12-30 | Iqzone, Inc. | Systems and methods for providing timely advertising to portable devices |
WO2014068617A1 (en) * | 2012-10-31 | 2014-05-08 | Hitachi, Ltd. | Storage apparatus and method for controlling storage apparatus |
GB2508433A (en) * | 2012-12-03 | 2014-06-04 | Ibm | Migration of processes in heterogeneous computing environments using emulating and compiling source code on target system |
US8972465B1 (en) * | 2013-03-15 | 2015-03-03 | Emc Corporation | Burst buffer appliance with small file aggregation |
US9792325B2 (en) * | 2013-08-25 | 2017-10-17 | Microsoft Technology Licensing, Llc | Continuous cloud-scale query optimization and processing |
CA2931335C (en) | 2013-12-13 | 2022-08-23 | Ab Initio Technology Llc | Dynamically determing a mode of a data processing application |
-
2014
- 2014-12-12 CA CA2931335A patent/CA2931335C/en active Active
- 2014-12-12 CN CN201480068323.2A patent/CN106104468B/zh active Active
- 2014-12-12 US US14/568,605 patent/US10261801B2/en active Active
- 2014-12-12 AU AU2014362192A patent/AU2014362192B2/en active Active
- 2014-12-12 KR KR1020167018782A patent/KR102307221B1/ko active IP Right Grant
- 2014-12-12 JP JP2016536986A patent/JP6573612B2/ja active Active
- 2014-12-12 WO PCT/US2014/070002 patent/WO2015089390A1/en active Application Filing
- 2014-12-12 EP EP14819238.8A patent/EP3080691B1/en active Active
-
2019
- 2019-04-10 US US16/380,004 patent/US11340910B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103403718A (zh) * | 2011-02-15 | 2013-11-20 | 吉林克斯公司 | 混合语言的模拟 |
Also Published As
Publication number | Publication date |
---|---|
US20200073673A1 (en) | 2020-03-05 |
KR102307221B1 (ko) | 2021-09-29 |
EP3080691B1 (en) | 2021-10-06 |
JP6573612B2 (ja) | 2019-09-11 |
US11340910B2 (en) | 2022-05-24 |
AU2014362192A1 (en) | 2016-06-09 |
CN106104468A (zh) | 2016-11-09 |
US10261801B2 (en) | 2019-04-16 |
KR20160119070A (ko) | 2016-10-12 |
JP2017504106A (ja) | 2017-02-02 |
CA2931335A1 (en) | 2015-06-18 |
WO2015089390A1 (en) | 2015-06-18 |
CA2931335C (en) | 2022-08-23 |
AU2014362192B2 (en) | 2020-01-30 |
EP3080691A1 (en) | 2016-10-19 |
US20150169332A1 (en) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104468B (zh) | 动态地确定数据处理应用程序的模式 | |
US9778967B2 (en) | Sophisticated run-time system for graph processing | |
US10048955B2 (en) | Accelerating software builds | |
US9401835B2 (en) | Data integration on retargetable engines in a networked environment | |
US10366112B2 (en) | Compiling extract, transform, and load job test data cases | |
US11157318B2 (en) | Optimizing timeouts and polling intervals | |
US20160188385A1 (en) | Optimized system for analytics (graphs and sparse matrices) operations | |
US10534581B2 (en) | Application deployment on a host platform based on text tags descriptive of application requirements | |
US11757732B2 (en) | Personalized serverless functions for multitenant cloud computing environment | |
US10268461B2 (en) | Global data flow optimization for machine learning programs | |
US10956133B2 (en) | Static optimization of production code for dynamic profiling | |
US10198291B2 (en) | Runtime piggybacking of concurrent jobs in task-parallel machine learning programs | |
WO2023056793A1 (en) | Optimizing a just-in-time compilation process | |
US11500870B1 (en) | Flexible query execution | |
US20240012678A1 (en) | Queue consolidation and peer-to-peer quantum workload stealing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |