Spark基础(四)SparkSteaming
从批处理到流处理
批处理
在批处理中,新到达的数据元素被收集到一个组中。整个组在未来的时间进行处理(作为批处理,因此称为“批处理”)。确切地说,何时处理每个组可以用多种方式来确定 - 例如,它可以基于预定的时间间隔(例如,每五分钟,处理任何新的数据已被收集)或在某些触发的条件下(例如,处理只要它包含五个数据元素或一旦它拥有超过1MB的数据)。
流处理
在流处理中,每一条新数据都会在到达时进行处理。与批处理不同,在下一批处理间隔之前不会等待,数据将作为单独的碎片进行处理, 而不是一次处理批量。
批处理和流处理之间差异的含义
尽管流处理和批处理(特别是微批处理)之间的差异似乎只是时间差异很小的问题,但它们实际上对数据处理系统的体系结构和使用它们的应用程序都有着根本的影响。
流处理系统的设计是为了在数据到达时对其进行响应。这就要求它们实现一个由事件驱动的体系结构, 即系统的内部工作流设计为在接收到数据后立即连续监视新数据和调度处理。另一方面, 批处理系统中的内部工作流只定期检查新数据, 并且只在下一个批处理窗口发生时处理该数据。
流处理和批处理之间的差异对于应用程序来说也是非常重要的。为批处理而构建的应用程序,通过定义处理数据,具有延迟性。在具有多个步骤的数据管道中,这些延迟会累积。此外,新数据的到达与该数据的处理之间的延迟将取决于直到下一批处理窗口的时间–从在某些情况下完全没有时间到批处理窗口之间的全部时间不等,这些数据