CN106164867B - 数据的增量并行处理 - Google Patents
数据的增量并行处理 Download PDFInfo
- Publication number
- CN106164867B CN106164867B CN201480077823.2A CN201480077823A CN106164867B CN 106164867 B CN106164867 B CN 106164867B CN 201480077823 A CN201480077823 A CN 201480077823A CN 106164867 B CN106164867 B CN 106164867B
- Authority
- CN
- China
- Prior art keywords
- pipeline
- data set
- input data
- executing
- application
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/235—Update request formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
Abstract
一个示例方法包括:识别包括指定要对数据集执行的计算操作的指令的同步代码;将所述同步代码变换成包括一个或多个流水线对象的流水线应用;识别要对其执行所述流水线应用的第一输入数据集;对第一输入数据集执行所述流水线应用以产生第一输出数据集;在对所述第一输入数据集执行所述流水线应用之后,识别要对其执行所述流水线应用的第二输入数据集;确定所述第一输入数据集与所述第二输入数据集之间的差异的集合;以及对所述差异集合执行所述流水线应用以产生第二输出数据集。
Description
背景技术
大规模数据处理可以包括并行处理,其通常涉及同时对大数据集的每个元素执行某个操作。可以在数据并行流水线中将各种操作链在一起,以创建用于对数据集进行处理的高效机制。数据集的产生可能涉及在一组大进化输入上周期性地运行的“批量作业”。随着输入被更新,前一个输出变得越来越陈旧,所以在定期基础上重新运行流水线。
发明内容
本公开涉及在并行处理系统中执行数据的增量处理。
一般而言,本说明书中所描述的主题的一个创新方面能够用包括以下动作的方法加以具体化:识别包括指定要对数据集执行的计算操作的指令的同步代码;将所述同步代码变换成包括一个或多个流水线对象的流水线应用,所述流水线应用被配置成跨越多个计算设备并行执行,所述一个或多个流水线对象中的每一个流水线对象被配置成接收输入数据集并且产生输出数据集;识别要对其执行所述流水线应用的第一输入数据集;对第一输入数据集执行所述流水线应用以产生第一输出数据集,所述执行所述流水线应用包括按照前一个流水线对象将其输出数据集提供给下一个流水线对象作为其输入数据集的次序执行所述一个或多个流水线对象中的每一个流水线对象;在对所述第一输入数据集执行所述流水线应用之后,识别要对其执行所述流水线应用的第二输入数据集;确定所述第一输入数据集与所述第二输入数据集之间的差异的集合;以及对所述差异集合执行所述流水线应用以产生第二输出数据集,所述对差异的集合执行所述流水线应用包括:执行所述一个或多个流水线对象中的每一个流水线对象,包括每一个前一个流水线对象按照将与其前一个输出数据集的差异提供给所述下一个流水线对象作为其输入数据集的次序,并且所述第二输出数据集包括与所述第一输出数据集的差异。这个方面的其它实施例包括被配置成执行在计算机存储设备上编码的方法的动作的对应的系统、装置以及计算机程序。
能够实现本说明书中所描述的主题的特定实施例以便实现以下优点中的一个或多个。每当流水线被重新运行时对完整输入数据集进行再处理可能是浪费的,并且对于大流水线来说,它运行流水线花费的时间量限制它能够被运行有多频繁。然而,通过对第一输入数据集与第二输入数据集之间的差异进行处理,可以减少对后续数据集进行处理所必需的时间量,从而允许流水线更迅速地产生更新的输出数据集。另外,当设计者仅写入并维护同步代码的一个版本时,可以避免维护分离的批量和增量系统的隐患。
该系统能够自动地得到需要考虑到输入中的改变对输出所做的改变。这减少或者消除对流水线的人工维护,这进而也减少成本。还可以减轻与维护流水线的多个版本有关的正确性问题。此外,仅对输入集的改变进行处理可能在输入集尚未显著地改变的情况下导致流水线的后续执行所必需的计算资源的减少。还可以通过仅对输入集的改变进行处理来获得较低的时延。
在下面的附图和描述中阐述本说明书中所描述的主题的一个或多个实施例的细节。主题的其它特征、方面和优点从本说明书、附图和权利要求书将变得显而易见。
附图说明
图1是可能在其中发生增量数据处理的环境的框图。
图2是输入数据集通过流水线实例被并行处理的系统的框图。
图3是流水线以及包括在其中的流水线对象存储状态以用于在增量数据处理中使用的环境的框图。
图4是针对增量数据处理的示例过程的流程图。
图5是示例计算设备的框图。
各个附图中的相同的附图标记和名称指示相同的元件。
具体实施方式
本公开涉及在并行处理系统中执行数据的增量处理。在一些实施方式中,被视为执行计划(作为要应用于记录的某个合集的步骤的系列)的批量流水线被变换成增量执行计划,能够对差异(来自原始合集的添加或去除)的集合执行所述增量执行计划,以产生差异的集合,该差异的集合能够被应用于前一个输出合集以产生与会通过对整个新输入运行原始流水线而产生的合集相等的合集。在一些实施方式中,该系统还检测对输入的改变是什么,并且将输出差异的集合应用于最终输出。
并行处理框架提供用于由多个计算设备并行对大量的数据进行处理的平台。用户可以定义流水线或包括用于对输入数据集进行处理以产生输出数据集的步骤的流水线应用。一个常见的并行处理框架是MapReduce框架,在所述MapReduce框架中分布式计算被划分成用于将输入集划分成较小组的映射步骤,以及用于对这些组中的每一个执行操作的简化步骤。这样的框架通常在批量模式下操作,使得即使自流水线被最后运行以来已添加、改变或者删除了输入数据集中的仅几个值,每当流水线被运行时也必须处理整个输入数据集以产生输出数据集。这可能导致输入的重复处理,并且对于大输入数据集导致高时延。对于某些应用,比能够运行流水线的频率更新的输出数据可能是必要的。在这种情况下,可以构建第二系统以处理这样的增量更新。尤其随着原始流水线演进,这种方法常常增加复杂性和维护开销。能够在单个框架中表达计算并且在批量模式和增量模式两者下运行相同代码将是有利的。
此外,在同步代码中定义操作的两个模式的能力也是所希望的。同步代码包含呈现一系列顺序步骤的编程指令。这与可以作为涉及等待并对输入做出响应的有限状态机、事件处理机、或其它编程概念被实现的“异步”代码相反。通常,同步代码对于人类来说比异步代码更易于编辑和理解,因为可能不可容易地从代码它本身识别异步代码的操作和程序流。
因此,本公开描述了允许在同步代码中定义批量和增量处理操作的并行数据处理框架。一个示例方法包括识别同步代码并且将它变换成包括流水线对象的流水线。然后可以对第一输入数据集执行流水线以产生第一输出数据集。当对第二输入数据集执行流水线时,第一输入数据集与第二输入数据集之间的差异的集合被确定。然后对这些差异执行流水线以产生第二输出数据集。
通过对第一输入数据集与第二输入数据集之间的差异进行处理,可以减少对后续数据集进行处理所必需的时间量,从而允许流水线更迅速地产生更新的输出数据集。另外,当设计者仅写入并维护同步代码的一个集合时,可以避免维护分立的批量和增量系统的隐患。
图1是可能在其中发生增量数据处理的环境100的框图。环境100包括优化器104,优化器104分析包括用于在产生输出数据集112时对输入数据集110进行处理的指令的同步代码102。在操作中,优化器104分析同步代码102以产生可以在不同的计算设备上被并行执行的流水线106。流水线106包括对输入数据集110执行由同步代码102定义的处理步骤的一个或多个流水线对象108a-c。
环境100包括优化器104。如所示,优化器104可操作用于分析同步代码102并且产生流水线106。在一些实施方式中,优化器104可以是可操作用于分析同步代码102并且产生所对应的流水线106以执行由同步代码102定义的数据处理动作的软件程序或软件程序的集合。优化器104也可以是可以由作者导入到同步代码102中并且可以在同步代码102被编译和运行时被执行的软件库。在一些实施方式中,优化器104可以是服务器或服务器的集合,可以诸如通过应用编程接口(API)、经由一个或多个网络协议而通过网络、或者通过其它机制将同步代码102提交给所述服务器或服务器的集合。
在一些实施方式中,优化器104可以确定是否产生流水线,所述流水线在批量模式下操作,使得每当流水线被运行时整个输入数据集110被处理,或者在增量模式下操作,使得仅从最后运行起的输入数据集110中的差异被处理。在一些情况下,可以由用户基于给优化器104的输入做出此确定。还可以由优化器104自动地(诸如通过分析同步代码、输入数据集110或者基于其它分析)做出确定。例如,优化器104可以检验输入数据集110的大小并且确定因为它包含很少的项,所以应该产生批量模式流水线。在另一示例中,优化器104可以检验输入数据集110的大小并且确定集合包含大量的项。优化器104还可以诸如通过与用户的交互来确定要产生的流水线将被经常运行。在这种情况下,优化器104可以确定应该产生增量模式流水线。
同步代码102可以包括用于对输入数据集110进行处理以产生输出数据集112的指令。例如,同步代码102可以包括描述输入数据集如何将被处理的一系列顺序指令。包括在同步代码102中的顺序指令可以是函数调用、过程调用、循环、条件式或其它编程语言指令。同步代码102在它表示一系列顺序步骤的意义上是“同步的”。这与可以作为涉及等待输入并对输入做出响应的有限状态机、事件处理机或其它编程概念被实现的“异步”代码相反。通常,同步代码对于人类来说更易于编辑和理解,因为可能不可容易地从代码它本身识别异步代码的操作和程序流。
在一些实施方式中,同步代码102可以包括根据编程语言(诸如例如JAVA、PYTHON、PERL、C、C++、C#、JAVASCRIPT或其它编程语言或处理语言的组合)而编码的指令。在一些情况下,同步代码102可以被嵌入在较大应用内,使得应用的代码的仅一部分被优化器104优化。
优化器104分析(例如,变换)同步代码102以产生流水线106。在一些实施方式中,流水线106是可操作用于执行同步代码102中所定义的操作的分布式应用。在一些实施方式中,优化器104可以在同步代码102被执行时创建流水线106。优化器104可以跨越一个或多个服务器部署流水线106,并且使流水线106实例化以开始输入数据集110的处理。在一些实施方式中,优化器104可以与部署流水线106以便执行的环境102内的其它组件进行通信。
如所示,流水线106包括一个或多个流水线对象108a-c。在一些实施方式中,流水线对象108a-c各自对应于同步代码102内的指令或指令的集合。优化器104响应于同步代码102中的这样的指令而创建并执行流水线对象108a-c。在一些实施方式中,流水线对象108a-c可以是可以并行在分立的服务器上运行的独立软件程序。可以按照执行次序布置流水线对象108a-c,使得一个流水线对象(例如,108a)的输出可以用作另一流水线对象(例如,108b)的输入。相对于图3更详细地讨论流水线对象108a-c的操作。
在操作中,流水线对象108a-c对输入数据集110执行各种操作或变换以产生输出数据集112。在一些实施方式中,优化器104基于同步代码指令到流水线对象的类型的映射而生成流水线对象108a-c。例如,在同步代码102定义MapReduce操作的情况下,流水线对象108a可以是响应于同步代码102中的map()函数而生成的映射器对象,流水线对象108b可以是响应于同步代码102中的shuffle()函数而生成的洗牌器对象,并且流水线对象108c可以是响应于同步代码102中的reduce()函数而生成的简化器对象。流水线对象108a-c还可以执行其它操作,诸如例如聚合、组合、按密钥分组、平坦化、连接、计数、去除重复项以及其它操作,并且可以响应于同步代码102中的对应功能被生成。
环境100还包括要由流水线106处理的输入数据集110。在一些实施方式中,输入数据集110可以是数据库表、文本或二进制文件、数据流、数据碎片的合集、密钥值对的合集,或另一类型的数据集或各类型的数据集的组合。在一些实施方式中,输入数据集110可以由流水线106诸如通过网络或者作为程序的标准输入接收。输入数据集110也可以由流水线106在启动时或者随着执行进行而递增地请求或者检索。
环境100还包括输出数据集112。在操作中,输出数据集112由流水线106通过对输入数据集110进行处理而产生。输出数据集112表示由同步代码102定义的操作的最终产品。例如,如果同步代码102定义输入集110内的每个字母的发生次数将被计数的操作,则输出数据集112可以包括每个字母的计数的合集。在一些实施方式中,输出数据集可以由流水线106随着操作发生而更新。在一些情况下,可以在流水线106的执行结束时产生输出数据集112。输出数据集112可以是数据的合集,诸如例如数据库表或数据库表的合集、文本文件、密钥值对集合、数据流、或其它类型的数据。
图2是输入数据集通过流水线实例被并行处理的系统200的框图。如所示,系统200包括各自运行流水线实例204a-n的一个或多个服务器202a-n。每个流水线实例204a-n可以是相同的,可以被配置成对输入数据集110的不同部分进行处理。在一些实施方式中,每个流水线实例204a-n可以跨越多个服务器202a-n执行。在一些情况下,可以在不同的服务器上运行包括在每个流水线实例中的流水线对象中的每一个流水线对象。此外,其它组件(诸如对输入数据集110或由流水线实例204a-n产生的中间结果进行操作的分割器和组合器)可以被包括在系统200中。在一些实施方式中,优化器104可以为流水线106确定执行计划,并且可以将流水线实例204a-c部署在服务器202a-n上。优化器104可以基于对输入数据集110、同步代码102、由用户提供的参数或其它因素的分析而确定服务器和要创建的流水线实例的数目以及如何配置这些服务器和流水线实例。
图3是流水线106和流水线对象108a-c存储状态以用于在增量数据处理中使用的环境300的框图。如所示,环境300包括数据储存器302。在操作中,流水线106和流水线对象108a-c分别在数据储存器302中存储流水线状态304和流水线对象状态306。流水线状态304可以将流水线106的总体状态表示为其最后执行的状态。流水线对象状态306可以将单个的流水线对象108a-c的状态表示为流水线106最后执行的状态。通过查阅流水线状态304和流水线对象状态306,流水线106和流水线对象108a-c可以将要处理的数据与来自前一个执行的数据进行处理,以便实现流水线106的增量模式操作。
数据储存器302可以是数据库、文件系统、密钥值储存器、或其它类型的数据储存器。流水线106和流水线对象108a-c可以在执行流水线106期间写入数据储存器302并且从数据储存器302读取。数据储存器302可以是如图3中所示出的中央数据储存器,或者可以是包括多个节点的分布式来历。在一些实施方式中,数据储存器302可以包括与执行流水线106的每个服务器(诸如来自图2的服务器202a-n)关联的存储器。
数据储存器302包括流水线状态304。在一些实施方式中,流水线状态304可以是流水线106的前一个执行的表示。数据储存器302可以存储多个流水线状态304。在一些情况下,流水线106的每个实例可以存储不同的流水线状态304。流水线状态304可以存储针对流水线106的最后执行的输入数据集110的表示。流水线106可以更新流水线状态304以指示用于每个执行的输入数据集110中的改变。例如,流水线106可以针对输入数据集110中的每个项而检查流水线状态304,以确定该项是否在流水线106的最后执行期间被处理了。如果项在最后执行中未被处理,则流水线106可以将新项添加到流水线状态304,并且可以开始在当前执行中对该项进行处理。通过以这种方式检查流水线状态304,流水线106可以避免对在前一个执行期间处理过的项进行处理,并且因此实现增量处理模式。流水线106还可以确定已被从输入数据集110中移除的项,并且从流水线状态304中移除这些项。
在一些实施方式中,流水线状态304可以被作为项集合存储在数据储存器302中。在输入数据集110被存储在相同或类似的数据机存储中的情况下,流水线106可以执行输入数据集110与流水线状态304之间的集合比较以确定两个集合之间的差异。流水线106然后可以对这些差异进行处理以产生输出数据集112。
在一些实施方式中,流水线状态304可以包括针对流水线106的最后执行的输出数据集112的表示。流水线106可以随着来自输入数据集110的新项被处理并且随着从输入数据集110中删除的项被识别而更新输出数据集112的这个表示。流水线106然后可以产生这个更新的输出数据集112作为它针对当前执行的输出。在一些情况下,流水线106可以产生仅新输出(例如,由新输入数据生成的输出)代替全输出数据集112。
数据储存器302还包括流水线对象状态306。在一些情况下,流水线对象状态306中的每一个对应于流水线对象108a-c中的一个。流水线对象状态306可以存储与来自流水线106的前一个执行的单个流水线对象108a-c关联的状态信息。流水线对象108a-c当在增量模式下操作时可以使用这个先前的状态数据。例如,产生在输入数据集110中遇到的不同项的计数的聚合器对象在它被仅呈现有在执行期间对输入数据集110的改变的情况下才可能产生不完整的或错误的结果。通过存储用于前一个执行的输入数据集110中遇到的项计数,聚合器可以在流水线106的执行期间更新这些计数,并且产生指示经修改的输入数据集110的更新的结果。在一些实施方式中,流水线对象状态306可以作为密钥值对被存储,所述密钥值对具有包括在输入数据集110中找到的项的密钥的复合密钥以及与该状态关联的流水线对象的识别符。
图4是针对增量数据处理的示例过程400的流程图。在402处,包括指定要对数据集执行计算操作的指令的同步代码被识别。例如,可以对同步代码执行应用(诸如来自图1的优化器104)。还可以在编译、构建、或解释步骤期间识别同步代码。在一些实施方式中,同步代码可能本身不适合于对输入集的改变进行处理。在这些情况下,可以从对输入集的改变进行操作以产生输出集的对应改变的同步代码得到新流水线。
在404处,同步代码被变换成包括一个或多个流水线对象的流水线应用。在一些实施方式中,变换涉及使新软件对象或程序实例化以实现同步代码(诸如相对于图1所描述的流水线对象108a-c)的步骤。在一些情况下,可以基于输入数据集的大小或其它属性来执行同步代码的变换。例如,同步代码可以针对小输入数据集(例如,能够在单个计算设备上被迅速地处理的输入数据集)被变换成流水线的单个实例,但是可以针对大输入数据集(例如,不能够在单个计算设备上在合理量的时间内被处理的输入数据集)被变换成不同服务器上的多个分布式流水线实例。
在406处,要对其执行流水线应用的第一输入数据集被识别。在一些情况下,第一输入数据集被变换成密钥值对的第一集合并且存储在密钥值储存器中。第一输入数据集可以是数据流、数据库表、文件、或文件的集合,或另一类型的数据集。
在408处,对第一输入数据集执行流水线应用以产生第一输出数据集。在一些情况下,执行流水线应用包括利用包括在流水线应用中的流水线对象对第一输入数据集中的所有项进行处理以产生第一输出数据集。
在410处,要对其执行流水线应用的第二输入数据集在对第一输入数据集执行流水线应用之后被识别。在一些情况下,第二输入数据集可以是具有多个添加的和/或删除的项的第一输入数据集。在412处,第一输入数据集与第二输入数据集之间的差异的集合被确定。在一些实施方式中,确定差异包括将第二输入数据集变换成密钥值对的第二集合、将密钥值对的第二集合与密钥值对的第一集合进行比较、以及识别已相对于密钥值对的第一集合被从密钥值对的第二集合中添加或者删除的密钥值对。确定差异还可以包括确定表示对第一输入数据集执行了流水线的时间的流水线的最后执行时间戳,以及识别包括所述最后执行时间戳之后的时间戳的第二输入数据集中的项集合。在414处,对差异的集合执行流水线应用以产生第二输出数据集。
在一些情况下,过程400包括响应于对第一输入数据集执行流水线而确定流水线状态,该流水线状态包括第一输入数据集和第一输出数据集的表示。可以响应于对与第一输入数据集的差异集合执行流水线而更新流水线状态以生成更新的流水线状态,该更新的流水线状态包括第二输入数据集和第二输出数据集的表示。在一些情况下,可以响应于对第一输入数据集执行流水线而针对一个或多个流水线对象中的每一个确定流水线对象状态,该流水线对象状态包括针对流水线对象的输入数据集和输出数据集的表示。还可以响应于对与第一输入数据集的差异的集合执行流水线而更新流水线对象状态以生成更新的流水线对象状态,该更新的流水线对象状态包括针对流水线对象的输入数据集和输出数据集的差异。
图5是作为客户端或者作为服务器或多个服务器的可以被用来实现此文档中所描述的系统和方法的计算设备500、550的框图。计算设备500旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、主机、以及其它适当的计算机。计算设备550旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话、以及其它类似的计算设备。附加地,计算设备500或550能够包括通用串行总线(USB)闪速驱动器。USB闪速驱动器可以存储操作系统和其它应用。USB闪速驱动器能够包括输入/输出组件,诸如可以被插入到另一计算设备的USB端口中的无线发射器或USB连接器。这里所示出的组件、它们的连接和关系、以及它们的功能意味着仅为示例性的,而不意味着限制此文档中所描述和/或要求保护的发明的实施方式。
计算设备500包括处理器502、存储器504、存储设备506、连接到存储器504和高速扩展端口510的高速接口508、以及连接到低速总线514和存储设备506的低速接口512。组件502、504、506、508、510和512中的每一个使用各种总线来互连,并且可以被安装在公共主板上或者视情况而定以其它方式互连。处理器502能够处理用于在计算设备500内执行的指令,包括存储在存储器504中或在存储设备506上以将GUI的图形信息显示在外部输入/输出设备(诸如耦合到高速接口508的显示器516)上的指令。在其它实施方式中,视情况而定,可以使用多个处理器和/或多个总线以及多个存储器和各种类型的存储器。并且,多个计算设备500可以与提供必要操作的部分的每个设备连接在一起(例如,作为服务器组、一组刀片服务器、或多处理器系统)。
存储器504存储计算设备500内的信息。在一个实施方式中,存储器504是一个或多个易失性存储器单元。在另一实施方式中,存储器504是一个或多个非易失性存储器单元。存储器504还可以是另一形式的计算机可读介质,诸如磁或光盘。
存储设备506能够为计算设备500提供大容量存储。在一个实施方式中,存储设备506可以是或者包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备、或磁带设备、闪速存储器或其它类似的固态存储器设备或这些设备的阵列,包括存储区域网络或其它配置中的设备。计算机程序产品能够用信息载体有形地具体化。计算机程序产品还可以包含当被执行时执行一个或多个方法(诸如上面所描述的那些方法)的指令。信息载体是计算机或机器可读介质,诸如存储器504、存储设备506、或处理器502上的存储器。
高速接口508管理计算设备500的带宽密集操作,而低速接口512管理较低带宽密集操作。功能的这种分配仅是示例性的。在一个实施方式中,高速接口508耦合到存储器504、显示器516(例如,通过图形处理器或加速计),并且耦合到高速扩展端口510,其可以接受各种扩展卡(未示出)。在该实施方式中,低速接口512耦合到存储设备506和低速扩展端口514。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可以耦合到一个或多个输入/输出设备,诸如键盘、指示设备、扫描器,或诸如交换机或路由器的联网设备,例如通过网络适配器。
如该图中所示,可以以许多不同的形式实现计算设备500。例如,它可以作为标准服务器520被实现,或者被实现在一组此类服务器中多次。它还可以被实现为机架服务器系统524的一部分。此外,它可以被实现在诸如膝上型计算机522的个人计算机中。可替选地,来自计算设备500的组件可以与诸如设备550的移动设备(未示出)中的其它组件组合。这些设备中的每一个可以包含计算设备500、550中的一个或多个,并且整个系统可以由彼此通信的多个计算设备500、550组成。
除其它组件之外,计算设备550还包括处理器552、存储器564、诸如显示器554的输入/输出设备、通信接口566以及收发器568。设备550还可以提供有存储设备,诸如微型驱动器或其它设备,以提供附加的存储。组件550、552、564、554、566和568中的每一个使用各种总线来互连,并且这些组件中的数个可以被安装在公共主板上或者视情况而定以其它方式互连。
处理器552能够执行计算设备550内的指令,包括存储在存储器564中的指令。处理器可以作为包括单独的及多个模拟和数字处理器的芯片的芯片集被实现。附加地,可以使用许多架构中的任一个来实现处理器。例如,处理器552可以是CISC(复杂指令集计算机)处理器、RISC(精简指令集计算机)处理器、或MISC(最小指令集计算机)处理器。处理器可以提供例如对设备550的其它组件的协调,诸如对用户接口、由设备550运行的应用、以及通过设备550的无线通信的控制。
处理器552可以通过控制接口558以及耦合到显示器554的显示接口556与用户进行通信。显示器554可以是例如TFT(薄膜晶体管液晶显示)显示器或OLED(有机发光二极管)显示器或其它适当的显示技术。显示接口556可以包括用于驱动显示器554以向用户呈现图形和其它信息的适当电路。控制接口558可以接收来自用户的命令并且对它们进行转换以用于提交给处理器552。此外,外部接口562可以被设置为与处理器552通信,以便使得能实现设备550与其它设备的近区域通信。例如,外部接口562可以在一些实施方式中提供有线通信,或者在其它实施方式中提供无线通信,并且还可以使用多个接口。
存储器564存储计算设备550内的信息。存储器564可以作为计算机可读介质或媒体、一个或多个易失性存储器单元、或一个或多个非易失性存储器单元中的一个或多个被实现。还可以提供扩展存储器574并且通过扩展接口572连接到设备550,所述扩展接口572可以包括例如SIMM(单列直插存储器模块)卡接口。这种扩展存储器574可以为设备550提供额外的存储空间,或者还可以为设备550存储应用或其它信息。具体地,扩展存储器574可以包括用来执行或者补充上面所描述的过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器574可以作为设备550的安全模块被提供,并且可以被编程有许可设备550的安全使用的指令。此外,可以经由SIMM卡与附加信息一起提供安全应用,诸如以不可被黑客破坏的方式将识别信息放置在SIMM卡上。
如在下面所讨论的,存储器564可以包括例如闪速存储器和/或NVRAM存储器。在一个实施方式中,计算机程序产品用信息载体有形地具体化。计算机程序产品包含指令,所述指令当被执行时执行一个或多个方法,诸如上面所描述的那些方法。信息载体是计算机或机器可读介质,诸如存储器564、扩展存储器574,或可以例如通过收发器568或外部接口562接收的处理器552上的存储器。
设备550可以通过通信接口566以无线方式通信,所述通信接口566必要时可以包括数字信号处理电路。通信接口566可以提供在各种模式或协议下的通信,所述各种模式或协议诸如为GSM语音呼叫、SMS、EMS或MMS消息传送、CDMA、TDMA、PDC、WCDMA、CMDA2000、或GPRS等。这种通信可以例如通过射频收发器568发生。此外,短距离通信可以诸如使用蓝牙、WiFi或其它这种收发器(未示出)而发生。此外,GPS(全球定位系统)接收器模块570可以将附加的导航和位置相关无线数据提供给设备550,所述无线数据可以视情况而定被在设备550上运行的应用使用。
设备550还可以使用音频编解码器560听得见地通信,所述音频编解码器560可以从用户接收口语信息并且将其转换为可使用的数字信息。诸如通过例如设备550的头戴式耳机中的扬声器,音频编解码器560可以同样地为用户生成可听声音。这种声音可以包括来自语音电话呼叫的声音,可以包括记录的声音(例如,语音消息、音乐文件等),并且还可以包括由在设备550上操作的应用所生成的声音。
如该图中所示,可以以许多不同的形式实现计算设备550。例如,计算设备550可以作为蜂窝电话580被实现。其还可以作为智能电话582、个人数字助理、或其它类似的移动设备的一部分被实现。
在各种实施方式中,如果现有操作不成功(例如,如果确定未被执行),则不执行“响应于”或者“由于”另一操作(例如,确定或识别)而被执行的操作。被“自动地”执行的操作是在没有用户干预(例如,干预用户输入)的情况下被执行的操作。在此文档中用条件语言描述的特征可以描述为可选的实施方式。在一些示例中,从第一设备向第二设备“传送”包括第一设备将数据放置到网络中以供由第二设备接收,但是可能不包括第二设备接收数据。相反,从第一设备“接收”可以包括从网络接收数据,但是可能不包括第一设备传送数据。
由计算系统“确定”能够包括计算系统请求另一设备执行确定并且将结果供应给计算系统。而且,由计算系统“显示”或者“呈现”能够包括计算系统发送用于使另一设备显示或者呈现所引用的信息的数据。
本说明书中所描述的主题和操作的实施例能够用数字电子电路或用计算机软件、固件或硬件(包括本说明书中所公开的结构及其结构等同物)或者用它们中的一个或多个的组合加以实现。本说明书中所描述的主题的实施例能够作为被编码在计算机存储介质上以用于由数据处理装置执行或者以控制数据处理装置的操作的一个或多个计算机程序(即,计算机程序指令的一个或多个模块)被实现。可替选地或此外,能够将程序指令编码在人工生成的传播信号(例如,被生成来对信息进行编码以便传输到适合的接收器装置以供由数据处理装置执行的机器生成的电、光或电磁信号)上。计算机存储介质可以是或者被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备或者它们中的一个或多个的组合中。而且,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是被编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质还可以是或者被包括在一个或多个单独的物理组件或媒体(例如,多个CD、磁盘或其它存储设备)中。
本说明书中所描述的操作能够作为由数据处理装置对存储在一个或多个计算机可读存储设备上或者从其它源接收的数据所执行的操作被实现。
术语“数据处理装置”包含用于对数据进行处理的所有类型的装置、设备和机器,通过示例包括可编程处理器、计算机、片上系统或多个可编程处理器、计算机、片上系统,或上述的组合。该装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件之外,该装置还能够包括为所述的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境能够实现各种不同的计算模型基础设施,诸如web服务、分布式计算以及网格计算基础设施。
计算机程序(还被称为程序、软件、软件应用、脚本或代码)能够用任何形式的编程语言(包括编译或解释语言、描述性或过程语言)编写,并且它能够被以任何形式(包括作为独立程序或者作为适合于在计算环境中使用的模块、组件、子例行程序、对象或其它单元)部署。计算机程序可以但未必对应于文件系统中的文件。能够在保持其它程序或数据的文件(例如,存储在标记语言文档中的一个或多个脚本)的一部分中、在专用于所述的程序的单个文件中、或者在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中存储程序。能够将计算机程序部署成在一个计算机上或在位于一个站点处或者跨越多个站点分布并通过通信网络互连的多个计算机上执行。
本说明书中所描述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程还能够由专用逻辑电路来执行,并且装置还能够作为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))被实现。
作为示例,适合于执行计算机程序的处理器包括通用和专用微处理器二者以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于依照指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或者在操作上耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘、或光盘)接收数据或者向一个或多个大容量存储设备传送数据或两者。然而,计算机不必具有这些设备。而且,能够将计算机嵌入在另一设备(例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)等)中。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、媒体和存储器设备,作为示例包括:半导体存储器设备,例如,EPROM、EEPROM、和闪速存储器设备;磁盘,例如,内部硬盘或可移除盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路来补充或者并入专用逻辑电路。
为了提供与用户的交互,能够将本说明书中所描述的主题的实施例实现在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示)监视器)以及用户能够用来向计算机提供输入的键盘和指示设备(例如,鼠标或轨迹球)的计算机上。其它类型的设备也能够被用来提供与用户交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且能够以包括声输入、语音输入或触觉输入的任何形式接收来自用户的输入。此外,计算机能够通过向由用户使用的设备发送文档并从由用户使用的设备接收文档(例如,通过响应于从web浏览器接收到的请求而向用户的用户设备上的web浏览器发送网页)来与用户交互。
本说明书中所描述的主题的实施例能够被实现在计算系统中,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户能够用来与本说明中所描述的主题的实施方式交互的图形用户接口或Web浏览器的用户计算机),或一个或多个这种后端组件、中间件组件或前端组件的任何组合。本系统的组件能够通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联的网络(例如,互联网)、以及对等网络(例如,自组织对等网络)。
计算系统能够包括用户和服务器。用户和服务器通常彼此远离并且通常通过通信网络交互。用户和服务器的关系借助于在相应的计算机上运行并且彼此具有用户-服务器关系的计算机程序来产生。在一些实施例中,服务器向用户设备传送数据(例如,HTML页面)(例如,用于向与用户设备交互的用户显示数据并且从与用户设备交互的用户接收用户输入的目的)。能够在服务器处从用户设备接收在该用户设备处生成的数据(例如,用户交互的结果)。
虽然本说明书包含许多特定实施方式细节,但是这些不应该被解释为对任何发明的或可能要求保护的范围构成限制,而是相反被解释为特定于特定发明的特定实施例的特征的描述。还能够在单个实施例中相结合地实现在此说明书中在单独的实施例背景下描述的特定特征。相反地,还能够单独地在多个实施例中或在任何适合的子组合中实现在单个实施例背景下描述的各种特征。而且,尽管特征可以被在上面描述为在特定组合中行动并且同样地甚至最初要求保护,然而来自要求保护的组合的一个或多个特征能够在一些情况下被从组合中删除,并且所要求保护的组合可以涉及子组合或子组合的变化。
类似地,虽然在附图中按特定次序描绘操作,但是这不应该被理解为要求这些操作被以所示出的特定次序或以顺序次序执行,或者要求执行所有图示的操作,以实现所希望的结果。在特定情况下,多任务处理和并行处理可能是有利的。而且,上面所描述的实施例中的各种系统组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解,所描述的程序组件和系统通常能够被一起集成在单个软件产品中或者封装到多个软件产品中。
因此,已经对主题的特定实施例进行了描述。其它实施例在以下权利要求的范围内。在一些情况下,权利要求中所记载的动作能够被以不同的次序执行并且仍然实现所希望的结果。此外,附图中所描绘的过程未必要求所示出的特定次序或顺序次序以实现所希望的结果。在特定实施方式中,多任务处理和并行处理可能是有利的。
Claims (31)
1.一种由一个或多个处理器执行的计算机实现的方法,所述方法包括:
识别包括指令的同步代码,所述指令指定要对数据集执行的计算操作;
将所述同步代码变换成包括一个或多个流水线对象的流水线应用,所述流水线应用被配置成跨越多个计算设备并行执行,所述一个或多个流水线对象中的每一个流水线对象被配置成接收输入数据集并且产生输出数据集;
识别要被执行所述流水线应用的第一输入数据集;
对第一输入数据集执行所述流水线应用以产生第一输出数据集,执行所述流水线应用包括:
按照前一个流水线对象将其输出数据集提供给下一个流水线对象作为其输入数据集的次序执行所述一个或多个流水线对象中的每一个流水线对象;以及
响应于对所述第一输入数据集执行所述流水线而针对所述一个或多个流水线对象中的每一个流水线对象确定流水线对象状态,所述流水线对象状态包括所述流水线对象的所述输入数据集和所述输出数据集的表示;
在对所述第一输入数据集执行所述流水线应用之后,识别要被执行所述流水线应用的第二输入数据集;
确定所述第一输入数据集与所述第二输入数据集之间的差异集合;以及
对所述差异集合执行所述流水线应用以产生第二输出数据集,对所述差异集合执行所述流水线应用包括:
执行所述一个或多个流水线对象中的每一个流水线对象,包括每一个前一个流水线对象按照将与其前一个输出数据集的差异提供给所述下一个流水线对象作为其输入数据集的次序,并且所述第二输出数据集包括与所述第一输出数据集的差异;以及
响应于对与所述第一输入数据集的所述差异集合执行所述流水线而更新所述流水线对象状态,以生成更新的流水线对象状态,所述更新的流水线对象状态包括与所述流水线对象的所述输入数据集和所述输出数据集的差异。
2.根据权利要求1所述的方法,还包括:响应于对所述第一输入数据集执行所述流水线而确定流水线状态,所述流水线状态包括所述第一输入数据集和所述第一输出数据集的表示。
3.根据权利要求2所述的方法,还包括:响应于对与所述第一输入数据集的所述差异集合执行所述流水线而更新所述流水线状态,以生成更新的流水线状态,所述更新的流水线状态包括所述第二输入数据集和所述第二输出数据集的表示。
4.根据权利要求1所述的方法,其中,识别要被执行所述流水线的所述第一输入数据集包括:
将所述第一输入数据集变换成密钥值对的第一集合;以及
将密钥值对的所述第一集合存储在密钥值储存器中。
5.根据权利要求1所述的方法,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
将所述第二输入数据集变换成密钥值对的第二集合;
将密钥值对的所述第二集合与密钥值对的第一集合进行比较;以及
识别相对于密钥值对的所述第一集合已被从密钥值对的所述第二集合中添加或者删除的密钥值对。
6.根据权利要求1所述的方法,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
确定所述流水线的最后执行时间戳,所述最后执行时间戳表示对所述第一输入数据集执行所述流水线的时间;以及
识别包括在所述最后执行时间戳之后的时间戳的所述第二输入数据集中的项集合。
7.一种存储指令的非暂时性计算机可读介质,所述指令在被执行时能够操作用于致使至少一个处理器执行操作,所述操作包括:
识别包括指令的同步代码,所述指令指定要对数据集执行的计算操作;
将所述同步代码变换成包括一个或多个流水线对象的流水线应用,所述流水线应用被配置成跨越多个计算设备并行执行,所述一个或多个流水线对象中的每一个流水线对象被配置成接收输入数据集并且产生输出数据集;
识别要被执行所述流水线应用的第一输入数据集;
对第一输入数据集执行所述流水线应用以产生第一输出数据集,执行所述流水线应用包括:
按照前一个流水线对象将其输出数据集提供给下一个流水线对象作为其输入数据集的次序执行所述一个或多个流水线对象中的每一个流水线对象;以及
响应于对所述第一输入数据集执行所述流水线而针对所述一个或多个流水线对象中的每一个流水线对象确定流水线对象状态,所述流水线对象状态包括所述流水线对象的所述输入数据集和所述输出数据集的表示;
在对所述第一输入数据集执行所述流水线应用之后,识别要被执行所述流水线应用的第二输入数据集;
确定所述第一输入数据集与所述第二输入数据集之间的差异集合;以及
对所述差异集合执行所述流水线应用以产生第二输出数据集,对差异集合执行所述流水线应用包括:
执行所述一个或多个流水线对象中的每一个流水线对象,包括每一个前一个流水线对象按照将与其前一个输出数据集的差异提供给所述下一个流水线对象作为其输入数据集的次序,并且所述第二输出数据集包括与所述第一输出数据集的差异;以及
响应于对与所述第一输入数据集的所述差异集合执行所述流水线而更新所述流水线对象状态,以生成更新的流水线对象状态,所述更新的流水线对象状态包括与所述流水线对象的所述输入数据集和所述输出数据集的差异。
8.根据权利要求7所述的计算机可读介质,所述操作还包括:响应于对所述第一输入数据集执行所述流水线而确定流水线状态,所述流水线状态包括所述第一输入数据集和所述第一输出数据集的表示。
9.根据权利要求8所述的计算机可读介质,所述操作还包括:响应于对与所述第一输入数据集的所述差异集合执行所述流水线而更新所述流水线状态,以生成更新的流水线状态,所述更新的流水线状态包括所述第二输入数据集和所述第二输出数据集的表示。
10.根据权利要求7所述的计算机可读介质,其中,识别要被执行所述流水线的所述第一输入数据集包括:
将所述第一输入数据集变换成密钥值对的第一集合;以及
将密钥值对的所述第一集合存储在密钥值储存器中。
11.根据权利要求7所述的计算机可读介质,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
将所述第二输入数据集变换成密钥值对的第二集合;
将密钥值对的所述第二集合与密钥值对的第一集合进行比较;以及
识别相对于密钥值对的所述第一集合已被从密钥值对的所述第二集合中添加或者删除的密钥值对。
12.根据权利要求7所述的计算机可读介质,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
确定所述流水线的最后执行时间戳,所述最后执行时间戳表示对所述第一输入数据集执行所述流水线的时间;以及
识别包括在所述最后执行时间戳之后的时间戳的所述第二输入数据集中的项集合。
13.一种用于数据的增量并行处理的系统,包括:
存储器,所述存储器用于存储数据;以及
一个或多个处理器,所述一个或多个处理器能够操作用于执行操作,所述操作包括:
识别包括指令的同步代码,所述指令指定要对数据集执行的计算操作;
将所述同步代码变换成包括一个或多个流水线对象的流水线应用,所述流水线应用被配置成跨越多个计算设备并行执行,所述一个或多个流水线对象中的每一个流水线对象被配置成接收输入数据集并且产生输出数据集;
识别要被执行所述流水线应用的第一输入数据集;
对第一输入数据集执行所述流水线应用以产生第一输出数据集,执行所述流水线应用包括:
按照前一个流水线对象将其输出数据集提供给下一个流水线对象作为其输入数据集的次序执行所述一个或多个流水线对象中的每一个流水线对象;以及
响应于对所述第一输入数据集执行所述流水线而针对所述一个或多个流水线对象中的每一个流水线对象确定流水线对象状态,所述流水线对象状态包括所述流水线对象的所述输入数据集和所述输出数据集的表示;
在对所述第一输入数据集执行所述流水线应用之后,识别要被执行所述流水线应用的第二输入数据集;
确定所述第一输入数据集与所述第二输入数据集之间的差异集合;以及
对所述差异集合执行所述流水线应用以产生第二输出数据集,对所述差异集合执行所述流水线应用包括:
执行所述一个或多个流水线对象中的每一个流水线对象,包括每一个前一个流水线对象按照将与其前一个输出数据集的差异提供给所述下一个流水线对象作为其输入数据集的次序,并且所述第二输出数据集包括与所述第一输出数据集的差异;以及
响应于对与所述第一输入数据集的所述差异集合执行所述流水线而更新所述流水线对象状态,以生成更新的流水线对象状态,所述更新的流水线对象状态包括与所述流水线对象的所述输入数据集和所述输出数据集的差异。
14.根据权利要求13所述的系统,所述操作还包括:响应于对所述第一输入数据集执行所述流水线而确定流水线状态,所述流水线状态包括所述第一输入数据集和所述第一输出数据集的表示。
15.根据权利要求14所述的系统,所述操作还包括:响应于对与所述第一输入数据集的所述差异集合执行所述流水线而更新所述流水线状态,以生成更新的流水线状态,所述更新的流水线状态包括所述第二输入数据集和所述第二输出数据集的表示。
16.一种由一个或多个处理器执行的计算机实现的方法,所述方法包括:
识别要被执行流水线应用的第一输入数据集,所述流水线应用包括流水线对象,所述流水线应用被配置成跨越多个计算设备并行执行,所述流水线对象中的每一个流水线对象被配置成接收输入数据集并且产生输出数据集;
对第一输入数据集执行所述流水线应用以产生第一输出数据集,执行所述流水线应用包括:按照使得所述流水线对象中的第一流水线对象提供输出数据作为到所述流水线对象中的第二流水线对象的输入数据的次序执行所述流水线对象中的每一个流水线对象并且包括:
响应于对所述第一输入数据集执行所述流水线应用而针对所述流水线对象中的每一个流水线对象确定流水线对象状态,所述流水线对象状态中的每一个流水线对象状态包括相应流水线对象的相应输入数据集和相应输出数据集的表示;
识别要被执行所述流水线应用的第二输入数据集;
确定所述第一输入数据集与所述第二输入数据集之间的差异集合,其中,所述差异集合指示所述第二输入数据集添加第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除第二项;以及
对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用以产生与所述流水线应用将从对所述第二输入数据集的执行产生的输出数据集相同的第二输出数据集,对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用包括:按照所述流水线对象中的所述第一流水线对象提供第二输出数据作为到所述流水线对象中的所述第二流水线对象的第二输入数据的次序执行所述流水线对象中的每一个流水线对象并且包括:
响应于对在所述第一输入数据集和所述第二输入数据集之间的所述差异集合执行所述流水线应用而更新所述流水线对象状态,以生成所述流水线对象中的每一个流水线对象的更新的流水线状态,所述更新的流水线状态中的每一个包括与相应流水线对象的相应输入数据集和相应输出数据集的差异。
17.根据权利要求16所述的方法,还包括:响应于对所述第一输入数据集执行所述流水线应用而确定流水线状态,所述流水线状态包括所述第一输入数据集和所述第一输出数据集的表示。
18.根据权利要求17所述的方法,还包括:响应于对与所述第一输入数据集的所述差异集合执行所述流水线应用而更新所述流水线状态,以生成更新的流水线状态,所述更新的流水线状态包括所述第二输入数据集和所述第二输出数据集的表示。
19.根据权利要求16所述的方法,其中,对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用以产生与所述流水线应用将从对所述第二输入数据集的执行产生的输出数据集相同的第二输出数据集包括:
从对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用中产生第三输出数据集;以及
将所述第三输出数据集应用于所述第一输出数据集以产生所述第二输出数据集。
20.根据权利要求16所述的方法,其中,识别要被执行所述流水线应用的所述第一输入数据集包括:
将所述第一输入数据集变换成密钥值对的第一集合;以及
将密钥值对的所述第一集合存储在密钥值储存器中。
21.根据权利要求20所述的方法,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
将所述第二输入数据集变换成密钥值对的第二集合;
将密钥值对的所述第二集合与密钥值对的所述第一集合进行比较;以及
识别相对于密钥值对的所述第一集合已被从密钥值对的所述第二集合中添加或者删除的密钥值对。
22.根据权利要求16所述的方法,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
确定所述流水线的最后执行时间戳,所述最后执行时间戳表示对所述第一输入数据集执行所述流水线应用的时间;以及
识别包括在所述最后执行时间戳之后的时间戳的所述第二输入数据集中的项集合。
23.一种用于数据的增量并行处理的系统,包括:
存储器,所述存储器用于存储数据;以及
一个或多个处理器,所述一个或多个处理器能够操作用于执行操作,所述操作包括:
识别要被执行流水线应用的第一输入数据集,所述流水线应用包括流水线对象,所述流水线应用被配置成跨越多个计算设备并行执行,所述流水线对象中的每一个流水线对象被配置成接收输入数据集并且产生输出数据集;
对第一输入数据集执行所述流水线应用以产生第一输出数据集,执行所述流水线应用包括:按照使得所述流水线对象中的第一流水线对象提供输出数据作为到所述流水线对象中的第二流水线对象的输入数据的次序执行所述流水线对象中的每一个流水线对象并且包括:
响应于对所述第一输入数据集执行所述流水线应用而针对所述流水线对象中的每一个流水线对象确定流水线对象状态,所述流水线对象状态中的每一个流水线对象状态包括相应流水线对象的相应输入数据集和相应输出数据集的表示;
识别要被执行所述流水线应用的第二输入数据集;
确定所述第一输入数据集与所述第二输入数据集之间的差异集合,其中,所述差异集合指示所述第二输入数据集添加第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除第二项;以及
对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用以产生与所述流水线应用将从对所述第二输入数据集的执行产生的输出数据集相同的第二输出数据集,对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用包括:按照所述流水线对象中的所述第一流水线对象提供第二输出数据作为到所述流水线对象中的所述第二流水线对象的第二输入数据的次序执行所述流水线对象中的每一个流水线对象并且包括:
响应于对在所述第一输入数据集和所述第二输入数据集之间的所述差异集合执行所述流水线应用而更新所述流水线对象状态,以生成所述流水线对象中的每一个流水线对象的更新的流水线状态,所述更新的流水线状态中的每一个包括与相应流水线对象的相应输入数据集和相应输出数据集的差异。
24.根据权利要求23所述的系统,所述操作还包括:响应于对所述第一输入数据集执行所述流水线应用而确定流水线状态,所述流水线状态包括所述第一输入数据集和所述第一输出数据集的表示。
25.根据权利要求24所述的系统,所述操作还包括:响应于对与所述第一输入数据集的所述差异集合执行所述流水线应用而更新所述流水线状态,以生成更新的流水线状态,所述更新的流水线状态包括所述第二输入数据集和所述第二输出数据集的表示。
26.根据权利要求23所述的系统,其中,识别要被执行所述流水线应用的所述第一输入数据集包括:
将所述第一输入数据集变换成密钥值对的第一集合;以及
将密钥值对的所述第一集合存储在密钥值储存器中。
27.根据权利要求26所述的系统,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
将所述第二输入数据集变换成密钥值对的第二集合;
将密钥值对的所述第二集合与密钥值对的所述第一集合进行比较;以及
识别相对于密钥值对的所述第一集合已被从密钥值对的第二集合中添加或者删除的密钥值对。
28.根据权利要求23所述的系统,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
确定所述流水线的最后执行时间戳,所述最后执行时间戳表示对所述第一输入数据集执行所述流水线应用的时间;以及
识别包括在所述最后执行时间戳之后的时间戳的所述第二输入数据集中的项集合。
29.一种存储指令的非暂时性计算机可读介质,所述指令能够操作用于在被执行时使得至少一个处理器执行操作,所述操作包括:
识别要被执行流水线应用的第一输入数据集,所述流水线应用包括流水线对象,所述流水线应用被配置成跨越多个计算设备并行执行,所述流水线对象中的每一个流水线对象被配置成接收输入数据集并且产生输出数据集;
对第一输入数据集执行所述流水线应用以产生第一输出数据集,执行所述流水线应用包括:按照使得所述流水线对象中的第一流水线对象提供输出数据作为到所述流水线对象中的第二流水线对象的输入数据的次序执行所述流水线对象中的每一个流水线对象并且包括:
响应于对所述第一输入数据集执行所述流水线应用而针对所述流水线对象中的每一个流水线对象确定流水线对象状态,所述流水线对象状态中的每一个流水线对象状态包括相应流水线对象的相应输入数据集和相应输出数据集的表示;
识别要被执行所述流水线应用的第二输入数据集;
确定所述第一输入数据集与所述第二输入数据集之间的差异集合,其中,所述差异集合指示所述第二输入数据集添加第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除第二项;以及
对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用以产生与所述流水线应用将从对所述第二输入数据集的执行产生的输出数据集相同的第二输出数据集,对指示所述第二输入数据集添加所述第一项到所述第一输入数据集中的项并且从所述第一输入数据集中的项移除所述第二项的所述差异集合执行所述流水线应用包括:按照所述流水线对象中的所述第一流水线对象提供第二输出数据作为到所述流水线对象中的所述第二流水线对象的第二输入数据的次序执行所述流水线对象中的每一个流水线对象并且包括:
响应于对在所述第一输入数据集和所述第二输入数据集之间的所述差异集合执行所述流水线应用而更新所述流水线对象状态,以生成所述流水线对象中的每一个流水线对象的更新的流水线状态,所述更新的流水线状态中的每一个包括与相应流水线对象的相应输入数据集和相应输出数据集的差异。
30.根据权利要求29所述的计算机可读介质,所述操作还包括:响应于对所述第一输入数据集执行所述流水线应用而确定流水线状态,所述流水线状态包括所述第一输入数据集和所述第一输出数据集的表示。
31.根据权利要求29所述的计算机可读介质,其中,确定所述第一输入数据集与所述第二输入数据集之间的所述差异集合包括:
确定所述流水线的最后执行时间戳,所述最后执行时间戳表示对所述第一输入数据集执行所述流水线应用的时间;以及
识别包括在所述最后执行时间戳之后的时间戳的所述第二输入数据集中的项集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911285893.8A CN111158693B (zh) | 2014-04-01 | 2014-08-01 | 数据的增量并行处理 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/231,983 | 2014-04-01 | ||
US14/231,983 US9268597B2 (en) | 2014-04-01 | 2014-04-01 | Incremental parallel processing of data |
PCT/US2014/049496 WO2015152960A1 (en) | 2014-04-01 | 2014-08-01 | Incremental parallel processing of data |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911285893.8A Division CN111158693B (zh) | 2014-04-01 | 2014-08-01 | 数据的增量并行处理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106164867A CN106164867A (zh) | 2016-11-23 |
CN106164867B true CN106164867B (zh) | 2020-01-14 |
Family
ID=51355684
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480077823.2A Active CN106164867B (zh) | 2014-04-01 | 2014-08-01 | 数据的增量并行处理 |
CN201911285893.8A Active CN111158693B (zh) | 2014-04-01 | 2014-08-01 | 数据的增量并行处理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911285893.8A Active CN111158693B (zh) | 2014-04-01 | 2014-08-01 | 数据的增量并行处理 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9268597B2 (zh) |
EP (1) | EP3126974A1 (zh) |
CN (2) | CN106164867B (zh) |
WO (1) | WO2015152960A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158693B (zh) * | 2014-04-01 | 2023-11-14 | 谷歌有限责任公司 | 数据的增量并行处理 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489225B2 (en) * | 2014-01-15 | 2016-11-08 | Cisco Technology, Inc. | Allocating resources for multi-phase, distributed computing jobs |
US9813381B2 (en) * | 2014-06-18 | 2017-11-07 | Open Text Sa Ulc | Flexible and secure transformation of data using stream pipes |
US9881352B2 (en) * | 2015-11-13 | 2018-01-30 | Intel Corporation | Facilitating efficient graphics commands processing for bundled states at computing devices |
US10055200B1 (en) | 2016-03-29 | 2018-08-21 | EMC IP Holding Company LLC | Creation and use of development packages |
US9965377B1 (en) * | 2016-03-29 | 2018-05-08 | EMC IP Holding Company LLC | Deploy pipeline for development packages |
US10168705B2 (en) * | 2017-04-06 | 2019-01-01 | Uber Technologies, Inc. | Automatic tuning of autonomous vehicle cost functions based on human driving data |
US10769126B1 (en) * | 2017-09-22 | 2020-09-08 | Amazon Technologies, Inc. | Data entropy reduction across stream shard |
GB2572664B (en) * | 2018-04-05 | 2020-07-08 | Imagination Tech Ltd | Verification of hardware design for data transformation pipeline |
CN110502673A (zh) * | 2019-06-12 | 2019-11-26 | 广州虎牙科技有限公司 | 数据处理方法、服务器、以及具有存储功能的装置 |
CN114270956A (zh) * | 2019-08-23 | 2022-04-01 | 北京希姆计算科技有限公司 | 同步电路和同步芯片 |
WO2021100122A1 (ja) * | 2019-11-19 | 2021-05-27 | 三菱電機株式会社 | 設計支援システムおよび設計支援プログラム |
US11379419B2 (en) * | 2019-11-29 | 2022-07-05 | Sap Se | Autonomous intelligent data pipeline comparator |
US20230071278A1 (en) * | 2021-09-03 | 2023-03-09 | International Business Machines Corporation | Using a machine learning module to determine a group of execution paths of program code and a computational resource allocation to use to execute the group of execution paths |
US11907205B1 (en) * | 2023-01-23 | 2024-02-20 | Intuit, Inc. | Generic parity solution for highly dynamic sources |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1875590A (zh) * | 2003-09-09 | 2006-12-06 | 高通股份有限公司 | Mimo通信系统中对于多个并行信道的增量冗余传输 |
CN103092840A (zh) * | 2011-10-28 | 2013-05-08 | 上海邮电设计咨询研究院有限公司 | 多源自增海量数据文件实时采集方法 |
Family Cites Families (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615349A (en) * | 1990-09-04 | 1997-03-25 | Mitsubishi Denki Kabushiki Kaisha | Data processing system capable of execution of plural instructions in parallel |
US5197140A (en) * | 1989-11-17 | 1993-03-23 | Texas Instruments Incorporated | Sliced addressing multi-processor and method of operation |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US5522083A (en) * | 1989-11-17 | 1996-05-28 | Texas Instruments Incorporated | Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors |
US6948050B1 (en) * | 1989-11-17 | 2005-09-20 | Texas Instruments Incorporated | Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware |
US5239654A (en) * | 1989-11-17 | 1993-08-24 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
US6070003A (en) * | 1989-11-17 | 2000-05-30 | Texas Instruments Incorporated | System and method of memory access in apparatus having plural processors and plural memories |
EP0607988B1 (en) * | 1993-01-22 | 1999-10-13 | Matsushita Electric Industrial Co., Ltd. | Program controlled processor |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5530804A (en) * | 1994-05-16 | 1996-06-25 | Motorola, Inc. | Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes |
US5991308A (en) * | 1995-08-25 | 1999-11-23 | Terayon Communication Systems, Inc. | Lower overhead method for data transmission using ATM and SCDMA over hybrid fiber coax cable plant |
US5784636A (en) * | 1996-05-28 | 1998-07-21 | National Semiconductor Corporation | Reconfigurable computer architecture for use in signal processing applications |
US6018756A (en) * | 1998-03-13 | 2000-01-25 | Digital Equipment Corporation | Reduced-latency floating-point pipeline using normalization shifts of both operands |
US6377956B1 (en) * | 1999-02-22 | 2002-04-23 | Siemens Corporate Research, Inc. | Automatically configuring product manual by binding document objects in logical structure to proper versions of component documents in a document database |
US7058793B1 (en) * | 1999-12-20 | 2006-06-06 | Unisys Corporation | Pipeline controller for providing independent execution between the preliminary and advanced stages of a synchronous pipeline |
US7036106B1 (en) * | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6907436B2 (en) * | 2000-10-27 | 2005-06-14 | Arizona Board Of Regents, Acting For And On Behalf Of Arizona State University | Method for classifying data using clustering and classification algorithm supervised |
EP1205840B1 (en) * | 2000-11-08 | 2010-07-14 | Altera Corporation | Stall control in a processor with multiple pipelines |
US7050419B2 (en) * | 2001-02-23 | 2006-05-23 | Terayon Communicaion Systems, Inc. | Head end receiver for digital data delivery systems using mixed mode SCDMA and TDMA multiplexing |
EP1377841B1 (en) * | 2001-03-20 | 2005-06-08 | Nptest, Inc. | Low-jitter clock for test system |
US7278137B1 (en) * | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
JP3847672B2 (ja) * | 2002-07-03 | 2006-11-22 | 松下電器産業株式会社 | コンパイラ装置及びコンパイル方法 |
US6941541B2 (en) * | 2002-07-19 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Efficient pipelining of synthesized synchronous circuits |
US20040158730A1 (en) * | 2003-02-11 | 2004-08-12 | International Business Machines Corporation | Running anti-virus software on a network attached storage device |
US20040230934A1 (en) * | 2003-05-15 | 2004-11-18 | Taylor Richard David | System and method for emulating systems with multiple field programmable gate arrays |
US20050102271A1 (en) * | 2003-08-01 | 2005-05-12 | Gavin Robertson | Indexes with embedded data |
US7290159B2 (en) * | 2004-05-25 | 2007-10-30 | International Business Machines Corporation | Fixed latency data computation and chip crossing circuits and methods for synchronous input to output protocol translator supporting multiple reference oscillator frequencies |
US7664819B2 (en) * | 2004-06-29 | 2010-02-16 | Microsoft Corporation | Incremental anti-spam lookup and update service |
US7503038B2 (en) * | 2004-08-27 | 2009-03-10 | Microsoft Corporation | System and method for seamlessly comparing objects |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US9665970B2 (en) * | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US7895151B2 (en) * | 2008-06-23 | 2011-02-22 | Teradata Us, Inc. | Fast bulk loading and incremental loading of data into a database |
US8146099B2 (en) * | 2007-09-27 | 2012-03-27 | Microsoft Corporation | Service-oriented pipeline based architecture |
US20090105993A1 (en) * | 2007-10-22 | 2009-04-23 | Advantest Corporation | Histogram generation with multiple increment read-modify-write cycles |
US9268746B2 (en) * | 2008-03-07 | 2016-02-23 | St Ericsson Sa | Architecture for vector memory array transposition using a block transposition accelerator |
EP2106112A1 (en) * | 2008-03-25 | 2009-09-30 | British Telecommunications Public Limited Company | Feature-based service configuration |
WO2009134772A2 (en) * | 2008-04-29 | 2009-11-05 | Maxiscale, Inc | Peer-to-peer redundant file server system and methods |
US8301593B2 (en) * | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US7747742B2 (en) * | 2008-06-27 | 2010-06-29 | Microsoft Corporation | Online predicate checking for distributed systems |
US8368705B2 (en) * | 2008-07-16 | 2013-02-05 | Google Inc. | Web-based graphics rendering system |
JP5395383B2 (ja) * | 2008-08-21 | 2014-01-22 | 株式会社東芝 | パイプライン演算プロセッサを備える制御システム |
US9703678B2 (en) * | 2008-12-23 | 2017-07-11 | Microsoft Technology Licensing, Llc | Debugging pipeline for debugging code |
US8849790B2 (en) * | 2008-12-24 | 2014-09-30 | Yahoo! Inc. | Rapid iterative development of classifiers |
US8209664B2 (en) * | 2009-03-18 | 2012-06-26 | Microsoft Corporation | High level programming extensions for distributed data parallel processing |
US9081928B2 (en) * | 2009-06-02 | 2015-07-14 | Vector Fabrics, B.V. | Embedded system development |
JP4886838B2 (ja) * | 2009-10-30 | 2012-02-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 並列化方法、システム、及びプログラム |
KR101285078B1 (ko) * | 2009-12-17 | 2013-07-17 | 한국전자통신연구원 | 스트림 데이터에 대한 점진적인 맵리듀스 기반 분산 병렬 처리 시스템 및 방법 |
US9824108B2 (en) * | 2010-04-19 | 2017-11-21 | Salesforce.Com, Inc. | Methods and systems for performing transparent object migration across storage tiers |
US8555265B2 (en) * | 2010-05-04 | 2013-10-08 | Google Inc. | Parallel processing of data |
US20120016901A1 (en) * | 2010-05-18 | 2012-01-19 | Google Inc. | Data Storage and Processing Service |
US8442863B2 (en) * | 2010-06-17 | 2013-05-14 | Microsoft Corporation | Real-time-ready behavioral targeting in a large-scale advertisement system |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US20120311117A1 (en) * | 2011-06-01 | 2012-12-06 | Morgan Stanley | Object Pipeline-Based Virtual Infrastructure Management |
US8856047B2 (en) * | 2011-06-21 | 2014-10-07 | Microsoft Corporation | Fast personalized page rank on map reduce |
US9594804B2 (en) * | 2011-08-26 | 2017-03-14 | Hewlett Packard Enterprise Development Lp | Dynamic reordering of operations in a query plan |
WO2013074665A1 (en) * | 2011-11-14 | 2013-05-23 | Google Inc. | Data processing service |
AU2012340429B2 (en) * | 2011-11-15 | 2016-12-01 | Ab Initio Technology Llc | Data clustering based on candidate queries |
US9817860B2 (en) * | 2011-12-13 | 2017-11-14 | Microsoft Technology Licensing, Llc | Generation and application of correctness-enforced executable filters |
US8645399B2 (en) * | 2012-01-03 | 2014-02-04 | Intelius Inc. | Dynamic record blocking |
US9501550B2 (en) * | 2012-04-18 | 2016-11-22 | Renmin University Of China | OLAP query processing method oriented to database and HADOOP hybrid platform |
US9165035B2 (en) * | 2012-05-10 | 2015-10-20 | Microsoft Technology Licensing, Llc | Differential dataflow |
US20130318092A1 (en) * | 2012-05-25 | 2013-11-28 | The Board of Trustees for the Leland Stanford, Junior, University | Method and System for Efficient Large-Scale Social Search |
US9235446B2 (en) * | 2012-06-22 | 2016-01-12 | Microsoft Technology Licensing, Llc | Parallel computing execution plan optimization |
US9052971B2 (en) * | 2012-07-12 | 2015-06-09 | International Business Machines Corporation | Scalable event-driven system |
US9201638B2 (en) * | 2012-08-07 | 2015-12-01 | Nec Laboratories America, Inc. | Compiler-guided software accelerator for iterative HADOOP® jobs |
US9424271B2 (en) * | 2012-08-30 | 2016-08-23 | International Business Machines Corporation | Atomic incremental load for map-reduce systems on append-only file systems |
CA2923979C (en) * | 2012-09-14 | 2023-06-20 | Interaxon Inc. | Systems and methods for collecting, analyzing, and sharing bio-signal and non-bio-signal data |
US9411558B2 (en) * | 2012-10-20 | 2016-08-09 | Luke Hutchison | Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing |
US9832068B2 (en) * | 2012-12-17 | 2017-11-28 | Microsoft Technology Licensing, Llc | Reachability-based coordination for cyclic dataflow |
US9588822B1 (en) * | 2012-12-18 | 2017-03-07 | Amazon Technologies, Inc. | Scheduler for data pipeline |
US9183016B2 (en) * | 2013-02-27 | 2015-11-10 | Vmware, Inc. | Adaptive task scheduling of Hadoop in a virtualized environment |
US10566080B2 (en) * | 2013-03-14 | 2020-02-18 | Cerner Innovation, Inc. | Expression of clinical logic with positive and negative explainability |
US10083200B2 (en) * | 2013-03-14 | 2018-09-25 | Cavium, Inc. | Batch incremental update |
WO2014143018A1 (en) * | 2013-03-15 | 2014-09-18 | Yahoo! Inc. | Efficient and fault-tolerant distributed algorithm for learning latent factor models through matrix factorization |
US9063710B2 (en) * | 2013-06-21 | 2015-06-23 | Sap Se | Parallel programming of in memory database utilizing extensible skeletons |
US20150066383A1 (en) * | 2013-09-03 | 2015-03-05 | Seven Bridges Genomics Inc. | Collapsible modular genomic pipeline |
US9633041B2 (en) * | 2013-09-26 | 2017-04-25 | Taiwan Semiconductor Manufacturing Co., Ltd. | File block placement in a distributed file system network |
US10326824B2 (en) * | 2013-12-17 | 2019-06-18 | Excalibur Ip, Llc | Method and system for iterative pipeline |
US9612912B2 (en) * | 2014-03-10 | 2017-04-04 | Oracle International Corporation | Centralized tape management for databases |
US9268597B2 (en) * | 2014-04-01 | 2016-02-23 | Google Inc. | Incremental parallel processing of data |
-
2014
- 2014-04-01 US US14/231,983 patent/US9268597B2/en active Active
- 2014-08-01 WO PCT/US2014/049496 patent/WO2015152960A1/en active Application Filing
- 2014-08-01 CN CN201480077823.2A patent/CN106164867B/zh active Active
- 2014-08-01 CN CN201911285893.8A patent/CN111158693B/zh active Active
- 2014-08-01 EP EP14752529.9A patent/EP3126974A1/en not_active Withdrawn
-
2016
- 2016-01-07 US US14/989,867 patent/US10025620B2/en active Active
-
2018
- 2018-07-09 US US16/030,183 patent/US10628212B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1875590A (zh) * | 2003-09-09 | 2006-12-06 | 高通股份有限公司 | Mimo通信系统中对于多个并行信道的增量冗余传输 |
CN103092840A (zh) * | 2011-10-28 | 2013-05-08 | 上海邮电设计咨询研究院有限公司 | 多源自增海量数据文件实时采集方法 |
Non-Patent Citations (7)
Title |
---|
Composable Incremental and Iterative Data-Parallel Computation with Naiad;Frank Mcsherry et al;《http://research.microsoft.com/pubs/174076/naiad.pdf》;20121009;1-20 * |
Hourglass: A library for incremental processing on Hadoop;Matthew Hayes et al;《2013 IEEE International Conference on Big Data》;20131009;742-752 * |
IncMR:Incremental Data Processing based on MapReduce;Cairong Yan et al;《Proceedings of the 2012 IEEE Fifth International Conference on Cloud Computing》;20120629;534-541 * |
Incoop:MapReduce for Incremental Computations;Pramod Bhatotia et al;《 Proceedings of the 2nd ACM Symposium on Cloud Computing》;20111028;1-14 * |
MapReduce: Incremental Iterative MapReduce;Yanfeng Zhang et al;《Proceedings of the 2nd International Workshop on Cloud Intelligence》;20130826;全文 * |
SASH: Enabling continuous incremental analytic workflows on Hadoop;Manish Sethi et al;《Proceedings of the 2013 IEEE International Conference on Data Engineering》;20130412;1219-1230 * |
Thomas Jörg et al.Incremental Recomputations in MapReduce.《Proceedings of the third international workshop on Cloud data management》.2011, * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158693B (zh) * | 2014-04-01 | 2023-11-14 | 谷歌有限责任公司 | 数据的增量并行处理 |
Also Published As
Publication number | Publication date |
---|---|
US20160117188A1 (en) | 2016-04-28 |
WO2015152960A1 (en) | 2015-10-08 |
CN106164867A (zh) | 2016-11-23 |
US10025620B2 (en) | 2018-07-17 |
EP3126974A1 (en) | 2017-02-08 |
US20150277965A1 (en) | 2015-10-01 |
US20180314545A1 (en) | 2018-11-01 |
US10628212B2 (en) | 2020-04-21 |
CN111158693B (zh) | 2023-11-14 |
US9268597B2 (en) | 2016-02-23 |
CN111158693A (zh) | 2020-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106164867B (zh) | 数据的增量并行处理 | |
US9495207B1 (en) | Cataloging data sets for reuse in pipeline applications | |
CN106663028B (zh) | 动态碎片分配调整 | |
US8984516B2 (en) | System and method for shared execution of mixed data flows | |
US20170124464A1 (en) | Rapid predictive analysis of very large data sets using the distributed computational graph | |
CN105793822B (zh) | 动态混洗重新配置 | |
EP4016398A1 (en) | Apparatus and method for distributed training model, and computer program product | |
US11687527B2 (en) | System and method for analysis of graph databases using intelligent reasoning systems | |
US20220014555A1 (en) | Distributed automated planning and execution platform for designing and running complex processes | |
US20170357428A1 (en) | Identifying and surfacing relevant report artifacts in documents | |
CN107194490B (zh) | 预测建模优化 | |
US20160055207A1 (en) | Processing Multi-Way Theta Join Queries Involving Arithmetic Operators on Mapreduce | |
WO2024040844A1 (zh) | 模型调试方法、装置、电子设备及存储介质 | |
US20170371726A1 (en) | Rapid predictive analysis of very large data sets using an actor-driven distributed computational graph | |
CN114385829A (zh) | 知识图谱创建方法、装置、设备以及存储介质 | |
CN113722037A (zh) | 一种用户界面的刷新方法、装置、电子设备及存储介质 | |
Meddah et al. | Parallel and Distributed Pattern Mining | |
CN112632293B (zh) | 行业图谱的构建方法、装置、电子设备及存储介质 | |
WO2018227015A2 (en) | Rapid predictive analysis of very large data sets using an actor-driven distributed computational graph | |
US20210224126A1 (en) | Generation and usage of a task-based programming platform | |
WO2023165059A1 (zh) | 计分板实现方法、装置、计分板、电子设备及存储介质 | |
CN113778392A (zh) | 基于配置实现流式开发的方法和装置 | |
CN104268014A (zh) | 一种基于申威平台的高性能计算作业管理实现方法 | |
CN116383284A (zh) | 数据接入方法、装置、设备及存储介质 | |
CN116187014A (zh) | 基于异构的参数模板生成方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1230749 Country of ref document: HK |
|
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |